Tree

Previous  Next

 

 

 

01.11.2009

Tree

Für dieses Beispiel benötigen Sie die Beispiel-Datenbank FAHRZEUGE und das Projekt fahrzeuge.xdev

 

clip0237

 

Mit der Komponente Tree können Sie Daten in Form einer Baumstruktur hierarchisch abbilden. In der Praxis wird ein Tree dynamisch mit Daten gefüllt, Sie können jedoch auch im Entwurf manuell Einträge über das Kontextmenü hinzufügen. Der Tree zählt zu den komplexeren GUI-Komponenten in Java. Mit XDEV 2 ist der Aufbau eines Trees Dank eines speziellen Assistenten jedoch sehr einfach.

 

» Daten aus Virtuellen Tabellen «

Ein Tree wird i.d.R. aus mehreren Virtuellen Tabellen gefüllt. Für jede Hierarchie, die Sie im Tree abbilden möchten, benötigen Sie eine eigene Virtuelle Quell-Tabelle, die i.d.R. jeweils mit einer eigenen Datenbankabfrage gefüllt wird. Die Verknüpfung zwischen einer Ober- und Untergruppe erfolgt immer mit Hilfe eines Schlüssels, der sowohl in der Ober- als auch in der Untergruppe vorhanden sein muss. Meistens handelt es sich dabei um eine Datensatz-ID (Primär- und Fremdschlüssel).

 

 

» Verknüpfungen im ER-Diagramm «

Mit dem Tree-Assistenten lässt sich die Füll-Logik sehr schnell und einfach konstruieren. Sie müssen nur festlegen, wie viele Hierarchien Sie anlegen möchten, weisen danach jeder Hierarchie eine Virtuelle Quell-Tabelle zu und geben schließlich noch an, welche Datenfelder die Tree-Einträge enthalten. Der Tree-Assistent prüft automatisch das ER-Diagramm nach bereits vorhandenen Virtuellen Tabellen die miteinander verknüpft sind und bietet bereits bei der Auswahl einer Virtuellen Quell-Tabelle die zusammen gehörenden Fremd- und Primärschlüssel-Felder zur Auswahl an. Bei Virtuellen Tabellen, die Sie nicht im ER-Diagramm miteinander verknüpft haben, müssen Sie die Schlüssel-Felder der Ober- und Untergruppe selber auswählen.

 

clip0461

 

 

1.Fügen Sie einen Tree auf die Arbeitsfläche ein, wechseln Sie in die Code-Ansicht und wählen Sie im Code-Editor das Ereignis hmtoggle_plus1 ON_SHOW ( ) | XDEV NLS: Nach der Darstellung ( ).

 

Datenbankabfrage:

 

2.Fügen Sie eine Datenbankabfrage hmtoggle_plus1 XDEV Query | XDEV NLS: XDEV Datenbankabfrage in den Code-Editor ein und klicken Sie diese an, um den SQL-Assistenten aufzurufen. Selektieren Sie bei der Datenbank-Tabelle FAHRZEUGE die Datenfelder ID, MODELL_ID und PREIS. Wählen Sie bei Ziel (Virtuelle Tabelle) die bereits existierende Virtuelle Tabelle #FAHRZEUGE aus und beenden Sie den SQL-Assistenten mit OK
3.Fügen Sie eine zweite Datenbankabfrage hmtoggle_plus1 XDEV Query | XDEV NLS: XDEV Datenbankabfrage in den Code-Editor ein und klicken Sie diese an, um den SQL-Assistenten aufzurufen. Klicken Sie die Datenbank-Tabelle MODELLE an, um alle Datenfelder dieser Tabelle zu selektieren. Wählen Sie bei Ziel (Virtuelle Tabelle) die bereits existierende Virtuelle Tabelle #MODELLE aus und beenden Sie den SQL-Assistenten mit OK
4.Fügen Sie eine dritte Datenbankabfrage hmtoggle_plus1 XDEV Query | XDEV NLS: XDEV Datenbankabfrage in den Code-Editor ein und klicken Sie diese an, um den SQL-Assistenten aufzurufen. Klicken Sie die Datenbank-Tabelle HERSTELLER an, um alle Datenfelder dieser Tabelle zu selektieren. Wählen Sie bei Ziel (Virtuelle Tabelle) die bereits existierende Virtuelle Tabelle #HERSTELLER aus und beenden Sie den SQL-Assistenten mit OK.

 

 

Tree füllen:

 

