Posición de control en formulario ¿Es posible su control?


([N4] ikonos) #1

Estoy intentando poder manejar la posicion en la que se dibuja un control en un formulario en tiempo de ejecución. Entiendo que por el momento establecer la posicion del control (x,y) no es posible de forma nativa en Velneo ¿¿O si es posible??.

Mi verdadero problema es posicionar una imagen (cursor) sobre otra imagen o control. Por ejemplo, (programa para clinicas) imaginar la imagen de un ojo humano en un formulario y sobre esa imagen hay que posicionar un marcador (algo asi '+' como si de un cursor se tratara) al hacer doble click con el mouse y de esa forma obtener ciertas propiedades de ese punto ademas de situar el marcador. Esta claro que ti tuviera acceso de forma nativa a la posición de un control (imagen) el tema estaria solucionado, pero no es asi. La única posiblilidad que he encontrado para emular esta situación es algo retorcida, y no es otra que utilizar la "alquimia de widgets" ya que mediante el CSS de Qt la única propiedad en la que podemos establecer la posición de algo en cualquier punto es la propiedad "position" !pero ojo! esta es la posicion (relativa/absoluta) de un subcontrol dentro de un widget.
Utilizando esta propiedad, para "emular" el comportamiento que quiero he aplicado la metamorfosis de un QSpinBox, haciendo que tenga las dimensones de mi imagen de fondo, poniedo como "background" la imagen "del ojo humano", luego capturo la posicion del raton con EVENT_PARAMS con el dbl_click, y despues dibujo la posición subcontrol "::down-button" cuya imagen hago que sea un "cursor" con la propiedad "position" (el resto de subcontroles los hago desaparecer).

El resultado es como si, tubiera una imagen de fondo sobre la que posiciono un cursor en el punto en el que hago doble_click, como veis un poco rebuscado y totalmente artificial.

¿Alguna otra idea para conseguir el acceso a la posicion de un control, y que no sea necesariamente un subcontrol?

Gracias


([N4] eic) #2

Hola.

Uau, vaya curre!

Se supone que esa funcionalidad (y otras muchas) estarán disponible cuando, como anunció Juan Muñoz Cobos, tengamos disponible la posibilidad de añadir controles creados mediante QML. Pero para esto habrá que esperar.

Saludos,

Fran Varona


([N1] Pepeto) #3

No se exactamente cual es tu objetivo, pero puedes incluir botones dentro de los objetos Dibujo, y conseguiras, como indicas en el ejemplo que al pulsar el botón sobre el Ojo, ejecutar el proceso, evento, accion que consideres oportuno.

un saludo
Jose Luis
http://www.ascsl.com


([N4] ikonos) #4

@Hola Jose Luis,

Tu idea es buena si son pocos los puntos sobre los que clickar, pero yo necesito el mapa de la imagen pixel a pixel, y cada uno de esos pixeles contiene información basica acerca del objeto. Es por eso por lo que capturo la posición del raton (x,y) cada par (x,y) contiene información básica en mi BD, y cuando hago doble click, fijo la posición del subcontrol (que parace un cursor) para posicionar graficamente de cara al usuario todas esas propiedades y acciones que quiero representar en el punto(x,y).

Esta funcionalidad que puede parecer superflua para Velneo es básica para cualquier BD potente en un futuro. Me explico, pensar por ejemplo en un sistema de geolocalización, este no es ni mas ni menos que una gigantesca BD mas un conjunto de imagenes (mapas), y sobre cada punto del mapa (x,y) podemos almacenar toda la infomación que queramos a cerca de ese punto en la BD (latitud, longitud, altimetria, puntos de interes, personas, casas, perros, gatos, coches, Museos, el vCenter, historias clinicas ... en fin lo que nos de la gana). Con velneo nuestra base de datos funcionaria de cine, pero los sencillos metodos graficos para representar mapas, posicionar marcadores y trazas por el momento no estan, y es una lástima por que basta con poder tener acceso a la posición de un control (x,y) y las posibilidades son enormes.

