Wie man ein allgemeines Formular mit dynamischen Formularen erstellt

Automatisch übersetzt von Deepl

Stellen Sie sich vor, dass Ihre Datenbank mehrere Tabellen mit Typen oder Kategorien enthält. Diese Tabellen sind sehr einfach und bestehen oft nur aus einem Bezeichner und einem Textfeld. Nehmen wir zur Veranschaulichung an, es handelt sich um eine Datenbank zur Verwaltung von Schuhen. Um die Produkte zu qualifizieren, müssen wir ihren Typ, ihre Farbe, ihr Muster, ihr Material, ihre Jahreszeit usw. definieren.

Es ist mühsam, jede dieser Tabellen in einem Listenformular und einem Eingabeformular und den dazugehörigen Methoden zu verwalten. In diesem Fall ist die Verwendung eines generischen Formulars unerlässlich, um Doppelarbeit zu vermeiden und die Pflege zu vereinfachen.

Und genau hier kommen dynamische Formulare und JSON-Zeiger ins Spiel!

In diesem Blogbeitrag sehen Sie eine Möglichkeit, generische Formulare zu erstellen.

Datenbank-Beispiel

Mit dieser Datenbank können Sie fünf verschiedene Dialogfelder öffnen, wie unten gezeigt. Wenn Sie jedoch in den Entwurfsmodus zurückkehren, werden Sie feststellen, dass Sie keine Formulare im 4D Explorer finden…

Wie werden diese Formulare also erstellt?

In den drei unten beschriebenen Schritten:

1. Zunächst erstellen wir ein Listenformular, das wir in einer JSON-Datei speichern. Für die spezifischen Informationen über Tabellen und Felder verwenden wir JSON-Zeiger. Nehmen wir zum Beispiel an, wir wollen den Tabellennamen in den Fenstertitel schreiben. Im dynamischen Formular müssen wir ihn nur eingeben:

"windowTitle": { "$ref": "#/info/table" }

Hier ein weiteres Beispiel: Im Listenfeld wollen wir die Datenquelle der Spalte definieren, also schreiben wir:

"dataSource": { "$ref": "#/info/field1" }

2. Dann, zur Laufzeit, wenn der Benutzer auf den Menüpunkt klickt, injizieren wir ein Objekt, das die Tabelle mit den vom Benutzer ausgewählten Feldern definiert.

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. Um das Formular zu öffnen, ist nichts Besonderes erforderlich, verwenden Sie einfach den Open form window Befehl. Das Einzige, was Sie beachten müssen, ist, dass 4D die JSON-Zeiger auflöst, wenn Sie den Open form window Befehls auflöst:

$ref:=Open form window($o;Plain form window)

Das Gleiche kann mit dem Eingabeformular gemacht werden. Und nun probieren Sie es selbst aus!

Vanessa Talbot
Product Owner - Vanessa Talbot kam im Juni 2014 zum 4D Programmteam. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Seit ihrer Ankunft hat sie an der Definition der wichtigsten Funktionen in 4D gearbeitet. Sie hat an den meisten der neuen Funktionen für präemptives Multi-Threading gearbeitet und auch an einem sehr komplexen Thema: der neuen Architektur für erstellte Anwendungen. Vanessa hat einen Abschluss von der Telecom Saint-Etienne. Sie begann ihre Karriere am Criminal Research Institute als Entwicklerin für die audiovisuelle Abteilung. Sie hat auch in den Bereichen Medien und Medizin als Expertin für technischen Support, Produktion und die Dokumentation neuer Funktionen gearbeitet.