FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consumo de recurso
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Consumo de recurso
Posted: Thu Jan 27, 2011 07:03 PM
Comprobando el resultado de CheckRes() he detectado que nos vacian algunos elementos.

creo que habría que incluir:

TOutlook2003: oHeader no se destruye
Code (fw): Select all Collapse
METHOD Destroy() CLASS TOutLook2003
....
   ::oHeader:Destroy()     //... fgondi
return Super:Destroy()


Ttabs: oFont y oBold no se destruyen
Code (fw): Select all Collapse
METHOD Destroy() CLASS TTabs
...
   ::oFont:End()   //... fgondi
   ::oBold:End()   //... fgondi
return nil


Ttabas: Por ejemplo al añadir un elemento (AddItem) o al borrar un elemento (DelItem) se llama al método Default y dentro de este método se recargan las imagenes contenidas en ::acBitmaps.
Me parece correcto que se recargen las imagenes por si han variado, pero antes de debería limpiar las imagenes ya existentes.
Code (fw): Select all Collapse
METHOD Default() CLASS TTabs
...
//... Comienzo fgondi
   if Valtype(::ahBitmaps)='A' 
     for n := 1 to len( ::ahBitmaps )
       if ::ahBitmaps[ n ] != nil
         DeleteObject( ::ahBitmaps[ n ] )
       endif
     next
   endif
//... Final fgondi
   ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )
...
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Consumo de recurso
Posted: Sun Feb 06, 2011 07:16 AM
Mr. fgondi

Thank you. I appreciate your suggestions about TOutlook2003 and font objects of TTabs.

But I am not able to understand about ::ahBitmaps. I think that before execution of this line in Initiate() method
Code (fw): Select all Collapse
   ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )

::ahBitmaps is always nil. Can you explain to me under what circumstances ahBitmaps can be an array with valid bitmaps, before execution of this code? Please advise me if I am missing something.
Regards



G. N. Rao.

Hyderabad, India
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: Consumo de recurso
Posted: Mon Feb 07, 2011 11:36 AM
Ejemplo:
Code (fw): Select all Collapse
function Main()

   local oWnd, oTabs1, oBtn

   SetResDebug( .t. )

   DEFINE WINDOW oWnd TITLE "Testing FiveWin Tabs" ;
      COLOR CLR_WHITE, CLR_BLUE

   @ 8, 0 TABS oTabs1 PROMPTS "&One", "&Two", "T&hree", "&Four" OF oWnd ;
      BITMAPS "..\bitmaps\16x16\people.bmp", "..\bitmaps\16x16\open2.bmp",;
              "..\bitmaps\16x16\print.bmp", "..\bitmaps\16x16\zoom2.bmp" ;
      ACTION oWnd:Say( 5, 5, oTabs1:nOption )
   
   oWnd:oTop = oTabs1

   @ 5, 5 BUTTON oBtn OF oWnd Size 50, 50 Action oTabs1:AddItem('Five')

   
   ACTIVATE WINDOW oWnd
   
   FERASE("CHECKRES.TXT")
   CHECKRES()
return nil


Si ejecutamos este ejemplo y luego lo cerramos, obtenemos como resultado en checkres.txt lo siguiente:
Code (fw): Select all Collapse
02/07/11 12:30:57: FONT,-1593173209,TTABS:NEW(177)->MAIN(19)
    
02/07/11 12:30:57: ====================================================================================================

No deja rasto de las imagenes usadas.

Ahora ejecutamos el ejemplo y pulsamos en el botón, que lo único que hace es añadir una nueva pestaña al tabs. Al cerrar la aplicación obtenemos lo siguiente:
Code (fw): Select all Collapse
02/07/11 12:33:05: FONT,-1207297722,TTABS:NEW(177)->MAIN(19)
    
02/07/11 12:33:05: BMP,-284879290,TTABS:NEW(198)->MAIN(19)
    
02/07/11 12:33:05: BMP,1728388266,TTABS:NEW(198)->MAIN(19)
    
02/07/11 12:33:05: BMP,1476731723,TTABS:NEW(198)->MAIN(19)
    
02/07/11 12:33:05: BMP,33890123,TTABS:NEW(198)->MAIN(19)
    
02/07/11 12:33:05: ====================================================================================================


El motivo es que en el método AddItem se llama al método Default
Code (fw): Select all Collapse
METHOD AddItem( cItem ) CLASS TTabs

...
   ::Default()
...

return nil


Y en el método default vuelve a recargar las imagenes sin controlar si estas ya estaban cargadas en ahBitmaps:
Code (fw): Select all Collapse
METHOD Default() CLASS TTabs
...
   ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )
   for n = 1 to Len( ::acBitmaps )
      if ValType( ::acBitmaps[ n ] ) == "C"
         if File( ::acBitmaps[ n ] )
            ::ahBitmaps[ n ] = ReadBitmap( 0, ::acBitmaps[ n ] )
         else
            ::ahBitmaps[ n ] = LoadBitmap( GetResources(), ::acBitmaps[ n ] )
         endif
      endif
   next
...
return nil
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Consumo de recurso
Posted: Tue Feb 08, 2011 02:50 AM

Thank you for the explanation and suggestions.
Fixed in release 11.1

Regards



G. N. Rao.

Hyderabad, India

Continue the discussion