En la vida cotidiana nos encontramos con infinidad de situaciones en las que no solo necesito de una BD para almacenar la información, si no que también necesito geoposicionar la información en una imagen o mapa, para que el usuario asimile y gestione mejor la información. En mi caso lo necesito para el analisis de la imagen de un ojo humano, en la que la cromatografia del iris aporta gran información al medico y este a su vez necesita marcar ciertas regiones o puntos de interes en la imagen o mapa. Y ejemplos y utilidades como esta hay cientos, por ejemplo como ya he mencionado Google Maps, un secillo control ChooseColor en el que eligo el color en una imagen con el diagrama de Matiz-Saturacion, como en el paint, etc ...
Ha llovido mucho desde entonces pero, en mi último año de carrera hice un programa en C para clasificar nubes desde satétite, para el doctorado de un conocido hombre del tiempo de Canal 9 (para los que sean de mi tierra). El satelite nos enviaba el mapa de imagen de varios canales ,infrarojo, NDVI y visible de la peninsula Iberica, cada punto (pixel) como podeis imaginar contenia un valor de 0 a 255 correspondientes a cada canal (esa era la unica BD de la que disponiamos), con ese mapa de información se construian cálculos atmosfericos o indices de vegetación y naturalmente los podiamos asociar a una posición o region en concreto de la Peninsula, por ejemplo el indice de vegetacion, el nivel de nubosidad, el tipo de nubosidad o la probabilidad de lluvia, etc ... sobre una poblacion ¿Os imaginais lo que se hubiera podido hacer si en vez de tener un dato para cada unto de 0 a 255 hubiera tenido la BD de Velneo para pada par (x,y)? ahora lo recuerdo con nostalgia y se me emociona de pensarlo.

Un saludo.

P.D. Realmente yo no se si Velneo tiene consiencia de la potencia que puede llegar a tener unir los metodos gráficos con la BD, espero que lo entiendan.


([N1] Rafael) #5

Has pensado en hacer todo eso mediante un HTML incrustado?.


([N2] bannu) #6

Hombre yo tengo otra solución, una DLL que dibuje sobre el fondo del formulario, las coordenadas las guardas en una tabla y listo.


([N4] ikonos) #7

@rzaragoza,

Es una buena idea, sencilla y lógica. Habria que investigar para ver que Script me posiciona una imagen (cursor o marcador) dentro de otra (imagen o mapa) algo debe haber . Y por otra parte mantendré los procesos de EVENT_PARAMS para capturar el mouse sobre el control HTML y tener acceso geoposicionado a los pares (x,y) en mi BD Velneo y almacenar posición del marcador en Velneo. Esto deberia funcionar, espero que el Script no complique mucho el código para que sea manejable.

Gracias por la idea.


([N4] ikonos) #8

@sonovision,

Si no hay mas remedio es la solución que me quedaba, con dll se puede hacer cualquier cosa, pero prefiero que sea una solucion portable a cualquier plataforma. Por otra parte dada la gran cantidad de información a manejar lo deseable seria el acceso nativo para no alargar el tiempo de respuesta, las dll y los scripts en realidad son parches para una aplicación seria. Esperemos que como nos apuntaba el amigo Fran Varona, esta funcionalidad y otras esten disponibles en un futuro no muy lejano.

Un saludo


([N4] mperez) #9

Esto publicado en el foro de 6.x, hace ya bastante tiempo, igual te da alguna idea.

http://forum.velneo.com/es/viewtopic.php?t=14526&highlight=somatocarta

http://vdomk.blogspot.com/2007/01/somatocarta.html

En su día vi personalmente alguna solución experimental con esta formula realizadas por Domingo Cachuto y su rendimiento era espectacular. De hecho creo que en el Ayto de Valencia, para temas de mantenimiento tienen algo implementado por el en su Gis

Por cierto Ikonos, ya que eres de Valencia, a ver si en la proxima vCena, te dejas ver, nos conocemos y te presento a Domingo. COn el proximo curso avanzado de Mayo , están preparando una. Yo también estoy en Valencia


([N2] bannu) #10

Tal vez te pueda servir esto incrustado en un control HTML:

http://www.bitcodesoft.com/demos/oftalmologic.html


([N4] ikonos) #11

@mperez,
Garcias por la referencia, la idea que apunta domk de utilizar capas en el HTML es una buena solución para lo que pretendo, y se puede estandarizar ya que la superposicion de capas (mapas) es una de las ideas básicas por ejemplo de un sistema de geoposicionamiento ( y no necesariamente me refiero a mapas geograficos). En cuanto a la próxima vCena, gracias por la invitación, pero quizas la próxima vez , ya tengo sufientes compromisos laborales en Mayo y mi mujer y 2 hijos quizas no entiendan tanto absentismo.
Un saludo

@sonovision,
Guauh! Me mola el HTML! ¿pero que es? Flash? ¿me imagino que lo podras modificar a tu gusto? ¿el visor HTML de Velneo lo visualiza bien? si a esta utilidad le añadimos el modelo de capas que apunta mperez el resultado pude ser espectacular. En fin ¿la utilidad es compartible? ¿o la tienes bajo derechos de autor?. Ya sabes mi correo por si lo estimas oportuno.

Un saludo.


([N4] ikonos) #12

@mperez;

