Comment créer un formulaire générique avec des formulaires dynamiques

Traduit automatiquement de Deepl

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.

Exemple de base de données

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 !

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.