Duda y problema con TButtonBmp

Duda y problema con TButtonBmp

Postby jmartial » 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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby Joel Andujo » Thu May 18, 2006 3:58 pm

Joaquín Yo lo hago de esta manera

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

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

METHOD SetBMP() // Jaam

Saludos y espero te ayude
Joel Andujo


Code: Select all  Expand view  RUN
*----------------------------*
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
User avatar
Joel Andujo
 
Posts: 131
Joined: Fri Oct 07, 2005 3:14 pm
Location: Cd. Obregón, Sonora, México

Postby jmartial » Thu May 18, 2006 5: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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby Joel Andujo » Thu May 18, 2006 5: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
User avatar
Joel Andujo
 
Posts: 131
Joined: Fri Oct 07, 2005 3:14 pm
Location: Cd. Obregón, Sonora, México

Postby jmartial » Tue May 23, 2006 7: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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby Antonio Linares » Thu May 25, 2006 8:15 pm

Joaquín,

Con esto debe ser suficiente:

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

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

Postby jmartial » Thu May 25, 2006 9: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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42148
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 59 guests