Mit 4D v16 R6 wurden dynamische Formulare eingeführt, mit denen Sie Ihre Formulare im laufenden Betrieb erstellen können, indem Sie sie in einem Objekt erstellen oder aus einer Textdatei laden. Dies ist sehr praktisch in einer Welt, in der Formulare häufig geändert werden, um die Anforderungen einer Anwendung zu erfüllen.
In 4D folgt die Eingabereihenfolge sowohl bei binären als auch bei dynamischen Formularen in der Regel einer z-Reihenfolge. Mit 4D v17 R6 können Sie nun eine Eingabereihenfolge definieren, die nicht unbedingt mit der z-Reihenfolge verbunden ist.
Für jede Seite in Ihrer Formulardefinition haben Sie das Attribut „objects“, das eine Liste von Formularelementen enthält, die entsprechend der z-Reihenfolge angeordnet sind. Es wurde ein neues Attribut„entryOrder“ hinzugefügt, mit dem Sie Ihre eigene benutzerdefinierte Eintragsreihenfolge festlegen können. Wenn dieses Attribut undefiniert ist, verwendet 4D die z-Reihenfolge (die im Attribut „objects“ definierte Reihenfolge).
Hier ist ein Beispiel für ein dynamisches Formular mit zwei Eingabefeldern und einer Schaltfläche:
// Create inputs and button
$text1:=New object("type"; "input"; "top";20; "left";140; "width";100; "height";18)
$text2 :=New object("type"; "input"; "top";20; "left";20; "width";100; "height";18)
$button :=New object("type"; "button"; "text"; "OK"; "top";60; "left";140; "width";100; "height";20)
// Create entry order collection
$entryOrder :=New Collection("text2"; "text1")
// Create page with form objects and entry order
$page :=New object("objects";New object("text1";$text1; "text2";$text2; "button";$button); "entryOrder";$entryOrder)
// Create form
$form:=New object("Seiten"; New collection(Null;$page); "windowTitle"; "Mein Formular"; "rightMargin";20; "bottomMargin";20)
// Load the form
$w :=Open form window($form)
DIALOG (
$form)
Dies kann wie folgt dargestellt werden:
{ "pages": [ null, { "objects": { "text1": { "type": "input", "top": 20, "left": 140, "width": 100, "height": 18, "events": ["onClick"] }, "text2": { "type": "input", "top": 20, "left": 20, "width": 20, "height": 18, "events": ["onClick"] }, "button": { "type": "button", "text": "OK", "top": 60, "left": 140, "width": 20, "height": 20, "events": ["onClick"] } }, "entryOrder": [ "text2", "text1" ] } ] }