Ejercicios con Velneo


([N3] ereitmann) #61

Gracias por contestar Paco, estas funciones que me pasas, en que manejador de evento hay que ponerlas?, yo tengo un manejador de evento javascript con la señal botón ratón pulsado (sobre el control visor html) cuyo codigo es este:(el nombre del visor es CONTROL)
// Atrapamos todos los clics en enlaces del control visor html
menu = theRoot.dataView().control( ‘CONTROL’ );
menu.setLinkDelegationPolicy( VCWebView.DelegateAllLinks );

Luego tengo el manejador de evento javascript “guardar” tal cual lo pones tu en tu ejemplo de ejercicios de IMPRIMIR HIGHChARTS cuya finalidad es guardar el gráfico jpg en la tabla temporal esta copiado como lo tienes en la ayuda. y funcionaba en la versión 7.19 de velneo

y otro manejador de evento de velneo con la señal link cliked sobre el control visor HTML que carga la variable event_params y a su vez llama al evento guardar para guardar el gráfico.

solo modifique tal como pones en la ayuda de tu ejemplo la linea con el formato file:/// (que no se si lo hice bien)

te paso la modificación y el código evento Events_Param que llama al manejador guardar imagen.
Todo esto funcionaba con la 19 perfectamente, con la 21.1 si lo dejo tal como estaba, se crea el grafico y al hacer clik sobre el link la imagen jpg se crea y se carga en el mismo visor, pero no se guarda.

Hay que modificar algunos de los procesos que tienes en la ayuda? para esta nueva versión
Gracias por tu Tiempo




([N3] pacosatu) #62

Hola ereitmann.

Debes comprobar si Velneo recibe el evento Click() sobre el botón de <imprimir> y que event_params[1] tenga el string Base64.

Las funciones del API que te indico deben ir en el manejador javascript que asigna el código HTML al Visor.

El síntoma en tu caso es que Velneo no se está enterando del Click() porque la función menu.setLinkDelegationPolicy(VCWebView.DelegateAllLinks); no está ejecutada en su sitio correcto.

Saludos
Paco Satué


([N2] rubenxr.yahoo) #63

Buenas tardes Paco, te sabe mal poderme enviar el ejemplo de la búsqueda incremental, lo he visto en ayuda pero no me aclaro, todavía estoy muy verde con la V7.
gracias.


([N3] ereitmann) #64

Hola Paco he cambiado de lugar la ejecución de la función menu.setLinkDelegationPolicy(VCWebView.DelegateAllLinks); que no se ejecutaba en el sitio correcto, al evento que asigna el código html, y elimine el manejador de evento mal asignado que era ratón pulsado. la función anterior se ejecuta justo después que se asigna los valores del control html. pude comprobar secuencialmente que se asigna a la variable CHREF_LINK (la que luego es llamada para guardar el contenido en la tabla temporal para imprimir) el contenido de event_params[1] (antes no ocurría esto),y es el string base 64 pero cuando el evento llama al manejador guardar imagen, aparece un mensaje del vclient diciendo (no se puede establecer la imagen),
He avanzado hasta acá, veo que no se ejecuta el evento guardar imagen o algo me esta faltando de modificar.

