Lista QML
Se trata de un objeto que sirve para presentar listas de registros de las tablas, en un modelo programado en lenguaje QML.
En el código fuente del fichero QML es obligatorio incluir el objectName: “theListView” para que Velneo alimente el modelo de QML.
En el código QML, el modelo de datos debe tener el nombre theListModel para que Velneo sea capaz de alimentarlo con los registros de la lista.
Este objeto siempre va asociado a una tabla de un proyecto de datos heredado. El flujo es Lista de la tabla asociada tanto para la entrada como para la salida.
Por último, en el código QML hay que declarar la señal selectionChanged(int index) para que Velneo reciba la señal de cambio de elemento seleccionado.
Esta señal debe dispararse cuando en QML cambie el elemento en curso onCurrentIndexChanged.
Para crear un objeto de este tipo seleccionar la opción nuevo objeto/lista QML del menú objetos de Velneo vDevelop o a través de la galería de objetos.
En este objeto podemos hacer scroll con el dedo en dispositivos móviles.
Las propiedades de este objeto son:
Identificador
Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.
El identificador constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.
Nombre
Etiqueta alfanumérica que servirá como descriptor del objeto. Se usará para presentar información del objeto en otros objetos y en los inspectores.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Estilos
Podemos definir los estilos siguientes:
Privado
Limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Arrastrable para copiar
Cuando la lista qml va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados no serán quitados de la misma tras ejecutar el evento de drop.
Arrastrable para mover
Cuando la lista qml va a ser el origen en un evento de drag and drop, si está activado este estilo, en ejecución los items arrastrados serán quitados de la misma tras ejecutar el evento de drop.
Simple-click dispara
Si la lista qml tiene asociado un formulario de modificación, si este estilo está activado al hacer un clic sobre un ítem de la rejilla éste será editado en el formulario correspondiente. Si este estilo está desactivado el usuario tendrá que hacer doble clic para editar la ficha.
Sin barra de título (Sólo diálogos)
Permite omitir la barra de título de la ventana. Solamente funcional en cuadros de diálogo.
Sin menú de sistema
Permite omitir el menú de sistema de la ventana.
Sin botón maximizar
Permite ocultar el botón maximizar de la ventana.
Sin botón minimizar
Permite ocultar el botón minimizar de la ventana.
Sin botón cerrar
Permite ocultar el botón de cierre de la ventana.
Personalizable
Si activamos este estilo, el objeto podrá ser reemplazado por otro del mismo tipo en tiempo de ejecución mediante un objeto reemplazo.
Comentarios
Esta propiedad nos permite documentar el uso del objeto.
Tabla asociada
Tabla de un proyecto de datos heredado cuyos registros van a ser visualizados en la rejilla.
Fichero script qml
En este parámetro seleccionaremos el fichero de script que contenga el código QML que deseamos utilizar. En la ventana de selección del fichero a asociar al control podemos activar la opción aplicar macros. Si se activa lo que se hace es sustituir el id_ref de proyecto por la macro (CurrentProject). De esta forma, cuando movamos el script y el objeto lista QML de un proyecto a otro, la referencia se conservará gracias a la macro, apuntando al fichero correspondiente buscándolo en el proyecto en curso.
Redimensionamiento
En esta propiedad especificaremos el modo en el que será redimensionado el contenido del objeto en función del espacio disponible en la pantalla. Los valores posibles son:
Original QML
Este valor lo usaremos cuando queramos que el objeto tenga un tamaño constante definido en el propio código QML.
Expandir/contraer
El contenido del control donde se use este objeto se expandirá/contraerá según el espacio disponible.
Contenido
En este parámetro, mediante una fórmula especificaremos la cadena de texto a presentar por cada elemento del modelo principal (theListModel), que en el código QML estará declarado con la etiqueta displayEn el código QML Se declarará un elemento Text con el source: display para incluir el texto especificado en esta propiedad.
Url imagen
En este parámetro, mediante una fórmula compondremos la url de la imagen a presentar por cada elemento del modelo principal, junto con el texto, que en el código QML estará declarado con la etiqueta decoration.
En el objeto Lista QML, en las fórmulas de url imagen, referenciaremos las imágenes siguiendo la estructura siguiente:
"image://velneo/?/ALIAS_PROJECT/IDOBJETO/[DATO]"
El carácter marcado con ? puede ser:
D – dibujo: "image://velneo/D/ALIASPRO/IDOBJETO"
I – Icono de tabla estática: "image://velneo/I/ALIASPRO/IDTABLAEST/Campo"
C – Campo objeto dibujo: “image://velneo/C/ALIASPRO/IDTABLA/Campo”
Un ejemplo de fórmula de url imagen para QML podría ser:
Campo objeto dibujo de la ficha en curso o un dibujo si el campo está vacío.
choose(#CARTEL:isEmpty(),
"image://velneo/D/CINE_APP/FILM_128",
"image://velneo/C/CINE_APP/PELICULAS/" + #CARTEL)
O bien con el id del fichero
choose(#CARTEL:isEmpty(),
"image://velneo/D/2btkzgbl.vca/FILM_128",
"image://velneo/C/2btkzgb5.vcd/PELICULAS/" + #CARTEL)
En el código QML se declara un elemento Image con el source: decoration para incluir la imagen de esta propiedad del objeto Lista QML de.
Formulario de alta
Formulario del proyecto en curso o de un proyecto heredado que será usado para dar de alta una ficha desde este objeto.
Formulario de modificación
Formulario del proyecto en curso o de un proyecto heredado que será para editar una ficha desde este objeto. Si en el código QML queremos disparar el formulario de modificación asociado a la lista QML, se debe declarar la señal itemActivated(int index) para poder mostrar el formulario de edición del elemento seleccionado. Ejemplo:
signal itemActivated(int index)
Formulario de baja
Formulario del proyecto en curso o de un proyecto heredado que será para eliminar una ficha desde este objeto.
Tipo de menú de contexto
El menú de contexto es el que aparece cuando el usuario final hace clic con el botón derecho del ratón. Los valores posibles son:
Ninguno
El objeto carecerá de menú de contexto.
Por defecto
El objeto dispondrá de un menú de contexto creado automáticamente por el sistema, que contendrá las opciones siguientes:
Alta de ficha: si el objeto tiene asociado un formulario de altas, lo abrirá para que el usuario pueda añadir una ficha.
Modificación de ficha: editará la ficha seleccionada en el formulario de modificación asociado al objeto.
Baja de ficha: abrirá el formulario de bajas asociado al objeto.
Invertir: invierte el orden de la lista, usando para ello el campo por el que se encuentra ordenada.
Filtrar: permite al usuario establecer y aplicar un filtro al objeto.
Ordenar: permite al usuario ordenar la lista por el campo que elija.
Quitar de la lista el seleccionado: quita del objeto el registro que el usuario tenga seleccionado. No lo borra físicamente, sino que simplemente lo quita de la lista.
Por defecto extendido
El objeto dispondrá de un menú de contexto creado automáticamente por el sistema que, además de las opciones del menú por defecto, incluye las siguientes:
Modificar campo…: permitirá al usuario modificar un campo de todos los registro de la lista.
Modificar campo si…: permitirá al usuario modificar un campo de todos los registro de la lista que cumplan una determinada condición.
Exportar a XML: permitirá al usuario exportar los registros de la lista a un fichero XML.
Personalizado
El menú de contexto del objeto será un objeto menú contenido en el proyecto.
Menú de contexto
Esta propiedad solamente estará disponible cuando el valor de la propiedad tipo de menú de contexto sea personalizado. Nos permitirá seleccionar el objeto menú que queramos usar como menú de contexto del objeto.
Toolbar
Si seleccionamos una toolbar en este parámetro, cada vez que usemos este objeto, éste llevará embebido la toolbar seleccionada, que podrá situarse, o bien encima o bien debajo del objeto.
Timer (Milisegundos)
Es un reloj que permitirá ejecutar automáticamente uno o varios manejadores de evento declarados en el objeto de forma periódica. En este parámetro se indicará el tiempo, en milisegundos, para cada iteración del timer. Si el valor es 0, querrá decir que no se activará el timer.
UserRoles
En una lista QML podemos mostrar una imagen y un texto, mediante el uso de las propiedades url imagen y contenido, respectivamente. Los UserRoles nos permitirán añadir más campos o más información en el objeto QML que programemos.
Identificador
Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.
El identificador constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.
Nombre
Etiqueta alfanumérica que servirá como descriptor del objeto. Se usará para presentar información del objeto en otros objetos y en los inspectores.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Estilos
Podemos definir el estilo privado que limita el acceso del usuario final al sub-objeto desde puntos donde no se haya programado el acceso al mismo.
Comentarios
Esta propiedad nos permite documentar el uso del sub-objeto.
Nombre en QML
En este parámetro indicaremos el nombre que usaremos para referenciar al sub-objeto dentro del código QML.
Contenido
En este parámetro, mediante una fórmula especificaremos la cadena de texto a presentar por cada elemento del modelo auxiliar, que en el código QML estará declarado con la etiqueta display.
AuxModels
En la lista QML inicialmente trabajamos sobre un modelo único, llamado theListModel, que estará alimentado por la lista original.
Los AuxModels o modelos auxiliares nos permitirán declarar otros modelos, para trabajar con otras listas, que podrán estar sincronizadas, o no, con la lista principal.
Las propiedades es este sub-objeto son:
Identificador
Etiqueta alfanumérica que identifica de forma unívoca al objeto dentro del proyecto. Este identificador será el que usemos para referenciarlo en otras propiedades de otros objetos.
El identificador constará de mayúsculas y números exclusivamente. Al identificar de forma unívoca un objeto no puede haber duplicidad.
Nombre
Etiqueta alfanumérica que servirá como descriptor del objeto. Se usará para presentar información del objeto en otros objetos y en los inspectores.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Estilos
Podemos definir el estilo privado que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Comentarios
Esta propiedad nos permite documentar el uso del sub-objeto.
Nombre en QML
En esta propiedad indicaremos el nombre que usaremos para referenciar al modelo dentro del código QML.
Modo de sincronización
En este parámetro indicaremos el modo en el que este modelo auxiliar se sincronizará con el modelo principal. Los valores posibles son:
Manual
Se definirá dentro del código QML cuándo se cargará el modelo auxiliar del modelo principal.
Al inicio
Al cargar el modelo principal, se cargarán todos los modelos auxiliares de todos los registros de la lista. Esta opción, por tanto, puede penalizar la carga del objeto si se trata de listas grandes.
Al cambiar la selección del theListModel
Será Velneo quien realice el cambo de modelo auxiliar a presentar en cuanto reciba la señal de cambio de selección. Se cargará un único modelo auxiliar para todos los registros del modelo principal.
Lista: un modelo para cada ítem de theListModel
Por cada ítem del modelo principal (theListModel) se creará el auxModel y se cargará cuando se reciba la señal de cambio de selección.
Proceso cargador de lista
En este parámetro declararemos el proceso que alimentará el auxModel. El proceso podrá tener como entrada: Una ficha o una lista de la tabla asociada al theListModel o sin origen, y como salida una lista de la tabla que queramos asociar al auxModel.
Contenido
En este parámetro, mediante una fórmula especificaremos la cadena de texto a presentar por cada elemento del modelo auxiliar, que en el código QML estará declarado con la etiqueta display.
En el código QML Se declarará un elemento Text con el source: display para incluir el texto especificado en esta propiedad.
Url imagen
En este parámetro, mediante una fórmula compondremos la url de la imagen a presentar por cada elemento del modelo auxiliar, junto con el texto, que en el código QML estará declarado con la etiqueta decoration.
En QML, en las fórmulas de url imagen, referenciaremos las imágenes siguiendo la estructura siguiente:
"image://velneo/?/ALIAS_PROJECT/IDOBJETO/[DATO]"
El carácter marcado con ? puede ser:
D – dibujo: "image://velneo/D/ALIASPRO/IDOBJETO"
I – Icono de tabla estática: "image://velneo/I/ALIASPRO/IDTABLAEST/Campo"
C – Campo objeto dibujo: "image://velneo/C/ALIASPRO/IDTABLA/Campo"
Un ejemplo de fórmula de url imagen para QML podría ser:
Campo objeto dibujo de la ficha en curso o un dibujo si el campo está vacío.
o bien con el id del fichero
En el código QML se declara un elemento Image con el source: decoration para incluir la imagen de esta propiedad del objeto Lista QML de.
El QML para resolver las imágenes a incluir necesita una senda que puede ser a una fichero o en disco o una URL para que sea servida por un servidor. Cuando lo hacemos para tablas en disco en la fórmula le damos una URL que resuelve vServer que es el encargado de devolver la imagen al QML, sin embargo estoy no es posible hacerlo con tablas en memoria, ya que no disponemos de un servidor que pueda procesar dicha URL, la alternativa pasa por exportar las imágenes de la tabla en memoria a disco y alimentar el QML con las sendas apropiadas para que QML pueda leer las imágenes de disco.
Un auxModel, al igual que el modelo principal, podrá contener userRoles.