Page 1 of 1
Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 5:56 pm
by Pedro
Hola a todos
Como siempre vengo pidiendo. Estoy con un pequeño proyecto y necesito que al ingresar en un get la ruta de un bitmap, este sea presentado en un control bitmap, pero no lo consigo
Este es el código que tengo :
Code: Select all
REDEFINE GET oGet[ 9] VAR aDatLec[10] ID 4110 PICTURE "@!" ;
BITMAP "BUSCAR1" ACTION (aDatLec[10] := RUTAFOTO(),;
oGet[ 9]:Refresh(),PostMessage( ::hWnd, WM_KEYDOWN, 13 ) ) ;
COLOR RGB(0,0,153),RGB(208,255,192) OF oFolder:aDialogs[1] UPDATE
REDEFINE BITMAP oBmp ID 4111 OF oFolder:aDialogs[1] ;
FILENAME aDatLec[10] ;
ADJUST;
UPDATE;
TRANSPARENT
En el get y en la variable aDatLec[10] quedan perfectos los datos, pero el control siguiente, el Bitmap, no se refresca ni presenta la foto, hasta que salgo del diálogo y vuelvo a entrar, entonces si presenta la foto.
Hay alguna manera de que al ingresar la ruta se refresque y presente la foto el Bitmap ?
Agradecido a todos
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 6:22 pm
by Armando
Pedro:
Intenta actualizando y refrescando el dialogo dentro del ACTION
Code: Select all
REDEFINE GET oGet[ 9] VAR aDatLec[10] ID 4110 PICTURE "@!" ;
BITMAP "BUSCAR1" ACTION (aDatLec[10] := RUTAFOTO(),;
oGet[ 9]:Refresh(),oDlg:UPDATE(),oDlg:REFRESH(),PostMessage( ::hWnd, WM_KEYDOWN, 13 ) ) ;
COLOR RGB(0,0,153),RGB(208,255,192) OF oFolder:aDialogs[1] UPDATE
Saludos
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 6:47 pm
by karinha
Ó,
Code: Select all
IF .NOT. FILE( XFOTOSCLI )
XSEMFOTO := "SEMFOTO.JPG"
REDEFINE IMAGE oImagem ID 201 ;
OF oFld:aDialogs[2] ;
FILENAME XSEMFOTO ;
UPDATE CURSOR oHand
oImagem:Progress( .F. )
oImagem:lStretch := ( .F. )
oImagem:Refresh()
ELSE
REDEFINE IMAGE oImagem ID 201 ;
OF oFld:aDialogs[2] ;
FILENAME DbClientes:Fotos ;
UPDATE CURSOR oHand
oImagem:Progress( .F. )
oImagem:lStretch := ( .T. )
oImagem:Refresh()
ENDIF
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 7:12 pm
by Pedro
Armando no funciona, no refresca el bitmap
Karinha, no vi tu comentario hasta ahora probaré como dices
gracias a los dos
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 7:44 pm
by Pedro
Karinha no funciona tu forma de ponerlo, no refresca hasta que no sales y vuelves a entrar en el dialogo
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 7:46 pm
by cnavarro
Has probado con un control IMAGE?
En el sample\RE.PRG tienes un ejemplo
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 8:23 am
by mastintin
es esto lo que buscas ? .
Code: Select all
#include "FiveWin.ch"
Function Main ()
LOCAL oDlg
LOCAL cFoto,ofoto
LOCAL cBmp,oBmp
LOCAL cTitle := "Gestión de fotos "
local cNoexiste := "c:\fwh\bitmaps\no.bmp"
cFoto := Space(50)
DEFINE DIALOG oDlg FROM 0,0 TO 514, 606 PIXEL ;
TITLE cTitle
@ 10, 10 BITMAP oBmp File "" SIZE 280,190 OF oDlg PIXEL NOBORDER
@ 216,15 say " Foto :" OF oDlg SIZE 34,12 PIXEL
@ 214,45 GET ofoto VAR cFoto OF oDlg SIZE 124,12 PIXEL ;
BITMAP "lupa5" ;
ACTION( cBmp:= cgetfile( "*.*","Escoje una Imagen" ),;
IF (!Empty(cBmp),ofoto:cText(cBmp),) );
VALID ( oBmp:LoadBmp( if( !file( cfoto ), cNoexiste, cfoto ) ), ;
obmp:refresh(), .t. )
@ 240,262 BUTTON "&Salir" OF oDlg SIZE 34,12 PIXEL ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RETURN nil
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 2:04 pm
by karinha
FWH..\SAMPLES\TESTIMG.PRG
Code: Select all
#include "FiveWin.ch"
#include "Image.ch"
//----------------------------------------------------------------------------//
function Main()
LOCAL oDlg, oImage, lSetAlpha := .t.
// setalpha( .f. )
DEFINE DIALOG oDlg FROM 0, 0 TO 22, 60 ;
TITLE FWDESCRIPTION + " JPG,JIF,GIF,BMP,DIB,RLE,TGA,PCX support!"
@ 0, 0 IMAGE oImage SIZE 150, 150 OF oDlg SCROLL // ADJUST
oImage:Progress( .f. )
//oImagem:lStretch := ( .T. )
@ 1, 28 BUTTON "Select Image" SIZE 50,10 OF oDlg ACTION GetImage( oImage )
@ 2, 28 BUTTON "Print" SIZE 50,10 OF oDlg ACTION PrintImage( oImage )
@ 3, 28 BUTTON "Copy" SIZE 50, 10 OF oDlg ;
ACTION oImage:CopyToClipboard()
@ 4, 28 BUTTON "Paste" SIZE 50, 10 OF oDlg ;
ACTION ( oImage:LoadFromClipboard(), oImage:Refresh() )
@ 5, 28 BUTTON "Save" SIZE 50, 10 OF oDlg ;
ACTION ( oImage:SaveImage( "SAVED.JPG", 2, 25 ), MsgInfo( "saved as saved.jpg" ) )
@ 6, 28 BUTTON "Exit" SIZE 50, 10 OF oDlg ACTION oDlg:End()
@ 10, 26 CHECKBOX oImage:lStretch PROMPT "Stretch" SIZE 50, 10 OF oDlg ;
ON CHANGE ( oImage:ScrollAdjust(), oImage:Refresh() )
@ 11, 26 CHECKBOX lSetAlpha PROMPT "Set Alpha Channel" SIZE 80, 10 OF oDlg ;
ON CHANGE ( SetAlpha( lSetAlpha ), oImage:Refresh() )
ACTIVATE DIALOG oDlg CENTER
return nil
//----------------------------------------------------------------------------//
function GetImage( oImage )
local gcFile := cGetFile( "Bitmap (*.bmp)| *.bmp|" + ;
"DIB (*.dib)| *.dib|" + ;
"PCX (*.pcx)| *.pcx|" + ;
"JPEG (*.jpg)| *.jpg|" + ;
"GIF (*.gif)| *.gif|" + ;
"TARGA (*.tga)| *.tga|" + ;
"RLE (*.rle)| *.rle|" + ;
"All Files (*.*)| *.*" ;
,"Please select a image file", 4 )
if ! Empty( gcFile ) .and. File( gcFile )
oImage:LoadBmp( gcFile )
endif
return nil
//----------------------------------------------------------------------------//
function PrintImage( oImage )
local oPrn
PRINT oPrn NAME "Image Printing" PREVIEW
PAGE
oPrn:SayImage( 0, 0, oImage )
ENDPAGE
ENDPRINT
return nil
//----------------------------------------------------------------------------//
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 4:52 pm
by cuatecatl82
Saludos a todos:
a veces cometemos el error de omitir que tipo de recurso vamos a abrir, en el caso de imagenes muchas veces hacemos:
oBmp:LoadImage("lo_que_sea")
Sin tomar en cuenta y decirle al control que lo que queremos abrir es un recurso incrustado dentro de nuestra aplicación, o un archivo desde disco, ovbimanente ambos deben existir para que se pueda vizualizar, en el caso de Imagenes, el Methodo LoadImage tiene sus condicionales:
Code: Select all
METHOD LoadImage( cResName, cBmpFile, cResFile ) CLASS TImage
No es lo mismo abrir un recurso:
que un archivo en disco:
Tomen en cuenta la coma "," antes de indicar el archivo a abrir, y en el caso de los Recursos siempre poner los nombres en mayusculas, a mi me ha pasado que este detalle me hace perder tiempo, algunas veces los compiladores con Case Sensitive..
Espero pueda ser de ayuda Saludos..