EXCESS RELEASE OF FONT

User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

EXCESS RELEASE OF FONT

Post by mastintin »

En un log del programa aparece esto :

19-01-2015 17:06:08: EXCESS RELEASE OF FONT Verdana[ hFont : 0] ( nCount : 0 )
<-TFONT:END(246) <-TCONTROL:DESTROY(2298) <-TGET:DESTROY(766) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1733) <-TGET:HANDLEEVENT(575) <-_FWH(3464) <-SENDMESSAGE(0) <-(b)TWINDOW(573)
------------------------------------------------------------

con la ultima versión de fwh ( 15.01 ) . ¿ Es un problema de la clase Tcontrol ? . Gracias.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

Manuel, como se ha comentado en el foro este tipo de asignaciones suelen producir esta situacion

local oFontDlg:=oFont
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

Pues no tengo ninguna asignacion similar en el programa .
Ademas, por si sirve de guia para encontrar el problema , al principio del programa tengo un dialogo para pass que da el error nada mas cerrarlo . si quito al final de este dialogo el ofont:end() el error deja de salir en ese punto ...
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: EXCESS RELEASE OF FONT

Post by karinha »

João Santos - São Paulo - Brasil
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

mastintin wrote:Pues no tengo ninguna asignacion similar en el programa .
Ademas, por si sirve de guia para encontrar el problema , al principio del programa tengo un dialogo para pass que da el error nada mas cerrarlo . si quito al final de este dialogo el ofont:end() el error deja de salir en ese punto ...
Entonces debe ser el problema que comentas en tu primer post, voy a mirar a ver si encuentro algo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

entonces supongamos este codigo ... como se codifica ahora ...
Supongamos un nuevo control...

oNuevo: new( ofontText, ofontTitulo )


IF oFontText == NIL
DEFINE FONT oFontText NAME "DEFAULT_GUI_FONT" SIZE 0,-12
ENDIF

IF oFontTitulo == NIL
DEFINE FONT oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16
ENDIF


::oFontTexto:= oFontTexto
::oFontTitulo:= oFontTitulo
......

Tenemos que tener en cuenta que si :
::oFontTexto:setfont(ofontTexto)
esto dará error ya que ::ofonttexto de momento no es nada y no tiene por tanto el methodo setfont()
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

mastintin wrote:entonces supongamos este codigo ... como se codifica ahora ...
Supongamos un nuevo control...

oNuevo: new( ofontText, ofontTitulo )


IF oFontText == NIL
DEFINE FONT oFontText NAME "DEFAULT_GUI_FONT" SIZE 0,-12
ENDIF

IF oFontTitulo == NIL
DEFINE FONT oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16
ENDIF


::oFontTexto:= oFontTexto
::oFontTitulo:= oFontTitulo
......

Tenemos que tener en cuenta que si :
::oFontTexto:setfont(ofontTexto)
esto dará error ya que ::ofonttexto de momento no es nada y no tiene por tanto el methodo setfont()
No se si te he entendido, pero yo lo haria asi

Code: Select all

// En el metodo New
.../...

     IF oFontText == NIL
       DEFINE FONT ::oFontText NAME "DEFAULT_GUI_FONT" SIZE 0,-12
    ENDIF

  IF oFontTitulo == NIL
       DEFINE FONT ::oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16
   ENDIF

.../...
 

Code: Select all

// Si no es en el metodo New
.../...

     IF oFontText == NIL
       if !empty( ::oFontText )
           ::oFontText:End()
       endif
       DEFINE FONT ::oFontText NAME "DEFAULT_GUI_FONT" SIZE 0,-12
    ENDIF

  IF oFontTitulo == NIL
       if !empty( ::oFontTitulo )
           ::oFontTitulo:End()
       endif
       DEFINE FONT ::oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16
   ENDIF

.../...
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

Bien Cristobal , pero y si se ha asignado un font en el new y oFontText != nil ?
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

Manuel, mira a ver

Code: Select all

// Si no es en el metodo New
.../...

     IF oFontText == NIL
       if !empty( ::oFontText )
           ::oFontText:End()
       endif
       DEFINE FONT ::oFontText NAME "DEFAULT_GUI_FONT" SIZE 0,-12
    ELSE
       if !empty( ::oFontText )
           ::oFontText:End()
       endif
      ::SetFont( oFontText )
    ENDIF

  IF oFontTitulo == NIL
       if !empty( ::oFontTitulo )
           ::oFontTitulo:End()
       endif
       DEFINE FONT ::oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16
    ELSE
       if !empty( ::oFontTitulo )
           ::oFontTitulo:End()
       endif
      ::oTitulo:SetFont( oFontTitulo )    // Suponemos que aqui hay otro objeto
   ENDIF

