Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
Einführung in Listboxen
|
Befehl Objekteigenschaften | Objekt | Spalten | Kopfteile der Spalten | Fußteile der Spalten | |
OBJECT MOVE | X | ||||
OBJECT GET COORDINATES | X | X | X | X | |
OBJECT SET RESIZING OPTIONS | X | ||||
OBJECT GET RESIZING OPTIONS | X | ||||
OBJECT GET BEST SIZE | X | ||||
OBJECT SET FILTER | X | ||||
OBJECT SET FORMAT | X | X | X | ||
OBJECT SET ENTERABLE | X | ||||
OBJECT SET LIST BY NAME | X | ||||
OBJECT SET TITLE | X | ||||
_o_OBJECT SET COLOR | X | X | X | X | |
OBJECT SET RGB COLORS | X | X | X | X | |
OBJECT SET FONT | X | X | X | X | |
OBJECT SET FONT SIZE | X | X | X | X | |
OBJECT SET FONT STYLE | X | X | X | X | |
OBJECT SET HORIZONTAL ALIGNMENT | X | X | X | X | |
OBJECT Get horizontal alignment | X | X | X | X | |
OBJECT SET VERTICAL ALIGNMENT | X | X | X | X | |
OBJECT Get vertical alignment | X | X | X | X | |
OBJECT SET VISIBLE | X | X | X | X | |
OBJECT SET SCROLLBAR | X | ||||
OBJECT SET SCROLL POSITION | X | ||||
OBJECT SET HELP TIP | X | X | X | ||
OBJECT Get help tip | X | X | X |
Hinweis: Bei Listboxen vom Typ Array lassen sich Stil, Farbe für Schrift oder Hintergrund und Sichtbarkeit für jede Zeile getrennt angeben. Dies wird über Arrays verwaltet, die der Listbox in der Eigenschaftenliste zugewiesen werden. Über den Befehl LISTBOX GET ARRAYS können Sie die Namen dieser Arrays per Programmierung herausfinden.
Sie können eine Objektmethode einem Objekt bzw. einer Spalte der Listbox hinzufügen. Objektmethoden werden in folgender Reihenfolge aufgerufen:
Verwenden Sie den Befehl OBJECT SET VISIBLE mit einem Spaltentitel, gilt er für alle Titel der Listbox, unabhängig vom Titel, der im Befehl übergeben wurde. So blendet die Anweisung OBJECT SET VISIBLE(*;"header3";False) alle Spaltentitel im Objekt Listbox aus, zu denen „header3“ gehört und nicht allein diesen Titel.
Um die Sichtbarkeit dieser Objekte über den Befehl OBJECT SET VISIBLE zu verwalten, müssen sie in der Listbox auf der Ebene des Formulareditors angezeigt werden, d.h. für das Objekt muss in der Eigenschaftenliste die Option Kopfteil anzeigen bzw. Fußteil anzeigen markiert sein.
Die Funktion OBJECT Get pointer wird mit der Konstante Object with focus oder Object current verwendet (früher die Funktionen Focus object und Self). Sie lässt sich in der Objektmethode einer Listbox bzw. einer Spalte der Listbox verwenden. Sie geben einen Zeiger auf die Listbox, die Spalte der Listbox (1) oder die Variable des Kopfteils zurück. Nachfolgende Tabelle zeigt die Funktionsweise im Einzelnen:
Ereignis | Objekt mit Fokus | aktuelles Objekt |
On Clicked | Listbox | Spalte |
On Double Clicked | Listbox | Spalte |
On Before Keystroke | Spalte | Spalte |
On After Keystroke | Spalte | Spalte |
On After Edit | Spalte | Spalte |
On Getting Focus | Spalte oder Listbox (*) | Spalte oder Listbox (*) |
On Losing Focus | Spalte oder Listbox (*) | Spalte oder Listbox (*) |
On Drop | Listbox Quelle | Listbox (*) |
On Drag Over | Listbox Quelle | Listbox (*) |
On Begin Drag Over | Listbox | Listbox (*) |
On Mouse Enter | Listbox (**) | Listbox (**) |
On Mouse Move | Listbox (**) | Listbox (**) |
On Mouse Leave | Listbox (**) | Listbox (**) |
On Data Change | Spalte | Spalte |
On Selection Change | Listbox (**) | Listbox (**) |
On Before Data Entry | Spalte | Spalte |
On Column Moved | Listbox | Spalte |
On Row Moved | Listbox | Listbox |
On Column Resize | Listbox | Spalte |
On Open Detail | Nil | Listbox (**) |
On Close Detail | Nil | Listbox (**) |
On Header Click | Listbox | Kopfteil |
On Footer Click | Listbox | Fußteil |
On After Sort | Listbox | Kopfteil |
(*) Wird der Fokus innerhalb einer Listbox geändert, wird ein Zeiger auf die Spalte zurückgegeben. Wird der Fokus auf der übergeordneten Formularebene geändert, wird ein Zeiger auf die Listbox zurückgegeben. Bei einer Objektmethode einer Spalte wird ein Zeiger auf die Spalte zurückgegeben.
(**) Wird nicht ausgeführt im Kontext einer Objektmethode einer Spalte.
(1) Wird ein Zeiger auf eine Spalte zurückgegeben, richtet sich das angezeigte Objekt nach der Art der Listbox. Bei einer Listbox vom Typ Array gibt die Funktion OBJECT Get pointer einen Zeiger auf die Spalte in der Listbox mit Fokus zurück (z.B. gegen ein Array). Über den Zeiger können Sie die Eintragsnummer des geänderten Array sehen. Nehmen wir an, der Benutzer hat die 5. Zeile in Spalte Sp2 geändert:
$Column:=OBJECT Get pointer(Object with focus)
` $Column enthält einen Zeiger auf Sp2
$Row:=$Column-> `$Row ist gleich 5
Bei einer Listbox vom Typ Auswahl gibt die Funktion OBJECT Get pointer folgendes zurück:
Der Befehl OBJECT SET SCROLL POSITION lässt sich mit einer Listbox verwenden. Er scrollt in den Zeilen, so dass die erste gewählte oder angegebene Zeile angezeigt wird.
Mit dem Befehl EDIT ITEM im Kapitel “Eingabekontrolle” können Sie eine Zelle des Objekts Listbox in den Bearbeitungsmodus setzen.
Wird REDRAW (Kapitel Benutzeroberfläche) auf eine Listbox vom Typ Auswahl angewandt, löst er die Aktualisierung der in der Listbox angezeigten Daten aus.
Hinweis: Der Befehl REDRAW wird mit Listboxen vom Typ Entity-Selection nicht unterstützt.
Die Funktion Displayed line number im Kapitel "Auswahl" funktioniert für Listboxen im Kontext des Formularereignisses On Display Detail.
Es gibt spezifische Formularereignisse zum Verwalten von Listboxen, insbesondere für Drag-and-Drop und Sortieroperationen. Weitere Informationen dazu finden Sie unter der Funktion Form event code.
Drag-and-Drop von Daten in Listboxen wird über die Routinen Drop position und _o_DRAG AND DROP PROPERTIES verwaltet. Sie wurden speziell an Listboxen angepasst.
Achtung! Verwechseln Sie nicht Drag-and-Drop mit Bewegen von Zeilen und Spalten. Dies wird von den Befehlen LISTBOX MOVED ROW NUMBER und LISTBOX MOVED COLUMN NUMBER unterstützt.
Damit eine Zelle der Listbox eingebbar ist, müssen folgende Bedingungen erfüllt sein:
Nehmen wir z.B. eine Listbox mit zwei Arrays, eins vom Typ Datum, das andere vom Typ Text. Das Array Datum ist nicht eingebbar, das Array Text ist eingebbar, solange noch kein Datum übertragen wurde.
Hier ist die Methode zur Spalte arrText:
Case of
:(FORM Event=On Before Data Entry) // eine Zelle erhält den Fokus
LISTBOX GET CELL POSITION(*;"lb";$col;$row)
// Identifikation der Zelle
If(arrDate{$row}<Current date) // ist das Datum früher als heute
$0:=-1 // Zelle ist NICHT eingebbar
Else
// sonst ist Zelle eingebbar
End if
End case
Hinweis: Seit 4D v13 wird das Ereignis On Before Data Entry vor On Getting Focus erzeugt.
Um die Datenkonsistenz für Listboxen vom Typ Auswahl zu bewahren, wird ein geänderter Datensatz gesichert, sobald die Zelle bestätigt wird (falls gesetzt, wird der Trigger On saving an existing record aufgerufen), dann wird das Ereignis On Data Change ausgeführt. Der typische Ablauf der Ereignisse, die beim Eingeben oder Ändern von Daten erzeugt werden, ist wie folgt:
Aktion | Listboxtyp(en) | Ablauf der Ereignisse |
Eine Zelle wechselt in den Bearbeitungsmodus | Alle | On Before Data Entry |
Alle | On Getting Focus | |
Ihr Wert wird geändert | Alle | On Before Keystroke |
Alle | On After Keystroke | |
Alle | On After Edit | |
Ein Benutzer bestätigt und verlässt die Zelle | Listboxen vom Typ Auswahl | Sichern |
Listboxen vom Typ Datensatzauswahl | Trigger On saving an existing record trigger (wenn gesetzt) | |
Listboxen vom Typ Auswahl | On Data Change(*) | |
Listboxen vom Typ Entity-Selection | Entity wird mit Option "automerge" gesichert, optimistisches Sperren (siehe [#title id="9310"/]). Bei erfolgreichem Sichern wird die Entity mit dem zuletzt ausgeführten Update erneuert. Schlägt Sichern fehl, erscheint ein Fehler. | |
Alle | On Losing Focus |
(*) Bei Listboxen vom Typ Entity-Selection gilt mit dem Ereignis On Data Change folgendes:
Hinweis: Für die Dateneingabe in Listboxen vom Typ Collection/Entity-Selection gibt es eine Einschränkung, wenn der Ausdruck als null gewertet wird: der Wert Null in der Zelle lässt sich weder bearbeiten noch entfernen.
Bei Anklicken des Spaltentitels führt die Listbox automatisch eine Standardsortierung der Spalten durch. Das ist die alphanumerische Sortierung der Spaltenwerte in aufsteigender bzw. absteigender Reihenfolge durch aufeinanderfolgende Klicks. Alle Spalten werden immer automatisch aufeinander abgestimmt. Um die Standardsortierung zu unterbinden, deaktivieren Sie für die Listbox die Eigenschaft “Sortierbar”.
Der Entwickler kann über den Befehl LISTBOX SORT COLUMNS bzw. durch Kombinieren der Formularereignisse On Header Click und On After Sort und 4D Befehlen zur Array-Verwaltung eigene Sortierungen einrichten. Weitere Informationen dazu finden Sie unter der Funktion Form event code.
Hinweis: Die Spalteneigenschaft „Sortierbar“ gilt nur für Standardsortierungen des Benutzers. Der Befehl LISTBOX SORT COLUMNS berücksichtigt diese Eigenschaft nicht.
Über den Wert der Variablen für den Spaltentitel können Sie zusätzliche Information verwalten: die aktuelle Sortierung der Spalte im Lesemodus und die Anzeige des Sortierpfeils.
Hinweis: Der Befehl OBJECT SET FORMAT bietet spezifische Unterstützung für Icons in Kopfteilen von Listboxen. Das ist z.B. hilfreich, wenn Sie einen eigenen Icon zum Sortieren verwenden wollen.
Auswahlen werden unterschiedlich verwaltet, je nachdem, ob die Listbox auf einem Array, auf einer Auswahl von Datensätzen oder einer Collection/Entity-Selection basiert.
Hinweis: Über die Funktion Count in array finden Sie die Anzahl der gewählten Zeilen.
Mit der folgenden Methode können Sie die Auswahl der ersten Zeile in der Listbox vom Typ Array invertieren:
ARRAY BOOLEAN(tBListBox;10)
\\tBListBox ist der Name der Listbox Variable im Formular
If(tBListBox{1}=True)
tBListBox{1}:=False
Else
tBListBox{1}:=True
End if
Haben Sie für die Listbox die Option Auswahlmarkierung ausblenden markiert, müssen Sie die Auswahlen der Listbox über verfügbare Oberflächenoptionen sichtbar machen. Weitere Informationen dazu finden Sie im Abschnitt Darstellung von Auswahlen anpassen.
Weitere Informationen dazu finden Sie im Abschnitt Hierarchische Listboxen verwalten.Ab 4D v12 lassen sich Listboxen auch drucken. Es gibt zwei Druckmodi: Vorschau, um eine Listbox wie ein Formularobjekt zu drucken und Erweitert, um direkt das Drucken des Objekts Listbox innerhalb des Formulars zu steuern. Über eine neue Eigenschaft lässt sich die Druckdarstellung für Listbox Objekte festlegen.
In diesem Modus wird die Listbox über die standardmäßigen Druckbefehle oder den Menübefehl Drucken direkt mit dem Formular gedruckt. Die Listbox wird gedruckt, so wie sie im Formular ist. In diesem Modus lässt sich das Drucken des Objekts nicht präzise steuern, so können Sie bei einer Listbox nicht alle Zeilen drucken, wenn sie mehr enthält als angezeigt werden können.
Dieser Modus führt das Drucken von Listboxen über den Befehl Print object per Programmierung aus (Projektformulare und Tabellenformulare werden unterstützt). Über den Befehl LISTBOX GET PRINT INFORMATION lässt sich der Druck des Objekts steuern.
Dieser Modus führt folgendes aus:
Es gibt verschiedene Wege, um Hintergrundfarbe, Schriftfarbe oder -stil für Listboxen zu setzen:
Es gibt auch Regeln für Priorität und Vererbung.
Wird dieselbe Eigenschaft auf mehr als einer Ebene gesetzt, gilt folgende Priorität:
hohe Priorität | Zelle (bei Text mit Mehrfachstil) |
Spalte Arrays/Methoden | |
Listbox Arrays/Methoden | |
Spalteneigenschaften | |
Listbox Eigenschaften | |
niedrige Priorität | Meta Info Ausdruck (für Listboxen vom Typ Collection oder Entity-Selection) |
Setzen Sie z.B. einen Schriftstil in den Listbox Eigenschaften und einen anderen über ein Array Stil für die Spalte, wird der letzte berücksichtigt.
Wir nehmen eine Listbox, in der die Zeilen in den Farben grau/hellgrau wechseln. Das ist in den Eigenschaften der Listbox definiert. Für diese Listbox wurde auch ein Array Hintergrundfarbe gesetzt, um die Farbe der Zeilen in orange zu wechseln, wenn mindestens ein Wert negativ ist:
<>_BgndColors{$i}:=0x00FFD0B0 // orange
<>_BgndColors{$i}:=-255 // Standardwert
Als nächstes wollen wir die Farbe der Zellen mit negativen Werten in dunkelorange setzen. Dazu setzen Sie ein Array Hintergrundfarbe für jede Spalte, zum Beispiel <>_BgndColor_1, <>_BgndColor_2 und <>_BgndColor_3. Die Werte dieser Arrays haben Priorität vor den anderen, die in den Listbox Eigenschaften und im Array Hintergrundfarbe gesetzt wurden:
<>_BgndColorsCol_3{2}:=0x00FF8000 // dunkelorange
<>_BgndColorsCol_2{5}:=0x00FF8000
<>_BgndColorsCol_1{9}:=0x00FF8000
<>_BgndColorsCol_1{16}:=0x00FF8000
Dasselbe Ergebnis erhalten Sie über die Befehle LISTBOX SET ROW FONT STYLE und LISTBOX SET ROW COLOR. Diese haben den Vorteil, dass Sie keine Arrays Stil/Farbe für die Spalten definieren müssen, denn die Befehle erstellen diese Arrays dynamisch.
Für jedes Attribut (Stil, Farbe und Hintergrundfarbe) ist mit dem Standardwert eine Vererbung implementiert:
Soll also ein Objekt den Attributwert einer höheren Ebene erben, können Sie im entsprechenden Befehl oder direkt im Element des Array Stil/Farbe die Konstante lk inherited (Standardwert) übergeben.
Wir nehmen eine Listbox mit einem standardmäßigen Schriftstil mit wechselnden Farben:
Führen Sie folgende Änderungen aus:
Um die ursprüngliche Darstellung der Listbox wiederherzustellen, können Sie folgendes ausführen:
In einer Listbox vom Typ Array können Sie für jede Zeile die Oberflächeneigenschaften "ausgeblendet", "deaktiviert" und "auswählbar" verwenden.
Diese Einstellung wird über die Zeilenkontrolle Array verwaltet, die sie über den Befehl LISTBOX SET ARRAY oder die Eigenschaftenliste setzen können:
Zeilenkontrolle Array muss vom Typ Lange Ganzzahl sein und die gleiche Anzahl Zeilen haben wie die Listbox. Weitere Informationen dazu finden Sie im Abschnitt Eigenschaften für Listboxen.
Jedes Element von Zeilenkontrolle Array setzt den Status der Oberfläche für die entsprechende Zeile in der Listbox. Drei Oberflächeneigenschaften sind über Konstanten unter dem Thema "List Box" verfügbar:
Konstante | Typ | Wert | Kommentar |
lk row is disabled | Lange Ganzzahl | 2 | Die entsprechende Zeile ist deaktiviert. Text und Kontrollkästchen sind gedimmt oder in Grauschrift. Eingebbare Textbereiche sind nicht mehr eingebbar. Standardwert: Aktiviert |
lk row is hidden | Lange Ganzzahl | 1 | Die entsprechende Zeile ist ausgeblendet. Das betrifft nur die Darstellung der Listbox. Ausgeblendete Zeilen sind weiterhin in den Arrays vorhanden und lassen sich per Programmierung steuern. Die Befehle der Programmiersprache, insbesondere LISTBOX Get number of rows oder LISTBOX GET CELL POSITION, ignorieren den Status angezeigt/ausgeblendet von Zeilen. Zum Beispiel gibt in einer Listbox mit 10 Zeilen, von denen 9 ausgeblendet sind, der Befehl LISTBOX Get number of rows 10 zurück. Auf Benutzerseite ist nicht ersichtlich, ob es ausgeblendete Zeilen in der Listbox gibt. Nur sichtbare Zeilen lassen sich auswählen, z.B. über den Befehl Alle auswählen. Standardwert: Sichtbar |
lk row is not selectable | Lange Ganzzahl | 4 | Die entsprechende Zeile ist nicht auswählbar (sie lässt sich nicht markieren). Eingebbare Textbereiche sind nicht länger eingebbar, außer die Option "Einzelklick Editieren" ist aktiviert. Kontrollen wie Optionsfelder und PopUp-Menüs funktionieren jedoch weiterhin. Diese Einstellung wird ignoriert, wenn als Auswahlmodus für Listbox "Nichts" markiert ist. Standard: Auswählbar |
Um den Status für eine Zeile zu ändern, müssen Sie nur die passende Konstante bzw. Konstanten für das entsprechende Array Element setzen. Soll z.B. Zeile 10 nicht auswählbar sein, schreiben Sie folgenden Code:
aLControlArr{10}:=lk row is not selectable
Sie können auch mehrere Oberflächeneigenschaften gleichzeitig definieren:
aLControlArr{8}:=lk row is not selectable+lk row is disabled
Beachten Sie, dass Setzen eines Elements die anderen Optionen für dieses Element aufhebt. Zum Beispiel:
aLControlArr{6}:=lk row is disabled+lk row is not selectable //setzt Zeile 6 auf deaktiviert UND nicht auswählbar
aLControlArr{6}:=lk row is disabled //setzt Zeile 6 auf deaktiviert, aber wieder auswählbar
Haben Sie für die Listbox die Option Auswahlmarkierung ausblenden markiert (siehe Abschnitt Gruppe Darstellung), müssen Sie die Auswahlen der Listbox über verfügbare Oberflächenoptionen sichtbar machen. Da Auswahlen weiter komplett von 4D verwaltet werden, bedeutet das folgendes:
Dann können Sie zur Darstellung der ausgewählten Zeilen spezifische Hintergrundfarben, Schriftfarben bzw. Schriftstile per Programmierung setzen, und zwar über Arrays oder Ausdrücke, je nach Art der angezeigten Listbox (siehe nachfolgende Abschnitte).
Hinweis: Mit der Konstante lk inherited können Sie die aktuelle Darstellung der Listbox gestalten (wie Schriftfarbe, Hintergrundfarbe, Schriftstil, etc.). Weitere Informationen dazu finden Sie im Abschnitt Vererbung.
Um festzulegen, welche Zeilen ausgewählt sind, müssen Sie prüfen, ob sie in der Menge enthalten sind, die über die Eigenschaft Auswahl-Menge der Listbox definert ist:
Dann können Sie die Darstellung der ausgewählten Zeilen über folgende Einträge in der Eigenschaftenliste definieren:
Hinweis: Beachten Sie, dass Ausdrücke automatisch neu bewertet werden, wenn:
Ist die Option Auswahlmarkierung ausblenden markiert, lassen sich Umbruchzeilen nicht hervorheben.
Da für Kopfteile auf derselben Ebene keine unterschiedlichen Farben möglich sind, gibt es keine Möglichkeit, eine spezifische Umbruchzeile per Programmierung hervorzuheben.
Sie müssen die der Listbox zugeordnete Boolean Array Variable analysieren, um festzustellen, ob Zeilen ausgewählt oder nicht ausgewählt sind:
Dann können Sie die Darstellung der ausgewählten Zeilen über ein oder mehrere Arrays definieren, die in der Eigenschaftenliste enthalten sind:
Beachten Sie, dass Listbox Arrays zum Definieren der Darstellung ausgewählter Zeilen während dem Formularereignis On Selection Change neu berechnet werden müssen; diese Arrays können Sie auch über folgende zusätzliche Formularereignisse verändern:
...je nachdem, ob und wie Sie Ändern des Fokus in Auswahlen visuell darstellen wollen.
Die vom System vorgegebene Markierung ist ausgeblendet (siehe Abschnitt Gruppe Darstellung) und die Auswahlen in der Listbox sollen mit grüner Hintergrundfarbe erscheinen. Hierzu ein Beispiel:
Für eine Listbox vom Typ Array müssen Sie den Eintrag Zeilen Hintergrundfarbe Array per Programmierung definieren:
In der Objektmethode der Listbox schreiben Sie:
Case of
:(FORM Event=On Selection Change)
$n:=Size of array(LB_Arrays)
ARRAY LONGINT(_ListboxBackground;$n) // Hintergrundfarbe für Zeile
For($i;1;$n)
If(LB_Arrays{$i}=True) // ausgewählt
_ListboxBackground{$i}:=0x0080C080 // grüner Hintergrund
Else // nicht ausgewählt
_ListboxBackground{$i}:=lk inherited
End if
End for
End case
Für eine Listbox vom Typ Auswahl produzieren Sie denselben Effekt über eine Methode, die den Eintrag Hintergrundfarbe für die in Auswahl-Menge angegebene Menge aktualisiert. Hierzu ein Beispiel:
In der Methode UI_SetColor schreiben Sie:
If(Is in set("$SampleSet"))
$color:=0x0080C080 // grüner Hintergrund
Else
$color:=lk inherited
End if
$0:=$color
Wichtig: Vergessen Sie nicht, die Option Auswahlmarkierung ausblenden zu markieren, um die vom System vorgegebene Markierung zu deaktivieren (siehe oben).
Sie können die Ergebnisse einer SQL-Anfrage direkt in ein Array vom Typ Listbox setzen. So können Sie sich rasch die Ergebnisse von SQL Anfragen ansehen. Es sind nur Suchläufe vom Typ SELECT möglich (siehe Handbuch 4D SQL Reference). Dieser Mechanismus lässt sich nicht mit einer externen SQL Datenbank verwenden.
Dabei gilt folgendes:
Beispiel:
Wir wollen nach allen Datenfeldern der Tabelle [PEOPLE] suchen und den Inhalt mit der Variablen vlistbox in die Listbox setzen. Für die Objektmethode einer Schaltfläche (als eine Möglichkeit) schreiben Sie:
Begin SQL
SELECT * FROM PEOPLE INTO <<vlistbox>>
End SQL
Customize Highlight Color (4D blog)
Download HDI database
Tutoriaux sur les list box
Produkt: 4D
Thema: Listbox
Geändert: 4D v15 R4
Geändert: 4D v16 R2
Geändert: 4D v17
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)