Page 1 of 2

Control GET sobre una imagen

PostPosted: Thu Oct 21, 2010 3:36 pm
by Patricio Avalos Aguirre
Estimados

Como puedo colocar un control Get sobre una imagen, cuando paso el mouse sobre el control aparece?
la idea es ir colocando algunas letras sobre la imagen

he colocado esto
Code: Select all  Expand view
oDlg:bPainted := { || oGetImg1:Refresh() }

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 1:40 pm
by colthop
Hola Patricio.

No se si te servirá pero yo en una aplicación tengo varios Get sobre una imagen y para que funcione debo poner primero el Get y despues la Imagen. Mas o menos asi:

Code: Select all  Expand view
oImg = CurDrive() + ":\" + CurDir() + "\impr" + zejer + "\imp115.bmp"
@ 28,375 GET gDlg001 VAR va011 OF oDlgwBus
@ 65,455 GET gDlg002 VAR va012 OF oDlgwBus
@172,541 GET gDlg003 VAR va013 OF oDlgwBus
@  5,  5 IMAGE  tDlg001 FILE oImg OF oDlgwBus PIXEL SIZE 600,385 ADJUST
tDlg001:Zoom(ProPorH*600/840)


Un saludo

Carlos

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 3:02 pm
by Patricio Avalos Aguirre
Hola

Gracias por responder

Utilizo Recurso

Hize los ajustes que indicas pero el problema es que no puedo posicionar el mouse
en los get, solo puede acercarme con la tecla TAB.

Image

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 3:47 pm
by Manuel Aranda
Hola Patricio, no sé si es exactamente lo que quieres, pero esto funciona bien:

Code: Select all  Expand view

   DEFINE DIALOG oDlg RESOURCE "MOD110"  TITLE cTitulo
   REDEFINE IMAGE oImagen  ID 800 OF oDlg FILENAME "model110.jpg"
   //
   REDEFINE GET oGet[1]  VAR vP1 ID 401 OF oDlg
   REDEFINE GET oGet[2]  VAR vP2 ID 402 OF oDlg
   .......................
   ......................
 

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 4:32 pm
by Patricio Avalos Aguirre
Gracias Manuel

Lo he hecho de todas forma

Code: Select all  Expand view
REDEFINE GET aGet[1]              ;
    VAR _img1             ;
    PICTURE "!"                       ;
    ID 21 OF PAGE1 UPDATE         ;
    COLOR CLR_BLACK,RGB( 255,255,200) ;
    VALID _img1 $  " ;A;R;Q;S;P;T"    ;
    FONT oFont

REDEFINE GET aGet[2]               ;
    VAR _img2              ;   
    PICTURE "!"                        ;
    ID 22 OF PAGE1 UPDATE          ;
    COLOR CLR_BLACK,RGB( 255,255,200)  ;   
    VALID _img2 $  " ;A;R;Q;S;P;T"     ;
    FONT oFont

REDEFINE IMAGE oBmp ID 9 OF PAGE1 FILENAME "IMAGEN\vehoc.bmp" ADJUST
 


Pienso que el problema esta en el recurso, ya que si coloco el index de la imagen primero
no puedo seleccionar los get si pongo el index al final los get no aparecen y pasando
encima de la imagen estos aparecen ..

podrias enviarme el .res donde hiciste las pruebas
a ver donde tengo el problema


gracias

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 5:56 pm
by Manuel Aranda
Aquí tienes el diálogo en el archivo RES

http://rapidshare.com/files/426587386/PRUEBA.RES

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 6:46 pm
by Daniel Garcia-Gil
Patricio

lo que pretendes hacer no es posible de esa forma, todos los controles son "ventanas" cada uno procesa eventos (mensajes) independientemente (movimiento de raton, pintados, click, etc ) al colocar una ventana sobre otra en algun momento una estara oculta dejando a la otra sin recibir eventos...

Pudes hacer los get hijos de la imagen, los get los contruirias sin recursos, y hablandote de memoria, tendras que crearlos despues que inicialice el dialogo pues con los recursos no tendras un Handle valido hasta que este este inicializado
Si la imagen ocupa todo el dilogo, solo pinta en el DC del dialogo la imagen con el codeblock bPainted (ON PAINT)

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 7:03 pm
by Patricio Avalos Aguirre
Manuel

Con el control tBitmap me arroja error