.../...
 
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

si, asi si pero no del todo ...
en el new()

DEFINE FONT ::oFontTitulo NAME "DEFAULT_GUI_FONT" SIZE 0,-16 // lo iniciamos y luego
if ofonttitulo != nil
::ofonttitulo:setfont( ofonttitulo) // si viene pasado desde new lo asignamos .
endif


Ya encontré uno de _ ... datepicket en el methodo redefine , no esta completado como si lo está en el metodo new .... se tiene que hacer un fix de ello .
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

En tu ejemplo eso es lo que no entiendo,
Como puede ser el objeto oFont, la data ::oFontTitulo, ya que este objeto no tiene ese metodo

Por otra parte, en este tema, llegamos al "tan traido y llevado" encapsulamiento, y no asignar valores directamente a las datas de los objetos que creamos, ni usarlas , sino que deben existir unos metodos SETGET de cada DATA al crear la CLASE para este fin y, en el caso de que las DATAs sean objetos, como es el caso, realice el :End() del objeto antes de realizar la nueva asignacion
Pero bueno, una cosa es "predicar y otra muy distinta, dar trigo" :D y todos buscamos la ley "del minimo esfuerzo", yo el primero, claro
Si me atrevo a escribir lo anterior hoy es porque en relacion a otro tema que no tiene nada que ver con este tema el compañero Felix me ha remitido a un BLog de Biel (que ya conocia) y en un articulo habla tambien de este tema
http://bielsys.blogspot.com.es/search?u ... -results=1
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

Pues tienes razón , el objeto font no tiene setfont , pues tendré que repensarlo ... ¿ como lo hacemos ?. Lo que si es claro es que datepick tiene un problema :-)
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

Dime en que linea y lo miro
Quiero decir, dime en qué tienes el problema :D :D :D
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: EXCESS RELEASE OF FONT

Post by cnavarro »

Manuel, tanto en el metodo New como en el Redefine se ha "comentado" la linea

Code: Select all

//   ::oFont     = oFont
 
y se ha puesto en el metodo New

Code: Select all

   ::SetFont( oFont )
 
Pero, ojo en el Metodo Redefine se ha comentado la linea pero no se ha asignado el font
Sin saber exactamente tu problema, quizas en ambos metodos, deberia ser:

Code: Select all

if oFont = nil
   ::SetFont( oWnd:oFont )
else
  ::SetFont( oFont )
endif

 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: EXCESS RELEASE OF FONT

Post by mastintin »

Tambien e quitado la asigancion inicial en el new ... ofont := oWnd:ofont .
Sigue existiendo otro problema por algún lado ... con este código da error si descomento el ultimo get y sino no ...¿?

Code: Select all

  DEFINE Font oFont    name "Verdana" size 0,-12
  DEFINE font oFontCor name "Verdana" size 0,-13 bold
  DEFINE Font oFont2   name "Verdana" size 0,-14

  DEFINE DIALOG oDlg RESOURCE "cab_cli" HELPID 2 FONT ofont

  REDEFINE BITMAP oBitmap1 ID 601 RESOURCE hVar["vcBmp"] OF  oDlg pixel NOBORDER TRANSPARENT

  REDEFINE GET hObj["vFACTURA"] VAR aVar[vFACTURA] ID 102 OF oDlg ;
           COLOR nRgb(0,0,0),nRgb(255,250,200);
           WHEN (Esalta) FONT oFontCor

      hObj["vFACTURA"]:lDiscolors:= EsAlta
  
  REDEFINE GET aObj[vCLIENTE] VAR aVar[vCLIENTE] ID IDCLIENTE OF oDlg PICTURE "999999";
     BITMAP "lupa5" ;
     ACTION .t. ;
     VALID  .t. ;
     FONT oFont2 ;
     UPDATE

  aObj[vCLIENTE]:bKeyDown := { |nKey | IIF( nKey == VK_F2,(aObj[vCLIENTE]:oBtn:click(), 0 ),) }

  REDEFINE GET aObj[vRAZ] VAR aVAr[vRAZ] ID IDRAZ OF oDlg PICTURE "@!" UPDATE

//  REDEFINE GET aObj[vNOMCLI] VAR aVAr[vNOMCLI] ID IDNOMCLI OF oDlg PICTURE "@!" FONT ofont2 UPDATE
  
   REDEFINE BUTTON ID 119 OF oDlg ACTION (Grabar:=.F., oDlg:End()) FONT ofont2

    ACTIVATE DIALOG oDlg CENTERED 

 
Post Reply