Page 1 of 1

Refrescar imagen

Posted: Tue Sep 18, 2007 2:14 pm
by jrestojeda
Hola a todos

Estoy cargando una imagen en un dialogo creado con workshop pero cuando cambio el archivo no se actualiza.
Alguien sabe porque puede ser?

Lo estoy haciendo así.

REDEFINE BITMAP oBmp ID 100 OF oDlg FILE Archivo ADJUST UPDATE

...


La variable Archivo la cargo con la funcion con un boton en el dialogo donde redefino el bmp.
Function SelFile(oBmp,Archivo)
Archivo:= cGetFile32("BMP | *.bmp","Seleccione un archivo",1,,,.T.)

oBmp:Refresh()
Return nil
//

Si yo grabo el Path del archivo cierro el dialogo y lo vuelvo a abrir se ve la imagen cargada.

Posted: Tue Sep 18, 2007 2:55 pm
by Carlos Mora
No es suficiente con el refresh del bitmap, ni se va a enterar automaticamente de que Archivo tenga otro valor.
Antes del refresh llama a SetBMP( Archivo ) o Reload(, Archivo )

Carlos

Posted: Tue Sep 18, 2007 3:54 pm
by jrestojeda
Carlos gracias por tu ayuda

Lo probé asi

Function SelFile(oBmp,Archivo)
Archivo:= cGetFile32("BMP | *.bmp","Seleccione un archivo",1,,,.T.)

oBmp:SetBMP( Archivo ) // Solo este una vez
oBmp:Reload( , Archivo ) // Solo este una vez
oBmp:Refresh()
Return nil

También probé con ambos al mismo tiempo y no ha funcionado.
Porque puede ser?
Desde ya muchas gracias.

Posted: Tue Sep 18, 2007 4:52 pm
by MOISES
Añade oDlg:Update()

y en el redefine bitmap UPDATE

Posted: Tue Sep 18, 2007 5:52 pm
by jrestojeda
Gracias Moises

Probé lo que me recomendaste pero sigue sin funcionar.

Saludos.

Posted: Tue Sep 18, 2007 6:14 pm
by AOKISANTOS
readbimap(0,"caminho")

Posted: Tue Sep 18, 2007 6:43 pm
by Armando
Ojeda:

Mira qué es lo que te devuelve la función cGetFile32(), posiblemente sea problema de rutas o nombres largos.

MsgInfo(Archivo)


Saludos

Posted: Tue Sep 18, 2007 7:38 pm
by jrestojeda
Gracias a todos por su ayuda.

Ya logré solucionar el problema de la siguiente manera

Code: Select all

Function SelFile(oBmp,Foto,oDlg1)
Foto:= cGetFile32("BMP | *.bmp","Seleccione un archivo",1,,,.T.)
oBmp:SetBMP("",Foto)
oBmp:Reload("",Foto)
oBmp:Refresh()
oDlg1:Update()
oDlg1:Refresh()
Return nil
//
y en el dialogo redefino el get de la siguiente forma:

Code: Select all

   REDEFINE BITMAP oBmp ID 106 OF oDlg1 FILE Foto ADJUST UPDATE
   REDEFINE BTNBMP Btn1 ID 107 OF oDlg1 RESOURCE "FLOPPY" LEFT;
      ACTION SelFile(oBmp,@Foto,oDlg1)
y funciona perfectamente. La imagen se refresca en el momento.
Gracias a todos.