Page 2 of 2

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 3:36 pm
by Verhoven
Te copio el que me mandaste modificado. El problema ha surgido cuando he añadido el LISTBOX.

Code: Select all  Expand view
#include "FiveWin.ch"

static oWnd
static oFont
static oFont2

function Main()
  public oBru
     
   DEFINE BRUSH oBru COLOR nrgb(0,0,30)
   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -12
   DEFINE FONT oFont2 NAME "MS Sans Serif" SIZE 0, -14 BOLD

   DEFINE WINDOW oWnd TITLE 'PRUEBAFONT' BRUSH oBru MENU MenuPpal()
        @ 18,10 BUTTON oBtn1 PROMPT 'Fonts Publicas' OF oWnd;
                       ACTION DialogoPublic(oWnd);
                       SIZE 150,40; // Ancho, Alto                                
                       UPDATE
   ACTIVATE WINDOW oWnd MAXIMIZED
       
   oFont:End()
return nil

function DialogoPublic(oPadre)
  local oDlg, oBtn1
  local oTbr, aRolloCalc:={1,2,3,4,5,6}

   DEFINE DIALOG oDlg OF oPadre FROM 1,10 TO 25,80;


       @ 1, 1 SAY "Pruebas con Fonts" FONT oFont2;
                     COLOR nrgb(0,0,170),nrgb(220,220,220);
                     SIZE 150, 19 ;
                     OF oDlg
                     
       @ 3, 3 LISTBOX oTbr FIELDS ;
                     aRolloCalc;
                     HEAD 'valor' OF oDlg ;
                     FONT oFont2 COLOR  nrgb(0,0,0),nrgb(255,255,200) ;
                     UPDATE                 
                     
       @ 3,30 BUTTON oBtn1 PROMPT 'Salir' OF oDlg;
                       ACTION oDlg:end();
                       SIZE 25,20 ;                                
                       UPDATE
                       
   ACTIVATE DIALOG oDlg CENTERED
return nil
   
static function MenuPpal()
  local oMenu

  MENU oMenu
    MENUITEM '&Publicas' ACTION DialogoPublic(oWnd) MESSAGE 'Opción con variables publicas'
    MENUITEM '&Salida' ACTION oWnd:end() MESSAGE 'Salida del Programa'
  ENDMENU
return oMenu    

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 3:41 pm
by Verhoven
Al pulsar por segunda vez en el botón para entrar en el diálogo la letra ya no es la correcta.

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 3:46 pm
by Verhoven
ESte es el contenido del fichero log con los errores que genera automáticamente el programa:

Code: Select all  Expand view
12/14/14 16:45:18: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : 0 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
12/14/14 16:45:36: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -1 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
12/14/14 16:45:38: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -2 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------   
12/14/14 16:45:40: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -3 )
     <-TFONT:END(246) <-MAIN(21)
    ------------------------------------------------------------   

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 3:54 pm
by Verhoven
El LISTBOX es el que elimina/modifica la variable oFont que se emplee para él.
Estoy empleando en el enlazado la libreria del TBBROSE de Hernan VERSIÓN 17.
Viendo el mensaje de error del log la línea a la que hace referencia con número 650 contiene lo siguiente:

Code: Select all  Expand view
  METHOD Destroy() INLINE If( ::oTXT !=Nil, (::oTXT:End(), ::oTXT:= Nil),),;
                           Super:Destroy()


No se si puede ser que las últimas versiones de XHARBOUR o FWH no son compatibles con esa sitaxis.

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 5:42 pm
by Antonio Linares
Paz,

Mira a ver en el código del Listbox de Hernán si en algún lado se hace:

::oFont = oFont

Todas las asignaciones de fonts ahora tienen que hacerse con el método SetFont() y de ahí podría ser que se esté destruyendo más de la cuenta, cuando el control finalmente se destruye.

Si no lo encuentras, copia el fuente aqui y lo revisamos :-)

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 6:54 pm
by Verhoven
Arreglado Antonio.
Hemos eliminado de esa clase las dos líneas con ::oFont = oFont
y al final de los métodos New y Redefine hemos añadido la línea Self:SetFont(oFont)

Habrá que pensar en planificar algo de tiempo para pasar al xBrowse, pero siempre hay algo más urgente que hacer y se va quedando para atrás, pero será la solución definitiva.

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Dec 14, 2014 10:15 pm
by Antonio Linares
Me alegro de que se haya solucionado :-)

Re: EXCESS RELEASE OF FONT

PostPosted: Mon Dec 15, 2014 8:42 pm
by Patricio Avalos Aguirre
Estimados

en la clase de wbrowse de hernan, la variable ofont siempre es objeto, o no
de lo contratio Self:SetFont abria que verificar?

if oFont <> NIL
oFont:SetFont(oFont)
endif

Re: EXCESS RELEASE OF FONT

PostPosted: Tue Dec 16, 2014 5:19 am
by Antonio Linares
Patricio,

Si. Ahora hay que tener cuidado de no hacer nunca:

oObjeto:oFont = oFont

siempre hay que usar

oObjeto:SetFont( oFont )

Aunque mientras escribo esto, se me acaba de ocurrir que podriamos usar sobrecarga de operadores y hacer que = ó := para un objeto TFont llamase por defecto a SetFont()...

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Jan 11, 2015 7:16 pm
by Verhoven
Antonio,
No se si es necesario hacer algo parecido para los objetos oPen a lo que se hace con los oFont.
¿Me lo puedes confirmar?. Es que aunque menos EXCESS RELEASE OF FONT que antes esporádicamente sale alguno.
He revisado todo el código, y aunque me puedo haber dejado algo por detrás, no se me ocurre por donde buscar.

Re: EXCESS RELEASE OF FONT

PostPosted: Sun Jan 11, 2015 9:22 pm
by Antonio Linares
Estas usando alguna clase de terceros en la que no se este asignando el font usando el método SetFont() ?

Re: EXCESS RELEASE OF FONT

PostPosted: Mon Jan 12, 2015 7:17 am
by Verhoven
La única clase que uso fuera FWH y Barbour es el browse de Hernan.

Re: EXCESS RELEASE OF FONT

PostPosted: Mon Jan 12, 2015 7:19 am
by Verhoven
Pero ya la he revisado y modificado para adaptarla también al setfont y a no hacer los oFont:end()

Re: EXCESS RELEASE OF FONT

PostPosted: Mon Jan 12, 2015 4:44 pm
by Antonio Linares
Y se mantiene el error ó ya se ha corregido ?

Re: EXCESS RELEASE OF FONT

PostPosted: Mon Jan 12, 2015 9:08 pm
by Verhoven
Se ha mantenido el error.
Pero como es más esporádico que antes tengo instalada la actualización de la aplicación en varios sitios a ver si pasados unos días (al menos una semana) de uso vuelve a producirse y comento el resultado.