Code: Select all  Expand view
Stack Calls
===========
   Called from: c:\fwh\source\classes\DIALOG.prg => CREATEDLGERROR(559)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:ACTIVATE(317)
   Called from: c:\fwh\source\classes\folder.prg => TFOLDER:DEFAULT(453)
   Called from: c:\fwh\source\classes\folder.prg => TFOLDER:INITIATE(365)
   Called from:  => __OBJSENDMSG(0)
   Called from:  => HB_EXECFROMARRAY(0)
   Called from: .\source\function\HARBOUR.PRG => OSEND(219)
   Called from:  => HB_EXECFROMARRAY(0)
   Called from: .\source\function\HARBOUR.PRG => ASEND(197)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:INITIATE(664)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:HANDLEEVENT(929)
   Called from:  => DIALOGBOX(0)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:ACTIVATE(273)
   Called from: .\IngreOt.PRG => INGRESOOT(713)
   Called from: .\Wcta.PRG => (b)MAKEMENU(1236)
   Called from: .\Wcta.PRG => (b)MAKEMENU(1236)
   Called from: .\source\classes\MENU.PRG => TMENU:ACTIVATE(470)
   Called from: .\Wcta.PRG => SHOWPOPUP(1229)
   Called from: .\Wcta.PRG => (b)MAIN(116)
   Called from: .\source\classes\TOOLBAR.PRG => TTOOLBAR:COMMAND(219)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:COMMAND(381)
   Called from:  => TWINDOW:HANDLEEVENT(0)
   Called from: c:\fwh\source\classes\DIALOG.prg => TDIALOG:HANDLEEVENT(945)
   Called from: c:\fwh\source\classes\WINDOW.prg => _FWH(3394)
   Called from:  => WINRUN(0)
   Called from: c:\fwh\source\classes\WINDOW.prg => TMDIFRAME:ACTIVATE(978)
   Called from: .\Wcta.PRG => MAIN(229)

System
======

Cambio a BITMAP
Code: Select all  Expand view
//  REDEFINE IMAGE oBmp ID 800 OF PAGE1 FILENAME "IMAGEN\vehoc.bmp" ADJUST
REDEFINE BITMAP oBmp ID 800 OF PAGE1 FILENAME "IMAGEN\vehoc.bmp" ADJUST
 


funciona pero hace me hace lo mismo

Como defines el contro IMAGE

desde ya gracias por tu tiempo

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 8:19 pm
by Patricio Avalos Aguirre
gracias daniel

voy a probar si me resulta, no no grito jeje

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 8:24 pm
by Manuel Aranda
Pues el código es el que te puse más arriba.
Tal vez los errores vengan porque no hayas incluído #include "image.ch" y la librería freeimage.dll en el directorio de la aplicación.

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 8:52 pm
by Manuel Aranda
Patricio, te he hecho un ejemplo autocontenido con los archivos necesarios:

http://rapidshare.com/files/426614995/Prueba.rar

(Otra cosa es que sea esto lo que estás buscando)

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 9:15 pm
by Patricio Avalos Aguirre
Muchas Gracias Manuel

Parece que le truco es hacer la imagen con los controles get incluidos, pero igual no puedes pinchar un get, solo debes pasar de un control en uno hasta llegar al que corresponda

Image

se agradese los ejemplos

pd:por ahora lo dejo a medias, hay que seguir avanzando

Re: Control GET sobre una imagen

PostPosted: Fri Oct 22, 2010 9:28 pm
by Daniel Garcia-Gil
Daniel Garcia-Gil wrote:Patricio

lo que pretendes hacer no es posible de esa forma, todos los controles son "ventanas" cada uno procesa eventos (mensajes) independientemente (movimiento de raton, pintados, click, etc ) al colocar una ventana sobre otra en algun momento una estara oculta dejando a la otra sin recibir eventos...

Pudes hacer los get hijos de la imagen, los get los contruirias sin recursos, y hablandote de memoria, tendras que crearlos despues que inicialice el dialogo pues con los recursos no tendras un Handle valido hasta que este este inicializado
Si la imagen ocupa todo el dilogo, solo pinta en el DC del dialogo la imagen con el codeblock bPainted (ON PAINT)

Re: Control GET sobre una imagen

PostPosted: Sat Oct 23, 2010 1:41 am
by rolando
Patricio,

Tomé el PRG de prueba que te envió Manuel y le modifiqué el RES y acá funciona.

Así lo vengo usando desde hace bastante en mis aplicaciones y sin problemas

Puedes bajar el RES desde:

http://www.mediafire.com/?al6f36d766wuawa

Reemplazalo por el que enviara Manuel y prueba. Comenta si te sirve.

Saludos.

Rolando :D

Re: Control GET sobre una imagen

PostPosted: Sat Oct 23, 2010 7:32 am
by Manuel Aranda
Rolando, gracias.
Era el problemilla que tenía yo también, el no poder pinchar con el ratón sobre los GET. Sencillamente se soluciona creando primero en el RES los controles GET y encima el control BITMAP.