Page 1 of 1

Controles sobre una imagen

Posted: Wed Jun 06, 2012 4:09 am
by César E. Lozada
Me encapriché con hacer un formulario para transcribir los datos recogidos en una planilla, digitalizando antes una planilla en blanco para mostrarla en un diálogo y agregando sobre esta imagen los controles para transcribir la información. Algo así como:

Code: Select all

DEFINE DIALOG oDlg FROM 0,0 TO 600,700 PIXEL TITLE "DATOS"
   @ 10, 10 IMAGE oImg OF oDlg SIZE 680,500 PIXEL FILE "Planilla.jpg" SCROLL
ACTIVATE DIALOG oDLg CENTERED ON INIT CrearControles(oImg,aVar)
:
Function CrearControles(oImg,aVar)
   @ 25,20 GET aVar[1] OF oImg SIZE 40,12 PIXEL UPDATE
   @ 75,20 COMBOBOX aVar[2] OF oImg SIZE 40,12 PIXEL ITEMS {"Uno","Dos","Tres"} ON CHANGE MsgInfo(aVar[2]) UPDATE
   @ 125,20 GET aVar[3] OF oImg SIZE 40,12 PIXEL UPDATE
return nil
 
Todo funciona bien, excepto que no se evalúa el bChange del combobox.

¿Hay alguna razón que impida que se evalúe el bChange del combobox?
Saludos
César Lozada

Nota: Uso FWH11.12

[img]
http://img171.imageshack.us/img171/5163/muestraui.jpg
[/img]

Re: Controles sobre una imagen

Posted: Thu Jun 07, 2012 12:59 pm
by César E. Lozada
Examinando el código de tBitmap, de la cual desciende tImage, observo que en esa clase (tBitmap) ya estaba prevista la inscrustación de controles en una imagen. Creo que así me lo confirman la presencia en la clase del método ::AdjControls() y el uso de ::aControls, con sus ::Move() en caso de hacer scroll.

Probé con controles de las clases tSay, tGet, tMGet, tButton y tBtnBmp y todo perfecto. Pero con un combobox no es así: no se ejecuta bChange y ::KeyChar() se ejecuta en la imagen y no en el combobox, produciéndose un indeseado scroll vertical de la imagen al pulsar las teclas KeyUp/KeyDown en el el combobox.

¿Un bug?

Gracias.

Re: Controles sobre una imagen

Posted: Thu Jun 07, 2012 2:08 pm
by Armando
César:

Mira en la carpeta .\Samples y busca el ejemplo Corel.Prg, Tal vez sea
lo que necesitas.

Saludos

Re: Controles sobre una imagen

Posted: Thu Jun 07, 2012 2:39 pm
by César E. Lozada
Gracias, Armando. Pero no es lo que busco. En corel.prg se añaden etiquetas a una forma para imprimirla.
Lo que quiero hacer es un diálogo con una imagen sobre la cual hay unos controles para ingreso de datos.
Sí se puede con tGets, pero falla con comboboxes.

Saludos

Re: Controles sobre una imagen

Posted: Mon Jun 11, 2012 9:55 am
by Carlos Mora
Hola César,

te dejo una sugerencia para que hagas pruebas. En lugar de usar un control imagen, prueba crear un brush usando la imagen, y usa esa imagen en el diálogo. De esa forma el control imagen no interferirá. Yo lo he hecho con bmps, pero supongo que será lo mismo con otras imágenes.

Un saludo.

Re: Controles sobre una imagen

Posted: Wed Jun 20, 2012 6:04 pm
by antolin
Hola César,

la solución de carlos es más o menos la que te hiba a proponer, pero en lugar de un brush, una imagen bmp, png, jpg, etc, pasada al proceso de pintado con el codeblock bPainted del dialogo, tiene la ventaja de que puedes dimensionarla a tu antojo o pintarla con transparencia o blending. Primero la abres (antes que el dialogo) y le pasas el handle al codblock. Al final cuando cierrres el diálogo la borras con DeleteObject() yo siemnpre dibujo mis pantallas así, a veces le paso hasta 10 handle y va rapidísimo. Cuando tienes muchos handles metelos en un array y así lo puedes borrar todos a la vez con AEVAL(Array, { |o| DeleteObject(o)}). Es más, muchas pestañas las implemento mediante bitmaps y las gestiono en el bPainted da resultados muy vistosos.

Re: Controles sobre una imagen

Posted: Wed Jun 20, 2012 6:05 pm
by antolin
Perdón por la falta de ortografía; iba es sin "H", en qué estaría yo pensando...

Re: Controles sobre una imagen

Posted: Fri Jun 22, 2012 1:41 pm
by César E. Lozada
Gracias Carlos y Antolin:

Lo implementé con la que me propuso Carlos, aunque luego también pensé en la solución de Antolin, sobre todo si hay que ajustar la imagen si no cabe en el diálogo. Pero dado que esto no me sucedió usé un brush y logré lo deseado.

Antolín: Lo de la "H" es fácil de inferir: Seguro estabas pensando en los "handles" de las imágenes. :D

Gracias de nuevo.
Cordiales saludos
César Lozada