Fuente sin destruir

Fuente sin destruir

Postby mastintin » Fri Mar 13, 2015 4:24 pm

Buscando recursos y funetes sin destruir , checkres me devuelve esto :

13-03-2015 17:12:46: FONT,-1442181153,TMDIFRAME:GETFONT(2868)->TMDICLIENT:GETFONT(2845)->TMDICLIENT:NEW(146)->TMDIFRAME:NEW(171)->MAIN(306)

al salir de de mdiclient no se libera la fuente automaticamante ?
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Fuente sin destruir

Postby FranciscoA » Fri Mar 13, 2015 6:49 pm

+1
Es el unico recurso que se me queda "colgado" en mis programas.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Fuente sin destruir

Postby Antonio Linares » Sat Mar 14, 2015 7:18 am

Este ejemplo aqui no deja nada:

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

function Main()

   local oWnd

   SetResDebug( .T. )

   DEFINE WINDOW oWnd MDI

   ACTIVATE WINDOW oWnd

   CheckRes()
   WinExec( "notepad checkres.txt" )

return nil


y este tampoco:
Code: Select all  Expand view  RUN
#include "FiveWin.ch"

function Main()

   local oWnd, oFont

   SetResDebug( .T. )

   DEFINE FONT oFont NAME "Verdana" SIZE 0, -10

   DEFINE WINDOW oWnd MDI
   
   oWnd:SetFont( oFont )   

   ACTIVATE WINDOW oWnd

   oFont:End()

   CheckRes()
   WinExec( "notepad checkres.txt" )

return nil


Podeis proporcionar un ejemplo ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Fuente sin destruir

Postby FranciscoA » Sat Mar 14, 2015 2:44 pm

Antonio, tu segundo ejemplo me ha dado la solucion.
Tenia oWnd:oFont := oFont en vez de oWnd:SetFont(oFont)
Gracias
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Fuente sin destruir

Postby Antonio Linares » Sat Mar 14, 2015 3:18 pm

Muy bien! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Fuente sin destruir

Postby mastintin » Sat Mar 14, 2015 5:00 pm

En mi caso era algo mas complicado ...
Dejo aqui la solución por si a alguien le pasa lo mismo.
Lo que no entiendo es porque me lo marca como que es de mdichild cuando es de un txbrowse..
tengo un una clase derivada de txBrowse para que todos los browses muestren el mismo "estilo" ...

Code: Select all  Expand view  RUN


CLASS MyBrowse FROM TXBrowse
   CLASSDATA lRegistered AS LOGICAL // This is compulsory for derived classes
    METHOD New( oWnd ) CONSTRUCTOR
 ENDCLASS


METHOD New( oWnd ) CLASS MyBrowse

   DEFINE FONT ::oFont NAME "Arial" SIZE 0, -15   // aqui desaparece el font
   ::Super:New( oWnd )

  //   DEFINE FONT ::oFont NAME "Arial" SIZE 0, -15 // aqui se mantiene el font al salir ...
   
   ::lKineticBrw:= .f.
   ::l2007:= .t.
   ::bClrHeader   := ;
   ::bClrFooter   := {|| { GetSysColor( COLOR_BTNTEXT ), If( ::l2007, nRGB( 229, 229, 229 ), GetSysColor( COLOR_BTNFACE ) ), ;
                           nRGB( 149, 149, 149 ), nRGB( 230, 230, 230 ) } }
     
   ........

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

Re: Fuente sin destruir

Postby mastintin » Sat Mar 14, 2015 5:23 pm

Mas sobre el tema ...
¿ Cual es la manera correcta de asignar fuentes a oCol:oHeaderFont y oCol:oFooterFont y luego destruirlas ?

Si se hace así la fuente se queda ...
Code: Select all  Expand view  RUN


  DEFINE FONT oheaderFONT NAME "Arial" SIZE 0, -8

 oBrw := TxBrowse():New( ::oWnd )
   oCol := oBrw:AddCol()
      WITH OBJECT oCol
         :cHeader  := "Descripción"
         :oHeaderFont := oheaderFONT
         :bStrData  := { || left((::calias)->descrip ,32 ) }
          :nWidth := 290
       END
 obrw:SetRDD()
  obrw:CreateFromCode()

  // oHeaderFont:end()  // si la destruyo aqui no se aplica al browse.
   

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

Re: Fuente sin destruir

Postby nageswaragunupudi » Sat Mar 14, 2015 7:46 pm

If you created a font like this:
Code: Select all  Expand view  RUN
METHOD New( oWnd ) CLASS MyBrowse

   DEFINE FONT ::oFont NAME "Arial" SIZE 0, -15   // aqui desaparece el font
 

oBrw:Destroy() takes care of releasing this font and there should be no problem.

When we assign a font to header or footer or data, the font object's counter is not incremented. So xbrowse does not need to destroy the font.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Fuente sin destruir

Postby mastintin » Sat Mar 14, 2015 9:38 pm

Ok .If a Font is assign to a headerFont we have to destroy it.
If we are to assign in a derived class, we add that destruction within the method destroy().

ok. Si asignamos una fuente al header o al footer , es responsabilidad nuestra destruirla.
Si pretendemos asignarla dentro de una clase derivada , tendremos que añadir esa destrucción dentro del metodo destroy()

Code: Select all  Expand view  RUN


#include "fivewin.ch"
#include "xbrowse.ch"

function TestMain()

   local oWnd
   local oBrw
   local oBar
   local lEmpty := .f.
   local oHeaderFont
   local aArray := {}
   
    SetResDebug( .t. )
   
      DEFINE FONT oheaderFONT NAME "Arial" SIZE 0, -28
   
   DEFINE WINDOW oWnd TITLE "Testing Autosave Data"
   
 
   if empty( aArray )                          
      aArray := {{"one","two","three","four"},;
        {"one","two","three","four"},;
        {"one","two","three","four"},;
        {"one","two","three","four"}}    
   endif

   
   @ 0,0 XBROWSE oBrw OF oWnd ;
      COLUMNS {1,2,3,4} ;
      HEADERS {"Activated-1","Activated-2","Deactivated-1","DeActivated-2"} ;
      array aArray LINES CELL fastedit
   
   oBrw:aCols[ 1 ]:lAutoSave := .t.
   oBrw:aCols[ 2 ]:lAutoSave := .t.
   
   oBrw:aCols[ 2 ]:oHeaderFont := oheaderFONT
   
   aeval( oBrw:aCols, { |oCols| oCols:nEditType := EDIT_GET } )
   
   oWnd:oClient := oBrw
   
   oBrw:createfromcode()
   
   activate window oWnd
     
  oheaderFONT:end()    // matar la fuente del header

   checkres()
     
return nil


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

Re: Fuente sin destruir

Postby nageswaragunupudi » Sat Mar 14, 2015 9:44 pm

Parent class' destroy method already provides for destruction of ::oFont.
You do not need to do anything in your derived class
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Fuente sin destruir

Postby mastintin » Sun Mar 15, 2015 9:58 am

nageswaragunupudi wrote:Parent class' destroy method already provides for destruction of ::oFont.
You do not need to do anything in your derived class


If oFontheader:end() is disable in the above example

03/14/15 22:26:32: C:\fwh\samples\xbcell.exe -- FONT,1611271663,TESTMAIN(15)
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 74 guests