FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Refrescar un control Bitmap
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 05:56 PM
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 (fw): Select all Collapse
   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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 06:22 PM
Pedro:

Intenta actualizando y refrescando el dialogo dentro del ACTION

Code (fw): Select all Collapse
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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 06:47 PM
脫,

Code (fw): Select all Collapse
    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 - Phone: +55(11)95150-7341
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 07:12 PM

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
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 07:44 PM

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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Refrescar un control Bitmap
Posted: Tue Nov 03, 2015 07:46 PM

Has probado con un control IMAGE?
En el sample\RE.PRG tienes un ejemplo

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 08:23 AM
es esto lo que buscas ? .
Code (fw): Select all Collapse
#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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 02:04 PM
FWH..\SAMPLES\TESTIMG.PRG

Code (fw): Select all Collapse
#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 - Phone: +55(11)95150-7341
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: Refrescar un control Bitmap
Posted: Wed Nov 04, 2015 04:52 PM
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 (fw): Select all Collapse
METHOD LoadImage( cResName, cBmpFile, cResFile ) CLASS TImage


No es lo mismo abrir un recurso:

Code (fw): Select all Collapse
LoadImage("BMP_GUARDAR")


que un archivo en disco:

Code (fw): Select all Collapse
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.. :-) :-) :-)
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

Continue the discussion