Imagine que su base de datos contiene varias tablas de tipos o categorías. Estas tablas son muy sencillas, a menudo con sólo un identificador y un campo de texto. A modo de demostración, supongamos que se trata de una base de datos de gestión de calzado. Para calificar los productos, tenemos que definir su tipo, color, patrón, material, temporada, etc.
Es engorroso gestionar cada una de estas tablas en un formulario de lista y un formulario de entrada y métodos asociados. En este caso, el uso de un formulario genérico es esencial para evitar la duplicación y simplificar el mantenimiento.
Y ahí es donde los formularios dinámicos y los punteros JSON son muy útiles.
En esta entrada del blog, verás una posible forma de construir formularios genéricos.
Con esta base de datos, puedes abrir cinco diálogos diferentes, como se muestra a continuación. Pero si vuelve al modo de diseño, notará que no puede encontrar ningún formulario en el Explorador 4D…
Entonces, ¿cómo se crean estos formularios?
En los tres pasos que se describen a continuación:
1. Primero, creamos un formulario de lista que guardamos en un archivo JSON. Para la información específica de la tabla y los campos, utilizamos punteros JSON. Por ejemplo, digamos que queremos escribir el nombre de la tabla en el título de la ventana. En el formulario dinámico, sólo tenemos que introducirlo:
"windowTitle": { "$ref": "#/info/table" }
Aquí hay otro ejemplo, en el cuadro de lista, queremos definir la fuente de datos de la columna, así que escribimos:
"dataSource": { "$ref": "#/info/field1" }
2. Luego, en tiempo de ejecución, cuando el usuario hace clic en el elemento del menú, inyectamos un objeto que define la tabla, con los campos que el usuario ha elegido.
C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json")
$o .
info:=$info
3. Para abrir el formulario, no se requiere nada excepcional, sólo utilizar el Open form window comando. Lo único que hay que recordar es que 4D resuelve los punteros JSON al llamar al Open form window comando:
$ref:=Open form window($o;Plain form window)
Lo mismo se puede hacer con el formulario de entrada. ¡Y ahora pruébalo por ti mismo!