FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour EXCESS RELEASE OF FONT
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 04:09 PM

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.

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 04:14 PM

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

local oFontDlg:=oFont

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 04:41 PM

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 ...

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 05:03 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 05:21 PM
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
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 06:21 PM

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

oNuevo: new( ofontText, ofontTitulo )

 IF oFontText == NIL
   DEFINE FONT oFontText NAME &quot;DEFAULT_GUI_FONT&quot; 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()

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 07:06 PM
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 (fw): Select all Collapse
// 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 (fw): Select all Collapse
// 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

.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 07:41 PM

Bien Cristobal , pero y si se ha asignado un font en el new y oFontText != nil ?

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 08:08 PM
Manuel, mira a ver

Code (fw): Select all Collapse
// 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

.../...
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 08:17 PM

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 los causantes ... datepicket en el methodo redefine , no esta completado como si lo está en el metodo new .... se tiene que hacer un fix de ello .

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 08:24 PM

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

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 09:19 PM

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 :-)

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 09:20 PM

Dime en que linea y lo miro
Quiero decir, dime en qué tienes el problema :D :D :D

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 09:31 PM
Manuel, tanto en el metodo New como en el Redefine se ha "comentado" la linea

Code (fw): Select all Collapse
//   ::oFont     = oFont


y se ha puesto en el metodo New

Code (fw): Select all Collapse
   ::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 (fw): Select all Collapse
if oFont = nil
   ::SetFont( oWnd:oFont )
else
  ::SetFont( oFont )
endif
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: EXCESS RELEASE OF FONT
Posted: Mon Jan 19, 2015 09:44 PM
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 (fw): Select all Collapse
  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