Versión 7.17. Un gran paso en gestión de gráficos


([N3] pacosatu) #1

Hola.

Con la 7.17 se ha superado una importante limitación de Velneo en la gestión de gráficos de cualquier formato y profundidad de color.
Las nuevas funciones del API setFieldByteArray() y setFieldImage() de la clase VRegister nos van a permitir guardar ficheros gráficos en formato binario o como dibujo de Velneo respectivamente.

La función setFieldByteArray() toma cualquier buffer binario desde un objeto VByteArray y lo guarda tal cual en el campo de tipo Objeto Binario. Con esto conseguimos, entre otras cosas, guardar en la tabla Velneo un fichero gráfico conservando todas sus propiedades, formato, transparencia, profundidad de color, …

La función setFieldImage() toma un objeto VImage y lo guarda en el campo de tipo Objeto Dibujo. El gráfico guardado se convierte a un JPEG perdiendo entonces la transparencia.

Las funciones para obtener el fichero Binario o la imagen JPEG son fieldToByteArray() y fieldToImage() respectivamente.

Con esto ya tenemos el ciclo completo de gestión de imágenes sin intervención de ficheros en disco. Por ejemplo, nos puede llegar un imagen como un String Base64 de Internet que convertimos a un objeto VImage con formato PNG, lo guardamos en un campo tipo Objeto Binario. Cuando la aplicación quiera reenviar esa imagen, la obtiene del campo tipo Objeto Binario mediante la función fieldToByteArray() que convierte el fichero a una cadena Base64 para enviarla por Internet. Todo esto sin necesidad de crear ficheros temporales en disco.

Con esto la gestión de vuestros despieces de artículos será un juego de niños.

Ahora solo falta que Velneo se dé cuenta de que no podemos mostrar una imagen cualquiera en el formulario si no está guardada en un campo de tipo Objeto Dibujo.
Nos falta la función setImage(VImage) o setByteArray(VByteArray) del control VImageWidget (imagen estática de Velneo).

Saludos
Paco Satué


([N3] ereitmann) #2

estaria bueno que velneo realice tutores con ejemplos ya que para los que estamos en velneo pero sin conocimiento de javascript podamos ver para que sirve.
cada vez menos velneo y mas javascript ya entonces cámbienle el nombre al producto y que le pongan “javalneo”


([N1] wikan) #3

Velneo te permite hacer de todo sin usar javascript. Javascript es un añadido que le da aún más potencia y hace las cosas más Life is Soft.
Rellenar un registro mediante un JSON, hacer una exportación de todos los campos. Javascript no es una barrera, es una potencia para nuestras aplicaciones.

Javascript es muy sencillo, realmente. Solo un par de clases básicas más las añadidas por Velneo.

Sinceramente creo que aunque cueste un poco ponerse un poco al día con javascript es muy muy bueno. Javascript se mueve en muchísimos ámbitos. Tenemos nodejs, librerías para infinidad de cosas.

Muchas veces dos, tres líneas de javascript te ahorran un proceso engorroso en Velneo.


([N3] ereitmann) #4

Si Wilkan me quejo mas por la frustracion que me genera el desconocimiento…


([N3] pacosatu) #5

Hola ereitmann.

Como dice Manuel, JavaScript es muy sencillo de aprender.
En realidad yo pienso que el que inventó javaScript estaba un poco fumado ese día (léase prototipos, closures, …).
Coge un manual básico y eso será suficiente si tienes buenas nociones de programación estructurada.

La gente está confundiendo contínuamente el API de Velneo con JavaScript. El API es lo que realmente hay que conocer profundamente ya que representa el modelo de Objetos de Velneo y JavaScript (o Phyton, PHP, …) no es más que el lenguaje de script usado para acceder al API. JavaScript sirve para usar el API simplemente porque es capaz de aplicar el paradigma de programación orientada a objetos.

Además, da la casualizad de que JavaScript es muy popular hoy en día por lo que la documentación es inmensa.

Si tu aplicación solo va a tener Rejillas y botones con un diseño muy estático, entonces con Velneo te sobra. Si necesitas gestión dinámica de formularios, multimedia, personalización de interfaz, canvas gráfico, webservices, json/xml, … de momento no tienes más remedio que saberte el API de arriba a abajo y un curso muy básico de JavaScript.

Seguro que en VTutor habrá mucho espacio dedicado al API de Velneo.
Saludos
Paco Satué


([N1] wikan) #6

Buenas Paco,
hasta la 7.15 estaba http://velneo.es/info_v7_715_es/velneo_vdevelop_v7/scripts/clases/vimageedit/

A partir de la 7.16 la página de ayuda no está disponble.
Aunque aquí http://velneo.es/info_v7_717_es/velneo_vdevelop_v7/scripts/clases/core/widget/vabstractbrowser/ aparece pero sin el enlace bien puesto. Si haces un poco ingeniería inversa…tampoco.

En teoría es el objeto imagen, que no es lo mismo que el dibujo estático. No se si te sirve, por lo menos tiene el setImage()


([N3] pacosatu) #7

Hola Manuel.

El enlace es:
http://velneo.es/info_v7_717_es/velneo_vdevelop_v7/scripts/clases/core/widget/vabstractbrowser/vimageedit/

Aunque, como ya he comentado, Velneo no permite editar o mostrar imágenes si no están vinculadas a un campo de tipo Dibujo o incluídas en el proyecto. La función setImage() solo funcionará cuando el control imagen tiene como contenido un campo objeto Dibujo.
En resumen, que no podemos cargar una imagen desde disco y mostrarla en pantalla.
Por eso uso el control Botón, el visor HTML, el control SGV o un formulario QML.

Saludos
Paco Satué


([N1] wikan) #8

Hola Paco,

me aventuro a decirte una idea, teoría. Vamos que no lo he probado.

Creas una tabla en memoria, las dummies que se llamaban en v6, con un campo objecto dibujo.
En el formulario que quieras mostrarla, creas una ficha de extensión y usas el campo objecto dibujo para mostrarla.

Problemas ya de antemano:

  • Hay que tener cuidado con el consumo de memoria, habría que vaciar esa tabla cada x tiempo para que el vClient no crezca.

Es una teoría sin demostrar.


([N3] pacosatu) #9

Hola Manuel.

Gracias por la sugerencia, pero lamentablemente no sirve, porque el campo objeto Dibujo solo es capaz de guardar imágenes jpeg y por lo tanto perdemos el componente de transparencia que pueda tener.

Por esta razón digo que la 7.17 es un gran paso ya que ahora podemos guardar y recuperar archivos gráficos de cualquier tipo en el campo objeto Binario y sin usar ficheros temporales en disco. Solo nos falta un control nativo de Velneo para poder mostrarlos. El control imagem estática es el candidato perfecto.

Saludos
Paco Satué