Letzte Änderung 13.02.2014
Mit einem XdevTree lassen sich Daten, die miteinander in einer 1:n Beziehung stehen, hierarchisch abbilden. Ein Tree kann in XDEV 5 entweder mit einem speziellen Tree-Assistenten konstruiert, oder mit Hilfe einer selbstreferenzierenden Virtuellen Tabelle erzeugt werden.
Bei der Konstruktion eines Trees mit dem Tree-Assistenten müssen Sie für jede Hierarchie im Tree jeweils eine Virtuelle Tabelle zuweisen. Die Virtuellen Tabellen müssen durch eine 1:n Relation miteinander verknüpft sein.
Die Reihenfolge der Zuweisung der Virtuellen Tabellen muss gemäß der Hierarchie von oben nach unten erfolgen, z.B. 1. Hersteller > 2. Modelle > 3. Fahrzeuge. Die im Tree sichtbaren Einträge werden standardmäßig von der Hauptspalte einer Virtuellen Tabelle ausgelesen, die im VT-Editor festgelegt werden kann. Bei Virtuellen Tabellen mit mehreren Spalten kann im Tree-Assistent jedoch auch eine andere Spalte angegeben werden, aus der die Tree-Einträge ausgelesen werden sollen. Die verwendeten Virtuellen Tabellen müssen nicht zwingend im ER-Diagramm und in der Datenbank vorhanden sein.
●ER-Diagramm HERSTELLER - MODELLE - FAHRZEUGE Die Tree-Einträge werden aus Virtuellen Tabellen ausgelesen, die durch eine 1:n Relation miteinander verknüpft sind.
●Treemodel nach obigem ER-Diagramm Der generierte Tree.
1.Fügen Sie einen XdevTree in die Arbeitsfläche ein. 2.Um den Tree bei der Initialisierung zu füllen, klicken Sie auf Ereignisse > Initialisierung > init. 3.Klicken Sie anschließend im Code-Editor die Anweisung XDEV.FillTree( ), um diese in den Editor einzufügen. 4.Legen Sie nun im folgenden Tree-Assistenten die Virtuelle Tabelle für die oberste Hierarchie fest. Klicken Sie dazu auf und wählen Sie bei Tabelle die Virtuelle Tabelle Hersteller aus. 5.Legen Sie eine weitere Hierarchie fest. Klicken Sie dazu auf und wählen Sie bei Tabelle die Virtuelle Tabelle Modelle aus. 6.Legen Sie abschließend eine dritte Hierarchie fest. Klicken Sie dazu auf und wählen Sie bei Tabelle die Virtuelle Tabelle Fahrzeuge aus. 7.Legen Sie abschließend ein Datenfeld der Virtuellen Tabelle Fahrzeuge fest, das im Tree angezeigt werden soll, z.B. PREIS. 8.Übernehmen Sie die Option Virtuelle Tabelle automatisch füllen. 9.Klicken Sie abschließend auf OK.
In den Eigenschaften bei Ordner-Icon (offen), Ordner-Icon (geschlossen), Eintrag-Icon können Sie jeweils eigene Icons hinterlegen, indem Sie eine Bilddatei per Drag&Drop auf die Eigenschaft ziehen. Unterstützt werden dabei die Bildformate JPG, GIF und PNG.
Um einen Tree dynamisch aufzubauen, müssen Sie dynamisch eine selbstreferenzierende Virtuelle Tabelle füllen und diese mit der Methode setModel( ) übergeben. Bei einer solchen Tabelle sind alle Einträge mit Hilfe einer Parent-ID miteinander verknüpft. Die Methode setModel( ) liegt beim XdevTree in zwei Varianten vor, mit denen Sie einen Tree wahlweise mit einer einzigen oder mit mehreren Roots erzeugen können. Als Root wird der erste Eintrag eines Trees bezeichnet, an dem alle anderen Einträge hängen. Bei relationalen Daten gibt es im Normalfall jedoch keinen einzelnen Root-Datensatz, sondern immer mehrere, sodass meist die setModel( ) Methode mit dem Parameter Boolean MultipleRoots zum Einsatz kommt.
1.Erzeugen Sie eine selbstreferenzierende Virtuelle Tabelle mit Daten die Sie als Tree abbilden möchten. 2.Fügen Sie einen XdevTree in die Arbeitsfläche ein. 3.Wählen Sie im Fenster Ereignisse > Initialisierung > init. 4.Rufen Sie im Code-Editor im Ereignis init die Methode setModel auf, mit der der Tree gezeichnet wird.
●VirtualTable vt - Name der Virtuellen Tabelle, welche die Tree-Daten enthält, z.B. Personen.VT. ●String rootsColName - Name der Spalte (z.B. "parent_id"), die das Objekt (z.B. null) enthält, mit dem die Root identifiziert werden kann. ●Object rootsID - Objekt mit dem die Root identifiziert werden kann, z.B. null. ●String idColName - Name der Spalte, welche die ID der Einträge enthält, z.B. "id". ●Strinig ownerColName - Name der Spalte, welche die ID des übergeordneten Eintrages (Parent) enthält, z.B. "parent_id". ●String captionColName - Name der Spalte, welche den im Tree sichtbaren Eintrag enthält, z.B. "name". Jeder Tree-Eintrag besteht aus dem sichtbaren Eintrag caption und dessen ID, die unsichtbar mitgeführt wird (data). ●String dataColName - Name der Spalte, welche die ID des Tree-Eintrages enthält, die bei allen Tree-Einträgen mitgeführt wird (data), z.B. "id". Jeder Tree-Eintrag besteht aus dem sichtbaren Eintrag caption und dessen ID, die unsichtbar mitgeführt wird (data). ●Boolean MultipleRoots - Mit true gibt es in der Virtuellen Tabelle mehrere Datensätze, die als erste Einträge im Tree angezeigt werden und sich die anderen Datensätze anhängen lassen. Mit false wird der erste Datensatz der Virtuellen Tabelle als erster Eintrag im Tree angezeigt. Alle anderen Datensätze werden an diesen einen Eintrag angehängt. False muss nicht zwingend angegeben werden, da die Methode setModel( ) ohne diesen Parameter dasselbe bewirkt.
●Auswahl-Modus - Hier legen Sie fest, wie Tree-Einträge selektiert werden können, nur einzeln, ganze Abschnitte oder mehrere Abschnitte. ●Erster Eintrag sichtbar - Die Root wird als erster Eintrag im Tree angezeigt, an der alle anderen Einträge hängen. Falls in der Virtuellen Tabelle kein Root-Eintrag vorkommt, kann die Root hierüber ausgeblendet werden. ●Haupt-Handles sichtbar - Beim Root-Eintrag wird ein Button zum Auf- und einklappen des Trees angezeigt. ●Trennlinien anzeigen - Zeichnet zwischen allen Tree-Einträgen eine Trennlinie. ●Komplette Zeilen verwenden - Der Tree-Eintrag nutzt die gesamte Zeile, u.a. für Hervorhebung und Mausklick-Registrierung. ●Ordner-Icon (offen) - Ermöglicht die Zuweisung eines Icons, mit dem der Button zum Öffnen der Tree-Nodes ersetzt wird. Unterstützt werden die Bildformate GIF, JPG und PNG. ●Ordner-Icon (geschlossen) - Ermöglicht die Zuweisung eines Icons, mit dem der Button zum Schließen der Tree-Nodes ersetzt wird. Unterstützt werden die Bildformate GIF, JPG und PNG. ●Eintrag-Icon - Ermöglicht die Zuweisung eines Icons, mit dem das Standard-Icon für Tree-Einträge ersetzt wird. Unterstützt werden die Bildformate GIF, JPG und PNG.
@EventHandlerDelegate void tree_init() { try { XDEV.FillTree(new FillTree() { @Override public void init() { setTree(tree); addGroup(Hersteller.VT,"MARKE",true); addGroup(Modelle.VT,"MODELL",true,Modelle.HERSTELLER_ID,Hersteller.ID); addGroup(Fahrzeuge.VT,"PREIS",true,Fahrzeuge.MODELL_ID,Modelle.ID); } }); } catch(DBException e) { e.printStackTrace(); } }
Gibt den Stammknoten des XdevTrees zurück. ●Rückgabewert: Das Stammverzeichnis des XdevTrees oder null, falls der Tree keinen Knoten besitzt.
Gibt die (erste) ausgewählte XdevTreeNode zurück. ●Rückgabewert: Die selektierte XdevTreeNode.
Klappt bestimmte Knoten und Subknoten des XdevTrees aus, abhängig von der aufgerufenen Überladung.
Wichtigste Überladungen: ●expandAll()
●expandAll(TreeNode node) ●node - Der Knoten, dessen Einträge und Unterknoten ausgeklappt werden sollen.
Klappt alle Knoten des XdevTrees ein.
Die übergebene XdevTreeNode wird ausgeklappt. Unterknoten bleiben unverändert. ●node - Die XdevTreeNode, die ausgeklappt werden soll.
Die übergebene XdevTreeNode wird eingeklappt. Unterknoten bleiben unverändert. ●node - Die XdevTreeNode, die eingeklappt werden soll.
Legt das verwendete Model für diesen XdevTree anhand einer Virtuellen Tabelle fest.
Wichtigste Überladungen: ●setModel(VirtualTable vt, String rootsColumnName, Object rootsID, String idColumnName, String ownerColumnName, String captionColumnName, String dataColumnName, boolean multipleRoots) ●vt - Die Virtuelle Tabelle, welche die Daten für den zu füllenden XdevTree enthält ●rootsColumnName - Der Spaltenname für den Stammknoten ●rootsID - Die ID des Stammknotens ●idColumnName - Der Spaltenname der ID-Spalte. ●ownerColumnName - Der Spaltenname für die Spalte, die den Fremdschlüssel für den übergeordneten Datensatz enthält. ●captionColumnName - Der Spaltenname für die Spalte, welche die Beschriftung der Knoten enthält. ●dataColumnNamevt - Der Spaltenname der Spalte, die die Daten enthält. ●multipleRoots - Legt fest, ob es einen Dummy-Stammknoten mit mehreren Unterstämmen oder nur einen Stammknoten gibt.
●setModel(VirtualTable vt, String rootsColumnName, Object rootsID, String idColumnName, String ownerColumnName, String captionColumnName, String dataColumnName) Diese Überladung nutzt die gleichen Parameter wie die oben beschriebene setModel-Methode, allerdings wird hier der Parameter multipleRoots automatisch als false übergeben.
|