Vous nous avez dit à quel point vous souhaitiez disposer d’une fonctionnalité permettant de créer des formulaires dynamiques entièrement adaptés aux besoins de vos utilisateurs finaux. Eh bien, nous vous avons entendu, et 4D v16 R6 now ouvre de nouvelles possibilités avec les formulaires dynamiques! Proposés en avant-première dans 4D v16 R6, les formulaires dynamiques vous permettent de construire vos formulaires de manière programmatique dans un objet ou de les charger à partir d’un fichier texte. Mais cela ne fait qu’effleurer la surface de ce que nous avons concocté pour vous…
Formulaires dynamiques – Exemple de base de données
Formulaire dynamique Avantages
Dans les formulaires dynamiques, l’ensemble du contenu du formulaire – les pages, les objets du formulaire et les propriétés de chaque objet – est décrit dans un format textuel (format JSON). Ainsi, les formulaires dynamiques peuvent être stockés dans un objet ou dans un fichier. Pour une migration en douceur, il est possible d’avoir les deux types de formulaires dans une base de données, c’est-à-dire les formulaires réguliers (stockés dans un format binaire dans le fichier .4DB) et les formulaires dynamiques(stockés sous forme de texte n’importe où sur le disque).
Les formulaires dynamiques peuvent être utilisés avec des applications compilées ou autonomes. L’avantage des nouveaux formulaires par rapport aux formulaires binaires habituels est que vous pouvez les modifier en mettant simplement à jour le fichier JSON… sans avoir à recompiler l’application. Cela vous donne une grande souplesse dans le déploiement.
L’utilisation de formulaires dynamiques présente également d’autres avantages. Avez-vous déjà eu un client qui a demandé de changer la police de caractères de tous les objets du formulaire ? Avec les formulaires dynamiques, c’est aussi simple que d’effectuer un « Rechercher et remplacer » dans un fichier texte !
Imaginons maintenant que vous souhaitiez envoyer un formulaire particulier par courriel à un collègue, il vous suffira d’envoyer un seul fichier texte au lieu de l’ensemble de la base de données. Les formulaires dynamiques permettent également de réutiliser facilement un formulaire dans une autre application sans avoir à le déplacer vers une autre base de données… il suffit de copier/coller un seul fichier et le tour est joué !
Commandes supportant les formulaires dynamiques
Désormais, toutes les commandes 4D qui utilisent un nom de formulaire ont été améliorées pour accepter également une description de formulaire sous forme d’objet ou de chemin de fichier :.
- DIALOG
- FORM SET INPUT
- FORM SET OUTPUT
- OBJECT SET SUBFORM
- OBJECT GET SUBFORM
- FORM LOAD
- Print form
- Current form name
« Exemple « HELLO WORLD
Description du formulaire à partir d’un fichier texte
Prenons un exemple simple avec juste du texte et un bouton :
La description textuelle du formulaire est la suivante :
{ ... 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 } }}] }
Et voici le code pour charger ce formulaire dans un dialogue :
DIALOG ("/RESOURCES/helloWorld.json")
La grammaire est définie par un schéma JSON. La documentation donne également la liste complète des attributs qui peuvent être utilisés dans les formulaires dynamiques, avec des détails sur les attributs pris en charge par chaque objet de formulaire. N’oubliez pas que vous pouvez utiliser la commande JSON Validate pour vérifier que le JSON de votre description de formulaire est conforme au schéma JSON.
Construire un formulaire dans un objet
Maintenant, rendons ce formulaire entièrement dynamique en le construisant uniquement avec du code !
// Build form description
$label:=New object(" type " ; " text " ; " text " ; " Hello World !";"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("objets" ;New object("étiquette" ;$label; "bouton" ;$button))
$form :=New object("pages" ;New collection(Null;$page) ; "windowTitle" ; "Mon premier formulaire dynamique" ; "rightMargin";20 ; "bottomMargin";20)
// Load the form in a dialog
$w:=Open form window($form)
DIALOG (
$form)
Comme vous pouvez le constater, cette méthode vous offre la souplesse nécessaire pour construire vos formulaires en fonction de vos besoins. Une fois que vous avez écrit vos formulaires dans un fichier ou un objet, vous pouvez les utiliser comme vous le feriez avec des formulaires ordinaires.
Qu’en est-il de l’édition des formulaires ?
Pour l’instant, il n’existe aucun mécanisme permettant de modifier vos formulaires dynamiques autrement qu’en utilisant un éditeur de texte. Mais cela ne va pas durer ! Un éditeur de formulaires spécifiquement dédié aux formulaires dynamiques est en cours de développement. Quand ? Restez à l’écoute.