5.Fügen Sie die Anweisung Tree füllen in den Code-Editor ein und klicken Sie diese an, um den Tree-Assistenten aufzurufen. Klicken Sie den Tree nochmals an, wenn Sie der folgende Dialog dazu auffordert.
6.Legen Sie die Obergruppe fest. Wählen Sie dazu bei Virtuelle Quell-Tabelle die Virtuelle Tabelle #HERSTELLER aus. Wählen Sie bei Anzeige-Spalte das Datenfeld MARKE aus, sodass die jeweiligen Werte  als Einträge im Tree angezeigt werden. Wählen Sie bei Daten-Spalte das Datenfeld ID aus, sodass zu jedem Tree-Eintrag die jeweilige Datensatz-ID mit gespeichert wird.
7.Legen Sie nun die erste Untergruppe fest. Klicken Sie dazu bei Gruppenwechsel festlegen auf add. Wählen Sie bei Virtuelle Quell-Tabelle die Virtuelle Tabelle #MODELLE aus und übernehmen Sie die vom Assistenten automatisch erkannten Schlüssel-Felder. Wählen Sie bei Anzeige-Spalte das Datenfeld MODELL aus, sodass die jeweiligen Werte als Einträge im Tree angezeigt werden. Wählen Sie bei Daten-Spalte das Datenfeld ID aus, sodass zu jedem Tree-Eintrag die jeweilige Datensatz-ID mit gespeichert wird.
8.Legen Sie die schließlich zweite Untergruppe an. Klicken Sie dazu bei Gruppenwechsel festlegen auf add. Wählen Sie bei Virtuelle Quell-Tabelle die Virtuelle Tabelle #FAHRZEUGE aus und übernehmen Sie die vom Assistenten automatisch erkannten Schlüssel-Felder. Wählen Sie bei Anzeige-Spalte das Datenfeld PREIS aus, sodass die jeweiligen Werte als Einträge im Tree angezeigt werden. Wählen Sie bei Daten-Spalte das Datenfeld ID aus, sodass zu jedem Tree-Eintrag die jeweilige Datensatz-ID mit gespeichert wird.

clip0460

9.Klicken Sie abschließend auf Übernehmen, um den Tree-Assistenten zu schließen.

 

 

Hinweis: Wie bei List- und Comboboxen setzt sich auch ein Eintrag in einem Tree aus einem sichtbaren Wert und dessen Datensatz-ID zusammen, die jedoch nicht sichtbar ist. Ohne die Datensatz-ID lässt sich ein editierter Tree-Eintrag nicht in der Datenbank abspeichern. Das Datenfeld mit den Tree-Einträgen müssen Sie im Tree-Assistenten bei Anzeige-Spalte an, das Datenfeld mit den jeweiligen Datensatz-IDs bei Daten-Spalte.

 

 

 

Tree Füll-Assistent:

 

Option

Erklärung

Gruppenwechsel

festlegen

Hier können Sie einen Gruppenwechsel, sprich eine neue Hierarchie hinzufügen oder entfernen. Jede Hierarchie wird durch einen Zweig im Tree abgebildet.

Virtuelle

Quell-Tabelle

Aus dieser Virtuellen Tabelle werden die Tree-Einträge ausgelesen.

 

Fremdschlüssel

Hier müssen Sie von der Virtuellen Quell-Tabelle das Datenfeld angeben, welches die den Schlüssel enthält, der auf die Obergruppe verweist, z.B. HERSTELLER_ID.

 

clip0461

Schlüssel der

Obergruppe

Hier müssen Sie das ID-Feld der Obergruppe  (Primärschlüssel) angeben, z.B. bei der Virtuellen Tabelle #HERSTELLER das Datenfeld ID.

 

Anzeige-Spalte

Die Werte aus diesem Datenfeld erscheinen als Tree-Eintrag im Tree.

 

Daten-Spalte

Wie bei Einträgen in List- und Comboboxen setzt sich auch ein Tree-Eintrag aus einem sichtbaren Wert und dessen Datensatz-ID zusammen, die jedoch nicht sichtbar ist. Die Datensatz-ID des Eintrages müssen Sie hier angeben. Die Datensatz-ID wird benötigt, um einen geänderten Tree-Eintrag abspeichern zu können.

 

 

 

Spezielle Objekt-Eigenschaften:

 

Eigenschaft

Erklärung

Erster Eintrag

sichtbar

Die Root des Trees kann angezeigt werden oder unsichtbar sein. Nur mit einer unsichtbaren Root können Sie mehrere Hauptzweige darstellen.

 

clip0133

clip0134

Tree mit sichtbarer Root

Tree mit unsichtbarer Root

 

Haupt-Handles

sichtbar

Die Knotenpunkte der Haupteinträge können angezeigt werden oder unsichtbar sein.

 

clip0135

Tree ohne Knotenpunkte

 

Trennlinien anzeigen

Nach jedem Tree-Eintrag kann eine Trennlinie angezeigt werden.

 

Komplette Zeilen

verwenden

Zeichnet die Selektierung eines Tree-Eintrages über die gesamte Breite der Tree-Komponente.

 

clip0136

clip0137

Selektierung über die komplette Zeile

Selektierung nicht über die komplette Zeile

 

 

 

Hinweis: Mit der Komponente DB-Container können Sie ebenfalls Gruppenwechsel realisieren, um Daten hierarchisch abzubilden. Der DB-Container ermöglicht Ihnen sogar die Ausgabe mehrerer Werte in einer Zeile. Zudem lassen sich sogar andere GUI-Komponenten einfügen, z.B. Formular Eingabe- und Auswahlfelder. Allerdings lassen sich die Gruppen eines DB-Containers nicht wie ein Tree zur besseren Übersicht ein- und ausklappen.