la funcion que me pusiste “oVisorHTML.setSourceCode(cHTML, “file:///” + sysCacheClientPath);” en mi caso deberia ser reemplazado oVisorHTML por menu, pero no entiendo que representa cHTML, por eso esta función no la he puesto sera por esto?



([N3] ereitmann) #65

he agregado la función de esta manera pero el problema persiste, donde HTML_CAB es una variable de texto que alimenta el codigo del visor



([N3] pacosatu) #66

Hola ereitmann.

Estás cerca de conseguirlo. Empieza desde cero con un formulario de prueba.
Hay 2 manejadores principales:

  • 1 manejador que coloca el código Html en el Visor (funciones setSourceCode y setLinkDelegationPolicy)
  • Otro manejador, disparado por la señal Link Clicked, que recoge en EVENT_PARAMS[1] la cadena Base64

A la cadena Base64 debes quitarle la parte “file:///data:image/jpeg;base64” antes de pasarla al ByteArray.

Saludos
Paco Satué


([N3] ereitmann) #67

Muchisimas Gracias Paco por tus aportes, faltaba quitar esa parte a la cadena, y ya se puede grabar e imprimir, Una vez mas y te debo tantas!! deberían nombrarte el ÁNGEL DE LA GUARDA DE LOS SUSCRIPTORES!!!


([N4] eic) #68

Hola, Paco.

¿Está apagado el servidor?

Intento conectarme a vatp://v7cloud6.velneo.com:8894 y me da error.

Gracias,


([N4] eduarchap) #69

Saludos ELC

Al parecer ah migrado de servidor, el nuevo es

vatp://c6.velneo.com:16400

Saludos.


([N3] pacosatu) #70

Hola Fran.

Tengo un poco abandonado ese acceso.
De todas formas he actualizado a la nueva versión del Cloud.

Ahora es vatp://c6.velneo.com:16400

Saludos
Paco Satué


([N3] pacosatu) #71

Hola.

El nuevo visor HTML ha traido algunos comportamientos extraños que no se han arreglado en la versión 22.1.

Uno de ellos son las funciones setSourceCode() del API y loadHTML() de QML.
Estas funciones nos permitían cargar de forma dinámica código html al Visor, además de fijar la “Carpeta base” de todos los enlaces de la página (scripts, imágenes, …).

El nuevo Visor trae un menú contextual (QUE NO SE PUEDE QUITAR) con la opción de Recargar.
La opción de Recargar del menu Recarga la página inicialmente cargada en el Visor.
Cuando usamos las funciones setSourceCode() y loadHTML(), la página inicial es precisamente la “Carpeta base” y no el código HTML.
El resultado es que se abre la “Carpeta base” en el Visor permitiendo el acceso al sistema de archivos del equipo.

En fin, un comportamiento nada deseable y que como otras veces, “… será culpa de QT …”.

A la espera de que se solucione este problemilla, he adaptado los ejercicios QML de la rama “QML2 en Velneo 21”.
Ahora se guarda el código HTML del Visor en disco y se carga mediante la propiedad Url del Visor.
El archivo se crea en la misma ruta donde están las librerías JS para poder prescindir de la “Carpeta base”.

Saludos
Paco Satué


([N4] pzsteknics) #72

Hola Paco, he probado tu ejemplo de reproductor de vídeo en QML pero no funciona, al pulsar en el texto no reproduce ¿puede ser el evento onClicked


([N3] pacosatu) #73

Hola pzsteknics

Con alguna actualización de QtQuick ha dejado de funcionar.
Seguramente es un problema del codec utilizado por temas de licencia.

He convertido el video a AVI y ya funciona.

A ver si alguien se anima a diseñar un pequeño reproductor de Video.

Saludos
Paco Satué


([N3] pacosatu) #74

Hola.

He añadido a los ejercicios QML una Calculadora que podremos usar tanto en aplicaciones de escritorio como en dispositivos móviles.
Se podrá mostrar la Calculadora como una Vista, en un formulario Modal o en un Popup.

Se puede usar tanto el ratón como el teclado.

El código QML está disponible en la ram “Tipos QML de QtQuick.Controls / Calculadora”
Que lo disfrutéis.

Saludos
Paco Satué


([N2] overBCN) #75

Muchas gracias por estar siempre allí, ayudando, aportando y dando ideas.
Grande!!


([N3] pacosatu) #76

Hola.

¿ No sabes cómo imprimir un gráfico nativo que aparece en pantalla ? Yo tampoco.
En vReport podemos incrustar un gráfico nativo pero sin posibilidad de personalización por parte del usuario.

Para conseguirlo he tenido que recurrir a QML.
Con QML podemos mostrar el gráfico, personalizarlo dinámicamente, guardarlo en disco e imprimirlo.

Puedes ver el ejercicio en la rama “Tipos QML de QtChart/Grafico QtChart - Imprimir”.

Saludos
Paco Satué


([N3] pacosatu) #77

Hola.

La funcionalidad de la Cámara en Velneo nativo con el control de edición de Dibujo se queda muy corta y además tiene algunos bugs graves.

Por eso no nos queda más remedio que acudir de momento al QML.
Tenéis un ejercicio QML con la Cámara y capturar Fotos en la rama “Tipos QML de QtMultimedia” y ejercicio “Camera - full”.

Se puede probar en móviles con la aplicación:
vatp://pruebas:pruebas@c6.velneo.com:16400/0PS_Rotulo_LED_iapp

Saludos
Paco Satué


([N3] pacosatu) #78

Hola.

Girar una imagen en Velneo nativo no es un tema sencillo sin recurrir a herramientas externas.

Ya teníamos un ejemplo en los ejercicios del editor de código HTML usando el Canvas con el Visor HTML.
Ahora tenéis también un ejercicio de Rotación de imagen en los ejemplos del editor de código QML, rama “Tipos QML de QtQuick - Canvas”.

Se usa el componente Canvas de QML y puede girar la imagen a cualquier ángulo y devolver el resultado en disco o como cadena Base64.

Como es QML puro, el ejercicio funcionará en cualquier plataforma. Bueno, en realidad con iOS, las salidas bruscas de vClient es la tónica general, de momento.

Ahora ya podréis girar la foto de la cámara del móvil cuando no sale con la orientación deseada.
Saludos
Paco Satué


([N3] pacosatu) #79

Hola.

Aunque yo prefiero mostrar los PDF’s con el Visor por defecto del sistema operativo del Usuario, también podemos hacerlo desde Velneo usando alguna librería javascript muy conocida.

En los ejercicios he usado 2 librerías:

  • PDF.JS para mostrar documetos PDF.
  • ViewerJS que muestra documentos PDF usando la anterior librería PDF.JS y además documentos ODF (Open Document Format) usando WebODF.
    Las librerías se descargan en la carpeta de scripts de la solución.

Tenéis ejemplos de ambas librerías en Velneo nativo con el Visor HTML (editor de código HTML) y en QML con los Visores QtWebView y QtWebEngine (Rama Tipos QML de WebView/WebEngine)

Nuestro compañero @bitcodesoft ha publicado una vin con QML usando QtWebEngine y la librería PDF.JS.

De momento tenemos el Visor pero nos falta poder imprimir el documento.
Veremos si en la versión 23 hay algún progreso en este tema.

Espero que lo disfrutéis.
Saludos
Paco Satué


([N3] Juanjo) #80

Como para no disfrutarlo!
Muchas gracias Paco.