Controles sobre una imagen

Controles sobre una imagen

Postby César E. Lozada » Wed Jun 06, 2012 4:09 am

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  Expand view  RUN

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

Postby César E. Lozada » Thu Jun 07, 2012 12:59 pm

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

Re: Controles sobre una imagen

Postby Armando » Thu Jun 07, 2012 2:08 pm

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
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Controles sobre una imagen

Postby César E. Lozada » Thu Jun 07, 2012 2:39 pm

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

Postby Carlos Mora » Mon Jun 11, 2012 9:55 am

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

Re: Controles sobre una imagen

Postby antolin » Wed Jun 20, 2012 6:04 pm

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...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Controles sobre una imagen

Postby antolin » Wed Jun 20, 2012 6:05 pm

Perdón por la falta de ortografía; iba es sin "H", en qué estaría yo pensando...
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Controles sobre una imagen

Postby César E. Lozada » Fri Jun 22, 2012 1:41 pm

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 113 guests