FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Controles sobre una imagen
Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Controles sobre una imagen
Posted: Wed Jun 06, 2012 04: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 (fw): Select all Collapse
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

http://img171.imageshack.us/img171/5163/muestraui.jpg
" alt="" loading="lazy">
Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Re: Controles sobre una imagen
Posted: 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.

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Controles sobre una imagen
Posted: Thu Jun 07, 2012 02: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
Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Re: Controles sobre una imagen
Posted: Thu Jun 07, 2012 02: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

Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Controles sobre una imagen
Posted: Mon Jun 11, 2012 09: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"
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Controles sobre una imagen
Posted: Wed Jun 20, 2012 06: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
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Controles sobre una imagen
Posted: Wed Jun 20, 2012 06: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
Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Re: Controles sobre una imagen
Posted: Fri Jun 22, 2012 01: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

Continue the discussion