FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Duda y problema con TButtonBmp
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Duda y problema con TButtonBmp
Posted: Thu May 18, 2006 12:04 PM

Hola,

Viendo el código de esta clase (TButtonBmp), he visto que la data ::hBitmap no se destruye en ningún momento. ¿Se destruye en otro lugar de FWH o pierde recursos?

Y otra cosa que se me plantea es cambiar el bitmap por otro en tiempo de ejecución, pero no he visto un método que lo haga, tipo ChangeBitMap(cNewBmp)

¿Forma de implementarlo? ¿existe algo para hacerlo?

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 143
Joined: Fri Oct 07, 2005 03:14 PM
Duda y problema con TButtonBmp
Posted: Thu May 18, 2006 03:58 PM
Joaquín Yo lo hago de esta manera

oBtn:SetBmp('Borr1')
oBtn:='Borrar'
oBtn:refresh()

y a la clase le agregale el siguiente método :

METHOD SetBMP() // Jaam

Saludos y espero te ayude
Joel Andujo


*----------------------------*
METHOD SetBMP( cBitMap )  CLASS TButtonBmp
 local hBitMap
 if valtype( cBitMap )== 'C'
    hBitMap:=if( file(cBitMap),ReadBitmap( 0, cBitMap), LoadBitmap( GetResources(), cBitmap))

    ::hBitmap:={hBitmap, hBitmap, hBitmap, hBitmap}
 else
    for i=1 to 4
       if valtype(cBitMap[i])='U'; cBitMap[i]:=cBitMap[1] ; endif
       ::cBitmap[i]:=cBitMap[i]
       ::hBitmap[i]:=if( file(cBitMap[i]), ReadBitmap(0, cBitmap[i]), LoadBitmap( GetResources(), cBitmap[i] ) )
    next
 endi

 ::Refresh()
return Nil
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Duda y problema con TButtonBmp
Posted: Thu May 18, 2006 05:05 PM

Joel,

Creo que te estás equivocando, has puesto:

::hBitmap:={hBitmap, hBitmap, hBitmap, hBitmap}

y ::hBitmap es un número no un array de números, me parece que eso era la clase TbtnBmp , yo estoy preguntando por la nueva clase que tiene estilo XP.

Gracias de todas formas,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 143
Joined: Fri Oct 07, 2005 03:14 PM
Duda y problema con TButtonBmp
Posted: Thu May 18, 2006 05:48 PM

Si Joaquín, de ahi lo tome como ejemplo y me funciona bien, con la
ButtonB.prg de Rossine apariencia XP

saludos
Joel Andujo

Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Duda y problema con TButtonBmp
Posted: Tue May 23, 2006 07:59 AM

Antonio,

Confirmado, la clase TButtonb no destruye el bitmap, me gustaría saber cuales son los pasos para no perder recursos.

He probado a añadir estos métodos, pero no sé si son correctos, aunque creo que funcionan:

METHOD UnLoadBmp() INLINE If(::hBitmap != 0, DeleteObject( ::hBitmap ),),::hBitmap:=0

METHOD Destroy() INLINE ::UnLoadBmp(),Super:Destroy()
METHOD End() INLINE ::Destroy() , Super:End()

Un Saludo,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Duda y problema con TButtonBmp
Posted: Thu May 25, 2006 08:15 PM

Joaquín,

Con esto debe ser suficiente:

METHOD End() INLINE DeleteObject( ::hBitmap ), Super:End()

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Duda y problema con TButtonBmp
Posted: Thu May 25, 2006 09:27 PM

Antonio,

Ya hice eso pero con un msginfo() y nunca lo mostraba, sin embargo poniendo el msginfo() en el DESTROY lo mostraba perfectamente.

Pruebaló y me dices, me da la impresión que sólo en el End(), se pierden recursos.

METHOD End() INLINE msginfo( "End no se muestra"), DeleteObject( ::hBitmap ), Super:End()

METHOD Destroy() INLINE msginfo( "Destroy SÍ se muestra"), DeleteObject( ::hBitmap ), Super:Destroy()

Un Saludo y gracias,
Joaquín

Un Saludo,

Joaquín Martínez
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Duda y problema con TButtonBmp
Posted: Thu May 25, 2006 11:01 PM

Joaquín,

Cierto, tienes razón, ha sido un lapsus por mi parte:

METHOD Destroy() INLINE DeleteObject( ::hBitmap ), Super:Destroy()

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion