Ejercicios con Velneo


([N3] pacosatu) #21

Hola Armando.

Tienes acceso a la ayuda del ejercicio pulsando Ctrl+F1.
Dispones del código del objeto Búsqueda y del proceso para gestionar la Rejilla.

Intenta hacer el ejercicio desde el principio y vas preguntando en el foro cosas concretas.
Empieza siempre con objetos sencillos hasta que entiendas la esencia.

Saludos
Paco Satué


([N3] pacosatu) #22

Hola.

He actualizado mi Cloud vServer a la versión Velneo 20.

Ahora es posible probar en tiempo de ejecución tus pequeños ejercicios con QML 2.4.

En la rama “Tus códigos QML” puedes Añadir tu propio código de ejemplo y guardarlo o eliminarlo.

Es un editor de QML para ejemplos sencillos. El código se carga de forma Asíncrona y puede dar problemas con componentes remotos o muy complejos.
El probador del QML es un formulario sin Origen, así que de momento no se pueden usar Listas de Velneo.

Recordad, el acceso directo a los ejercicios es: vatp://pruebas:pruebas@v7cloud6.velneo.com:8894/0PS_Varios_iapp

Saludos
Paco Satué


([N1] Juan) #23

Eres Genial! Gracias


([N3] pacosatu) #24

Hola.

Siguiendo con nuestro aprendizaje de QML2, he añadido nuevos ejemplos al Editor de código QML.
Ahora puedes probar en tiempo de ejecución las nuevas capacidaes gráficas de QML2 en Velneo 20.

He agrupado los ejemplos en los diferentes submódulos de QtQuick para facilitar su estudio.

Ha habido 2 bajas en QML2 desde la salida de Velneo 20:

  • El módulo QML QtWebkit no funciona en Windows, por lo tanto, no disponemos de explorador Web en QML.
    Se está atragantando este control tan importante y esperemos que el nuevo QtWebView mejore el panorama.
  • El submódulo QtQuick.Particles no funciona, una lástima.

Podéis acceder a la carpeta caché de scripts donde está todo el código QML auxiliar.

Aunque no funciona el Visor HTML en Android, se pueden probar algunos ejemplos.
Con el tiempo, prepararé un interface adaptado a tablets Android.

Saludos
Paco Satué


([N3] pacosatu) #25

Hola.

El otro día bitcodesoft nos presentó, aunque de forma poco afortunada, una excelente adaptación de HTML5 + javascript al elemento Canvas de QML2.
Se trataba de la librería javascript http://www.chartjs.org/ para la obtención de gráficos empresariales.
Fué Jorge Hontoria quien citó este y otros enlaces a librerías javascript que son también susceptibles de adaptarse a QML2.

Yo me he animado a probar la adaptación de la librería chartjs y a jugar un poco con los gráficos svg para pintar un reloj escalable en qml.

