Sammlungen werden in der 4D Programmierung immer häufiger verwendet. Ab 4D v19 können Sie sie verwenden, um den Inhalt einiger Schnittstellenobjekte zu definieren, auch über die Funktion Form. Dies ist sehr nützlich für das allgemeine Schnittstellenmanagement.
Wir haben auch Verbesserungen bei der Verwendung von Listen vorgenommen. Schauen wir uns das im Detail an!
Verwendung von Sammlungen und Listen in Formularobjekten
Verbesserungen bei der Verwendung von Listen
Die Verwendung von Listen wurde verbessert:
– Hierarchische Listen
– Tab-Steuerelemente (erster Anwendungsfall)
Sammlungen können jetzt als Referenzen mit den folgenden Objekten verwendet werden:
– Dropdown-Listen (auch bekannt als „Pop-up-Listen“)
– Kombinationsfelder
– Tabulator-Steuerelemente (zweiter Anwendungsfall)
Hierarchische Listen und Tabulator-Steuerelemente
Wir haben die Verwendung von Listenreferenzen für Registersteuerelemente und hierarchische Listenformularobjekte verbessert. Es war bereits möglich, die Listenreferenz direkt mit dem Formularobjekt zu verknüpfen, aber diese Referenz kann nun über ein Objektattribut abgerufen werden. Sie können jetzt also Folgendes schreiben :
// create a new object
$o:=New object
// eine Liste zu diesem Objekt hinzufügen
$o .
listRef:=New list
// then add items, icons, etc. to this list
// (…)
// dann den Dialog über dieses Objekt (mit der enthaltenen Listenreferenz) aufrufen
DIALOG ("myForm";$o)
// die Liste löschen, um Speicherlecks zu vermeiden
CLEAR LIST (
$o.listRef)
Geschafft!
Dropdown-Listen (Pop-ups), Kombinationsfelder und Tabulator-Steuerelemente (wieder!)
Die wichtigste Entwicklung betrifft die Sammlungen. Die möglichen Werte der folgenden Formularobjekte können auf einer Sammlung von skalaren Werten (normalerweise alphanumerisch) basieren, genauer gesagt auf einem Objekt, das selbst eine Sammlung enthält. Und warum? Weil es im Allgemeinen notwendig ist, den vom Benutzer gewählten Wert zu kennen und/oder einen Standardwert auszuwählen (erste Registerkarte, drittes Element der Auswahlliste, usw.)
Die Objektvariable wird also die folgenden drei Attribute enthalten:
– values: Sammlung der möglichen Werte
– index: Index des gewählten Elements (in Dropdown-Listen und Registerkarten)
– currentValue: aktueller Wert (für Kombinationsfelder, in denen der Benutzer entweder einen Wert auswählen oder eingeben kann)
Beispiel
Stellen Sie sich vor, Sie möchten ein Dialogfeld wie das unten stehende aufrufen. Aber bevor Sie den Dialog aufrufen, möchten Sie definieren:
- Den Inhalt des Tab Controls mit „Alpha“; „Bravo“; „Charlie“
- Den Titel (und die Möglichkeit, einen einzugeben)
- Die möglichen Auswahlen für „Status“
Jedes dieser Formularobjekte hat denselben Typ von zugehöriger Variable oder Ausdruck: Objekt
// prepare a global object that will be sent to the dialog command
$o:=New object
// prepare the tab control object
$o .oTab:=New object
$o .oTab.values:=New collection("Alpha"; "Bravo"; "Charlie")
$o .oTab.index:=0 // Wählen Sie die Registerkarte "Alpha"
// prepare the Title object
$o .oCombo:=New object
$o .oCombo.values:=New collection("Mr"; "Mz"; "Dr")
$o .oCombo.currentValue:=""
// prepare the Status object
// Tipp: Wenn der Index = -1 ist, wird der currentValue als Platzhalter verwendet!
$o .oPop:=New object
$o .oPop.values:=New collection("Single"; "Verheiratet"; "Verwitwet"; "Geschieden")
$o .oPop.currentValue:="Status auswählen..."
$o .oPop.index:=-1
$win :=Open form window("BLOG")
DIALOG ("BLOG"; $o)
Führen Sie diese Methode aus und füllen Sie den Dialog…
Sobald das Dialogfeld validiert ist (OK wird angeklickt), können Sie feststellen, welcher Titel und welcher Status ausgewählt oder eingegeben wurde.
Hier ist der resultierende JSON-Wert des zurückgegebenen Objekts:
Schlussfolgerung
Die Verwendung eines einzigen Objekts zur sofortigen Definition der angezeigten und ausgewählten Werte ist großartig. Sie können die Sammlungen in vielen Objekten auf einmal verwenden und vermeiden die Verwendung von Prozess- oder Interprozess-Arrays. Natürlich ist auch das Hauptziel erreicht: Die generische Programmierung wird dadurch einfacher als je zuvor.
Wie üblich wird ein HDI Sie durch diese Funktion führen, und die Dokumentation wurde ebenfalls aktualisiert.
Viel Spaß beim Programmieren!