Refrescar un control Bitmap

Post Reply
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Refrescar un control Bitmap

Post 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
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Refrescar un control Bitmap

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Refrescar un control Bitmap

Post 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
 
João Santos - São Paulo - Brasil
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Refrescar un control Bitmap

Post by Pedro »

Armando no funciona, no refresca el bitmap

Karinha, no vi tu comentario hasta ahora probaré como dices

gracias a los dos
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Refrescar un control Bitmap

Post by Pedro »

Karinha no funciona tu forma de ponerlo, no refresca hasta que no sales y vuelves a entrar en el dialogo
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Refrescar un control Bitmap

Post by cnavarro »

Has probado con un control IMAGE?
En el sample\RE.PRG tienes un ejemplo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Refrescar un control Bitmap

Post 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
 
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Refrescar un control Bitmap

Post 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

//----------------------------------------------------------------------------//
 
João Santos - São Paulo - Brasil
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Refrescar un control Bitmap

Post 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
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Post Reply