Controles sobre una imagen

Post Reply
User avatar
César E. Lozada
Posts: 128
Joined: Wed Oct 26, 2005 12:18 pm
Location: Los Teques, Miranda, Venezuela

Controles sobre una imagen

Post 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]
User avatar
César E. Lozada
Posts: 128
Joined: Wed Oct 26, 2005 12:18 pm
Location: Los Teques, Miranda, Venezuela

Re: Controles sobre una imagen

Post 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.
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Controles sobre una imagen

Post by Armando »

César:

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

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
César E. Lozada
Posts: 128
Joined: Wed Oct 26, 2005 12:18 pm
Location: Los Teques, Miranda, Venezuela

Re: Controles sobre una imagen

Post 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
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Controles sobre una imagen

Post 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.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Controles sobre una imagen

Post 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.
Peaaaaaso de foro...
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Controles sobre una imagen

Post by antolin »

Perdón por la falta de ortografía; iba es sin "H", en qué estaría yo pensando...
Peaaaaaso de foro...
User avatar
César E. Lozada
Posts: 128
Joined: Wed Oct 26, 2005 12:18 pm
Location: Los Teques, Miranda, Venezuela

Re: Controles sobre una imagen

Post 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
Post Reply