Para los gráficos, yo uso highcharts con el Visor HTML y de momento no hay comparación. Por supuesto en movilidad es obligatorio disponer de QML2, aunque yo voy a esperar a QTCharts con OpenGL (http://blog.qt.io/blog/2016/01/18/qt-charts-2-1-0-release/).

Yo pienso que debería ser Velneo el que estuviera sacando ejemplos de adaptación de elementos de Velneo nativo o HTML5 al nuevo QML2. Al fin y al cabo son ellos los que deben tener conocimiento de las muchas limitaciones que van saliendo es esta adaptación y nos evitarían muchas horas de prueba y error.

En cualquier caso, seguid disfrutando del nuevo QML2.

Podéis ver los nuevos ejemplos en vatp://pruebas:pruebas@v7cloud6.velneo.com:8894/0PS_Varios_iapp. Están disponibles en la rama Tipos QML QtQuick y Canvas.

Saludos
Paco Satué


([N3] ereitmann) #26

Gracias Paco, Por tus aportes y dedicación a este foro…



([N3] pacosatu) #27

Hola.

Gracias ereitmann, pero no es para tanto. Últimamente hasta me divierto programando con Velneo.

Un buen ejemplo es lo último que he colgado en los ejercicios con QML2 y los Mapas.

Ver la rama “Tipos QML de QTLocation” con el ejemplo de visualizar Coordenadas en el Mapa y navegar a partir de un fichero log NMEA.

Saludos
Paco Satué


([N1] wikan) #28

Buenas Paco.

Confirmado que podemos guardar un canvas en un fichero. El canvas de Qt tiene un método, save(filename). Aunque las rutas por lo menos en Windows hay que especificarlas del tipo “d://imagen.png”.

Estuve probando con tu ejemplo básico de gráficas y aunque cogía el contexto 2d, no me hacía caso a rellenar el fondo de blanco. Se me guardaba el gráfico con el fondo transparente. Pero es un avance para imprimir gráficos.


([N3] pacosatu) #29

Hola Manuel.

Era un tema que tenía pendiente de probar. Ya te contaré los resultados.
Creo que la adaptación de chartjs.org a QCharts.qml no dispone todavía de la parte de ChartOptions (leyenda, título, etc, …).

Espero que vayan apareciendo más proyectos de integración a QML en la parte que nos toca: gráficos (pixel y vectorial), visor html5+javascript+apis, rejillas editables, mapas, calendarios, agendas, estructuras de árbol editables, multimedia básica, etc.

Gracias y saludos
Paco Satué


([N2] pacovte) #30

Pues ya tenemos para entretenernos un buen rato!!.

Gracias Paco.
Efectivamente, con aportaciones de este tipo es como se aprende… a falta de otros recursos.

Felicitaciones!!


([N1] JE) #31

¡ Muchas gracias Paco!.

¡ Un aporte genial!


([N3] pacosatu) #32

Hola Manuel.

He actualizado los ejemplos de graficos en QML2 con el botón de <Imprimir> el canvas a un gráfico PNG.

Para tener un fondo blanco he añadido un rectángulo blanco al canvas:
He añadido en la función clear de QChart.js el siguiente código,


var clear = function(c) {
c.clearRect(0, 0, width, height);

///////////////////////////////////////////////////////////////
// PACOSATU - 30/11/2016 - Fondo blanco para los Charts QML
// Así tenemos un fondo blanco en los PNG's del canvas
c.fillStyle = "white";
c.rect(0, 0, width, height);
c.fill();
///////////////////////////////////////////////////////////////

};

Saludos
Paco Satué


([N1] Manuel) #33

¡¡¡¡INCREIBLE!!!, muchisimas gracias.


([N3] pacosatu) #34

Hola Manuel.

Bueno, habrá que mejorarlo.
En la ayuda pone que el método canvas.save() fuerza un repintado del canvas y por lo tanto dispondríamos de la señal onPainted(), pero no se produce ese evento.
La idea es determinar de forma dinámica si queremos o no un fondo opaco, es decir, si queremos o no queremos transparencia.

También disponemos del método canvas.toDataURL() que nos permitirá usar un VByteArray y no precisa grabar nada en disco.
Con el VByteArray podemos guardar el Base64 en un campo de Tipo texto o pasarlo a binario en un campo de Tipo binario y de esta forma no perdemos la transparencia de los png’s, algo que sí ocurre con los jpg’s del campo Tipo dibujo de Velneo.

Saludos
Paco Satué


([N3] pacosatu) #35

Hola.

Añadido nuevo ejemplo de Dibujo a mano alzada con el Canvas.
De la noche a la mañana hemos recuperado 10 años gracias al nuevo commponente Canvas de QML2.

Al fin una herramienta gráfica imprescindible en nuestras aplicaciones.

Saludos
Paco Satué


([N3] ereitmann) #36

Buenisimo Paco, abusando un poco de ti…si cuando te encuentres aburrido…podrías generar un ejemplo tal como hiciste con Hight charts que ese grafico se guardaba en un jpg en la base de datos (tal vez ahora pdemos gradarlo en otros formatos lo que generemos con qml2) y luego podiamos así echar mano e imprimirlo en un informe?

Gracias


([N3] ereitmann) #37

[quote quote=48995]Buenisimo Paco, abusando un poco de ti…si cuando te encuentres aburrido…podrías generar un ejemplo tal como hiciste con Hight charts que ese gráfico se guardaba en un jpg en la base de datos (tal vez ahora podemos guardarlo en otros formatos lo que generemos con qml2) y luego podíamos así echar mano e imprimirlo en un informe?

Gracias

[/quote]


([N3] pacosatu) #38

Hola ereitmann.

El ejemplo QML guarda el gráfico en la caché del cliente y el formato del gráfico (PNG o JPG) lo determina la extensión del fichero (.png o .jpg).
Por lo tanto, creo que ya sabemos todos cómo guardar el fichero en un campo Dibujo de una tabla y mostrarlo en un Informe.
En el foro hay un montón de hilos sobre este tema.

Como ejemplo, he añadido el siguiente proceso Velneo para que puede ejecutarse desde los ejemplos de Canvas

Rem ( Proceso 0PS_VARIOS_APP/ACC_MOSTRAR_GRAFICO que puede ser llamado desde el ejemplo QML)
Rem ( Obtenemos el Path del gráfico guardado desde QML )
Set ( CPATHFICHERO, $G_PATH_GRAFICO@0PS_Varios_dat.dat )
¿Existe fichero? ( CPATHFICHERO, LOK, )
If ( LOK )
   Rem ( Guardamos el gráfico en una tabla temporal y lo mostramos en el formulario antes de imprimirlo)
   Crear nueva ficha en memoria ( hGraf, GRAFICOS_SEL@0PS_Varios_dat )
      Modificar campo ( NAME, "Gráfico generado desde QML" )
      Importar dibujo ( IMAGEN, CPATHFICHERO, LOK )
   Alta de ficha ( hGraf )
         Pedir formulario ( FRM_HIG_GRAF_SEL@0PS_Varios_app, LOK )
Else
   Mensaje ( "No existe el gráfico " + CPATHFICHERO, Información, , "Imprimir gráfico" )

Saludos
Paco Satué


([N3] ereitmann) #39

Gracias Nuevamente…


([N4] eduarchap) #40

Saludos Paco.

Gracias por tu aporte, solo tengo una duda. Después de capturar la imagen, donde la guarda? o como puedo guardar en algún archivo esa imagen para luego importarla a Velneo?

Saludos