Imaginez que votre base de données contienne plusieurs tables de types ou de catégories. Ces tables sont très simples, ne comportant souvent qu’un identifiant et un champ de texte. Pour les besoins de la démonstration, disons qu’il s’agit d’une base de données de gestion des chaussures. Pour qualifier les produits, nous devons définir leur type, leur couleur, leur motif, leur matériau, leur saison, etc.
Il est fastidieux de gérer chacune de ces tables dans un formulaire de liste et un formulaire de saisie et les méthodes associées. Dans ce cas, l’utilisation d’un formulaire générique est indispensable pour éviter les doublons et simplifier la maintenance.
Et c’est là que les formulaires dynamiques et les pointeurs JSON se révèlent utiles !
Dans ce billet de blog, vous verrez une façon possible de construire des formulaires génériques.
Avec cette base de données, vous pouvez ouvrir cinq boîtes de dialogue différentes, comme indiqué ci-dessous. Mais si vous retournez en mode conception, vous remarquerez que vous ne trouvez aucun formulaire dans le 4D Explorer…
Alors, comment ces formulaires sont-ils créés ?
En suivant les trois étapes décrites ci-dessous :
1. Tout d’abord, nous créons un formulaire de liste que nous enregistrons dans un fichier JSON. Pour les informations spécifiques sur la table et les champs, nous utilisons des pointeurs JSON. Par exemple, disons que nous voulons écrire le nom de la table dans le titre de la fenêtre. Dans le formulaire dynamique, il suffit de le saisir :
"windowTitle": { "$ref": "#/info/table" }
Voici un autre exemple, dans la zone de liste, nous voulons définir la source de données de la colonne, donc nous écrivons :
"dataSource": { "$ref": "#/info/field1" }
2. Ensuite, au moment de l’exécution, lorsque l’utilisateur clique sur l’élément de menu, nous injectons un objet définissant la table, avec les champs que l’utilisateur a choisis.
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. Pour ouvrir le formulaire, rien d’exceptionnel, il suffit d’utiliser la commande Open form window pour ouvrir le formulaire. La seule chose à retenir est que 4D résout les pointeurs JSON lors de l’appel de la commande Open form window commande :
$ref:=Open form window($o;Plain form window)
La même chose peut être faite avec le formulaire de saisie. Et maintenant, essayez-le par vous-même !