Nos has dicho lo mucho que quieres una función para construir dinámicamente formularios totalmente adaptados a las necesidades de tus usuarios finales. Pues bien, le hemos escuchado y 4D v16 R6 now abre nuevas oportunidades con los formularios dinámicos. Los formularios dinámicos, que se ofrecen como una vista previa en 4D v16 R6, le permiten construir sus formularios de forma programada en un objeto o cargarlos desde un archivo de texto. Pero esto sólo araña la superficie de lo que hemos cocinado para ti…
Formularios dinámicos – Ejemplo de base de datos
Formulario dinámico Ventajas
En los formularios dinámicos, todo el contenido del formulario -páginas, objetos del formulario y las propiedades de cada objeto- se describe en un formato textual (formato JSON). Así, los formularios dinámicos pueden almacenarse en un objeto o en un archivo. Para una migración sin problemas, es posible tener ambos tipos de formularios en una base de datos, es decir, tanto formularios regulares (almacenados en formato binario en el archivo .4DB) como formularios dinámicos(almacenados como texto en cualquier lugar del disco).
Los formularios dinámicos pueden utilizarse con aplicaciones compiladas o independientes. La ventaja de los nuevos formularios frente a los formularios binarios normales es que puede modificarlos simplemente actualizando el archivo JSON… sin tener que recompilar la aplicación. Esto le da una gran flexibilidad en el despliegue.
El uso de formularios dinámicos también tiene otros grandes beneficios. ¿Ha tenido ya un cliente que ha solicitado cambiar la fuente de todos los objetos del formulario? Con los formularios dinámicos, es tan sencillo como hacer una «Búsqueda y Reemplazo» en un archivo de texto.
Ahora digamos que quiere enviar por correo electrónico un formulario concreto a un compañero de trabajo, sólo tiene que enviar un único archivo de texto en lugar de todo el paquete de la base de datos. Los formularios dinámicos también simplifican la reutilización de un formulario en otra aplicación sin la molestia de moverlo a otra base de datos… ¡sólo tienes que copiar/pegar un único archivo y ya está!
comandos que soportan los formularios dinámicos
A partir de ahora, todos los comandos de 4D que utilizan un nombre de formulario han sido mejorados para aceptar también una descripción del formulario como un objeto o una ruta de archivo:.
- DIALOG
- FORM SET INPUT
- FORM SET OUTPUT
- OBJECT SET SUBFORM
- OBJECT GET SUBFORM
- FORM LOAD
- Print form
- Current form name
«Ejemplo de «HOLA MUNDO
descripción del formulario desde un archivo de texto
Tomemos un ejemplo sencillo con sólo texto y un botón:
La descripción textual del formulario es la siguiente:
{ ... list of form parameters ... "pages": [ ... list of form pages ... null, ... page 0 ... { ... page 1 ... "objects": { ... list of form objects in page 1 ... "text": { "type": "text", "text": "Hello World !", "left": 20, "top": 20, "width": 200, "height": 20 }, "button": { "type": "button", "text": "OK", "left": 120, "top": 40, "width": 100, "height": 20 } }}] }
Y aquí está el código para cargar este formulario en un diálogo:
DIALOG ("/RESOURCES/helloWorld.json")
La gramática está definida por un esquema JSON. La documentación también ofrece la lista completa de atributos que pueden utilizarse en los formularios dinámicos, con detalles sobre los atributos que admite cada objeto de formulario. No olvide que puede utilizar el comando JSON Validate para verificar que el JSON en la descripción de tu formulario está de acuerdo con el esquema JSON.
Construir un formulario en un objeto
Ahora, ¡hagamos que este formulario sea totalmente dinámico construyéndolo sólo con código!
// Build form description
$label:=New object("tipo"; "texto"; "texto"; "¡Hola Mundo!";"top";20;"left";20;"width";200;"height";20)
$button :=New object("type";"button";"text";"OK";"top";40;"left";120;"width";100;"height";20)
$page :=New object("objects";New object("label";$label; "button";$button))
$form :=New object("pages";New collection(Null;$page); "windowTitle"; "My first dynamic form"; "rightMargin";20; "bottomMargin";20)
// Load the form in a dialog
$w:=Open form window($form)
DIALOG (
$form)
Como puedes ver, te da la flexibilidad de construir tus formularios según tus necesidades. Una vez que haya escrito sus formularios en un archivo o un objeto, puede utilizarlos igual que los formularios normales.
¿Qué pasa con la edición de los formularios?
Por el momento, no hay ningún mecanismo disponible para editar tus formularios dinámicos que no sea el uso de un editor de texto. Pero esto no durará. Un editor de formularios dedicado específicamente a los formularios dinámicos está en camino. ¿Cuándo? Esté atento.