FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour problema al cambiar dinámicamente una imagen
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
problema al cambiar dinámicamente una imagen
Posted: Fri Apr 06, 2012 07:29 AM
Hola,
Quiero tener un control TImage que se cambie automáticamente cada vez que se cambia de registro en un browse. No quiero ajustar la imagen al tamaño del control, sino mostrar la imagen a tamaño natural. La manera de hacerlo basicamente es asociar una función al bchange del browse y cuando cambio de registro hago esto:

Code (fw): Select all Collapse
function RefreshMuImage()
    if File(lfn2sfn(rtrim(MU->MuImagen)))
        oMuImage:Show()
      oMuImage:LoadBmp(lfn2sfn(rtrim(MU->MuImagen)))
   else
        oMuImage:Hide()
    endif
    oMuImage:Refresh()
return nil


es decir si tengo imagen en el campo muestro el control y cargo la imagen, sino lo oculto. El problema que me he eoncontrado es que cuando muestro una imagen y a continuación una más pequeña, la pequeña queda superpuesta sobre la grande porque no tengo manera de eliminar la imagen grande. Así que me gustaría saber si hay manera de eliminar una imagen del control, es decir dejar el control en blanco, antes de poner la siguiente imagen.

Saludos,
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: problema al cambiar dinámicamente una imagen
Posted: Fri Apr 06, 2012 09:48 AM
Hola Jose Luís:

A mi me funciona, aunque lo estoy haciendo de forma distinta.
Si el fichero no existiera muestro uno sin contenido, pero bueno, aún así, la imagen no se superpone, la muestra a su tamaño.
Tal vez sea que estás usando LoadBmp y yo LoadImage.
Lo tengo de la siguiente forma:

Code (fw): Select all Collapse
................
REDEFINE IMAGE oFoto FILENAME cFoto ID 800;
             OF oDlg UPDATE 

oBrw:bChange:= {|| PonFoto(oFoto,cFoto,oDlg) }
..............

********************************************************
STATIC FUNCTION PONFOTO(oFoto,cFoto,oDlg)
********************************************************
........
//
IF !FILE(cFoto)
   cFoto="NOHAY.JPG"
ENDIF
//
   oFoto:LoadImage(,cFoto)
   oFoto:Refresh()
   oDlg:cTitle:=cTitulo
   oDlg:Refresh()

............
//
RETURN NIL
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: problema al cambiar dinámicamente una imagen
Posted: Sat Apr 07, 2012 01:27 AM
O algo asi:
Code (fw): Select all Collapse
................
REDEFINE IMAGE oFoto RESOURCE "NOHAYFOTO" ID 800;
             OF oDlg UPDATE 

oBrw:bChange:= {|| PonFoto(oFoto,cFoto,oDlg) }
..............


STATIC FUNCTION PONFOTO(oFoto, cFoto, cDlg)
ClearImage(oFoto)                          // aqui "liberamos" la imagen en el objeto
IF !FILE(cFoto)
    oFoto:SETBMP("NOHAYFOTO")     // esto es un BMP en el archivo de recursos      
  Else
    oFoto:LoadImage(,cFoto)
    oDlg:cTitle:=cTitulo
    oDlg:Refresh()
EndIf
oFoto:Refresh()

RETURN NIL

//------------------------------------------------------------------------------------
Function ClearImage(oImg)
PalBmpFree( oImg:hBitMap, oImg:hPalette )
oImg:hBitmap  := 0
oImg:hPalette := 0
oImg:cResName := NIL
oImg:cBmpFile := NIL
oImg:Refresh()
Return(Nil)
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: problema al cambiar dinámicamente una imagen
Posted: Sat Apr 07, 2012 12:06 PM
Hola Jose Luis:

Para eliminar una imagen antes de cargar la siguiente haz:

Code (fw): Select all Collapse
 PalBmpFree( oImagePad:hBitmap, oImagePad:hPalette )
 oImagePad:Refresh()


Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: problema al cambiar dinámicamente una imagen
Posted: Sat Apr 07, 2012 06:37 PM

o simplemente:

DeleteObject( oImagePad:hBitmap )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: problema al cambiar dinámicamente una imagen
Posted: Sun Apr 08, 2012 08:04 PM

Gracias, ahora funciona perfectamente.

Saludos,

Continue the discussion