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:

Code: Select all

LoadImage("BMP_GUARDAR")
que un archivo en disco:

Code: Select all

LoadImage(, "C:\GUARDAR.BMP")
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.. :D :D :D