4D v14.3Hierarchische Listboxen verwalten |
||
|
4D v14.3
Hierarchische Listboxen verwalten
Hierarchische Listboxen verwalten
In 4D können Sie hierarchische Listboxen definieren und verwenden. Das ist eine Listbox, in welcher der Inhalt der ersten Spalte in hierarchischer Form erscheint. Diese Art von Darstellung ermöglicht z.B. den Inhalt eines Verzeichnisses anzuzeigen, wie den Finder von Mac OS. Sie ist auch angepasst an die Präsentation von Information, die wiederholte bzw. hierarchisch gegliederte Werte enthält, z.B. Land/Bundesland/Stadt o.ä. Nur Listboxen vom Typ Array können hierarchisch sein. Hierarchische Listboxen sind eine besondere Darstellungsart von Daten. Sie verändern jedoch nicht die Struktur dieser Daten (die Arrays). Hierarchische Listboxen werden exakt wie normale Listboxen verwaltet. Weitere Informationen dazu finden Sie im Abschnitt Einführung in Listboxen. Um eine hierarchische Listbox zu definieren, gibt es folgende Möglichkeiten:
Wird ein Formular mit hierarchischer Listbox zum ersten Mal geöffnet, werden standardmäßig alle Zeilen aufgeklappt. Wird diese Listbox in hierarchischer Form angezeigt (die drei ersten Arrays sind in der Hierarchie enthalten), erhalten Sie folgendes: Die Arrays werden vor dem Aufbau der Hierarchie nicht sortiert. Enthält ein Array z.B. die Daten AAABBAACC, lautet die Hierarchie: > A Um einen hierarchischen Knotenpunkt auf- oder zuzuklappen, klicken Sie darauf. Klicken Sie mit der Tastenkombination Alt+Klick (Windows) oder Wahltaste+Klick (Mac OS) auf den Knoten, werden alle Unterelemente auf- oder zugeklappt. Diese Operationen lassen sich auch per Programmierung über die Befehle LISTBOX EXPAND und LISTBOX COLLAPSE ausführen. Eine hierarchische Listbox zeigt je nach Status eine variable Anzahl Zeilen auf dem Bildschirm, je nachdem ob die hierarchischen Knotenpunkte auf- oder zugeklappt sind. Das bedeutet jedoch nicht, dass die Anzahl der Zeilen variiert. Nur die Anzeige verändert sich, nicht die Daten ansich. Es ist wichtig, dieses Prinzip zu verstehen, weil die programmierte Verwaltung hierarchischer Listboxen immer auf den Daten der Arrays basiert und nicht auf den angezeigten Daten. Speziell die automatisch hinzugefügten Umbruchzeilen werden im Array mit den Anzeigeoptionen nicht berücksichtigt. Weitere Informationen dazu finden Sie im späteren Abschnitt “Umbruchzeilen verwalten”. Nehmen wir z.B. folgende Arrays: Beim Anzeigen in hierarchischer Form erscheint der Eintrag "Freising" nicht in der zweiten, sonderen in der vierten Zeile, weil zwei Umbruchzeilen hinzugefügt werden: Unabhängig von der Darstellung der Daten in der Listbox (hierarchisch oder nicht), wollen Sie die Zeile mit "Freising" in Fettschrift setzen, müssen Sie die Anweisung Stil{2} = bold schreiben. Denn es wird nur die Position der Zeile in den Arrays berücksichtigt. Dieses Prinzip gilt für interne Arrays. Sie können damit folgende Elemente verwalten:
Um z.B. die Zeile mit Rosenheim auszuwählen, müssen Sie folgendes übergeben: ->MyListbox{3}:=True Nicht-hierarchische Darstellung: Hierarchische Darstellung: Hinweis: Sind eine oder mehrere Zeilen ausgeblendet, weil das übergeordnete Element zugeklappt ist, sind sie nicht mehr ausgewählt. Nur sichtbare Zeilen lassen sich auswählen, sei es direkt oder durch Scrollen. Mit anderen Worten, Zeilen können nicht gleichzeitig ausgeblendet und ausgewählt sein. Analog zu Auswahlen gibt der Befehl für eine hierarchische bzw. eine nicht-hierarchische Listbox denselben Wert zurück. Das bedeutet, dass dieser Befehl in beiden nachfolgenden Beispielen dieselbe Position zurückgibt, nämlich: (3;2) Nicht-hierarchische Darstellung: Hierarchische Darstellung: Wählt der Benutzer eine Umbruchzeile, gibt das erste Auftreten der Zeile im entsprechenden Array an. Für das folgende Array: gibt die Position (2;4) zurück. Um eine Umbruchzeile per Programmierung auszuwählen, müssen Sie den Befehl verwenden. Umbruchzeilen werden in internen Arrays zur Verwaltung der grafischen Darstellung von Listboxen (Stilarten und Farben) nicht berücksichtigt. Sie können die Merkmale für Umbruchzeilen jedoch über die Befehle zur grafischen Verwaltung von Objekten (im Kapitel ) verändern. Dazu müssen Sie nur die entsprechenden Befehle für die Arrays ausführen, welche die Hierarchie enthalten. Nehmen wir z.B. nachfolgende Listbox (die Namen der zugewiesenen Arrays sind in Klammern angegeben): Nicht-hierarchische Darstellung: Hierarchische Darstellung: Im hierarchischen Modus werden Umbruchzeilen nicht von den Arrays für Stiländerungen mit Namen tStyle und tColor berücksichtigt. Um Farbe oder Stil von Umbruchebenen zu ändern, müssen Sie folgende Anweisung ausführen: OBJECT SET RGB COLORS(T1;0x0000FF;0xB0B0B0) Hinweis: In diesem Kontext kann nur die Syntax, welche die Array Variable enthält, mit den Befehlen für Objekteigenschaften funktionieren, da die Arrays keine zugewiesenen Objekte haben. Ergebnis: Sind alle Zeilen einer Unterhierarchie ausgeblendet, wird die Umbruchzeile ebenfalls ausgeblendet. Werden in Beispiel Deutschland die Zeilen 1 bis 3 ausgeblendet, erscheint die Umbruchzeile "Bayern" nicht. Sie können Anzeigen und Arbeiten mit hierarchischen Listboxen mit den beiden Formularereignissen On Expand und On Collapse optimieren. Eine hierarchische Listbox wird mit dem Inhalt seiner Arrays aufgebaut, es kann also nur angezeigt werden, wenn all diese Arrays in den Speicher geladen sind. Das erschwert den Aufbau umfangreicher hierarchischer Listboxen über Arrays, die aus Daten generiert werden (mit dem Befehl SELECTION TO ARRAY), nicht nur in Bezug auf die Anzeigegeschwindigkeit, sondern auch in Bezug auf den verwendeten Speicher. Diese Einschränkungen können Sie über die Formularereignisse On Expand und On Collapse aufheben. Sie können z.B. nur einen Teil der Hierarchie anzeigen und die Arrays gemäß Benutzeraktionen unmittelbar laden/entladen. In diesem Fall müssen Sie Arrays über den Code füllen und leeren. Die Funktionsweise ist wie folgt:
|
EIGENSCHAFTEN
Produkt: 4D SIEHE AUCH
Einführung in Listboxen ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v14 R2) Geerbt von : Hierarchische Listboxen verwalten ( 4D v12.4) |