Creo que te debo una cerveza!, he probado con calma tu sugerencia y es muy acertada y facil de implementar. He podido componer en tiempo de ejecucion un HTML a mi gusto haciendo uso de la propiedad z-index, de manera que puedo posicionar marcadores en una imagen de fondo con un simple click en las coordenadas del mouse gestionando las capas de la composicion gráfica. Esto soluciona con creces mis necesidades, ya que puedo guardar en mi BD las caracteristicas y propiedades de la composición gráfica de manera que el usuario puede acceder a ella en cualquier momento y modificarla a su gusto. Ademas como el HTML se genera en el cliente, al que le inserto una carpeta de recursos gráficos el rendimiento no se ve mermado ya que los inserta en local el mismo cliente. Esto es lo que queria !!

El único pero que le encuentro es que si necesitara hacer uso de un numero elevado de recursos gráficos y no queremos que esten instalados en el cliente la cosa se compicaria un poco segun sean mis necesidades:
Si los recursos a utilizar son estáticos: referenciamos la URL completa en la Web, penalizará el rendimiento (pero cada vez las conexiones son mas rápidas).
Si los recursos a utilizar son dinámicos y estan alojados en mi BD: Los servimos via vMod Apache, lo que me obliga a tener siempre en servicio un servidor de recursos disponible para que corra la aplicación.
Quizas si algun dia llegan esos controles creados en QML y tengamos acceso nativo pueda ayudar a solucionar y simplificar este último punto.

Gracias Miguel, una vez mas.


([N2] bannu) #13

Es flash, se puede incrustar en un HTML y corre perfectamente en Velneo, como ya sabes flash se ejecuta en Linux, Mac Os y Windows.
El fla tal y como está en el ejemplo te lo puedo pasar, era un trabajo que no continué se tiene que implementar el proceso de pasar los datos desde Velneo a flash y viceversa, se puede realizar:

Interacción flash con Velneo: http://www.bitcodesoft.com/demos/flash/flash.html

Si alguien quiere financiar el proyecto…


([N4] ikonos) #14

@Sonovision,

Te tomo la palabra a cerca del ejemplo ya conoces mi e-mail. Muy ilustrativo el video. Parece que la comunicación esta basada en TCP/IP ¿no?. Y me alegra saber que es posible la interactuacion con Flash.

Por el momento con el modelo de capas de HTML es suficiente para dar funcionalidad a la aplicacion, y no quisiera complicarla demasiado, por que ya sabes que si no nunca acabariamos las aplicaciones y en algun punto debes cortar y cerrar el producto, pero si necesito hechar pimienta llamaré a tu puerta, espero ser bien recibido. Posiblemente en unos meses (6 a 8) deba iniciar un proyecto web al que me gustaria aplicar una Galeria Flash y quizas ese sea el momento de abordar Flash, por que en este momento estoy bastante "pez" en el tema.

Creo que hoy he aprendido varias cosas nuevas y muy buenas, en Velneo para hacer cosas fuera del estandar hay que gastar:
1º comodin = "El control HTML"
2º comodin = "El del público" = " El foro"
3º comodin = "@Sonovision" = "... presente en casi todas las tecnologias ..."

Gracias por tus comentarios y aportes, estas empezando a ser uno de mis referentes tecnológicos en Velneo. Un saludo.


([N4] Paco Satué) #15

Un Tema muy instructivo.

El sitio oficial de velneo dice:
Las QT nos permiten crear entornos y experiencias de usuario muy atractivos (gráficos vectoriales, 3D, multimedia…)

Entonces, ¿ Cómo es posible que un problema tan trivial, como colocar o mover un control del formulario sea tan complicado ?
¿ Para qué necesitamos un nuevo lenguaje QML para tareas tan sencillas ?. Si buscas QML en Velneo, no aparece. Sólo una referencia de un foro externo.
¿ No bastaría con disponer de un Control POLÍGONO en el que definamos mediante un Array las coordenadas X,Y de sus vértices y que podamos mover en tiempo de ejecución?
¿La librería QT no puede hacer una cosa tan simple?
¿Se han olvidado en Velneo que las Aplicaciones empresariales necesitan un mínimo de potencia gráfica?

Lo que deseo es evitar Aplicaciones tipo "Frankestein" con parches gráficos de distintas tecnologías.
En fin, seguiremos evaluando.
Saludos


([N1] lsmsusvilla) #16

Hola sonovision, mirando el tema me gustaria echarle un vistazo a la aplicacion flash para ver si podia implemnetarla en alguna de mis aplicaciones por lo que te pido si fuera podible me la enviases a mi correo. Muchas gracias
l.susvilla@gmail.com


([N2] bannu) #17

Descarga archivo fla: www.bitcodesoft.com/demos/proyecto_oftal.rar


([N1] lsmsusvilla) #18

Ok Sonovision muchas gracias por el aporte para saber hasta donde podemos llegar con velneo.


([N1] Giuseppe::Komenco) #19

Por qué las mejores conversaciones las tenéis cuando me ausento del foro? MALAS PERSONAS!!!!

:D