Autor: André Minhorst, Duisburg
Das Treeview-Steuerelement dient zur hierarchischen Darstellung von Daten. Diese Daten können entweder aus mehreren miteinander verknüpften Tabellen stammen oder einer Tabelle mit rekursiv definierter Beziehung entnommen werden. Der vorliegende Beitrag beschreibt das Treeview-Steuerelement und seine Programmierung. Sie lernen anhand einiger praktischer Beispiele den Umgang mit diesem Steuerelement kennen.
Hinweis
Das im vorliegenden Beitrag vorgestellte ActiveX-Steuerelement ist nicht standardmäßig in Access enthalten. Um das Steuerelement zu verwenden, benötigen Sie entweder die Office Developer-Edition oder eines der Microsoft Entwickler-Tools wie z. B. Visual Studio.
Der bekannteste Anwendungsbereich des Treeview-Steuerelements ist wohl die Ordnerliste im Windows-Explorer. Das Steuerelement gewährleistet hier eine komfortable und übersichtliche Auswahl und Ansicht des gewünschten Ordners.
Es gibt allerdings noch viele weitere Anwendungsmöglichkeiten. Sie können damit beispielsweise ein Unternehmen und dessen Räumlichkeiten abbilden, indem Sie es in unterschiedliche Ebenen aufteilen: z. B. in Standorte, Gebäude, Etagen und Räume. Oder Sie stellen eine rekursiv definierte Beziehung dar, wie im Beitrag “Mitarbeiterverwaltung mit rekursiven Beziehungen” der vorliegenden Ausgabe von “Access im Unternehmen” beschrieben.
Bild 1: Die Tabellen der Beispieldatenbank
Als Beispiel soll eine Firma namens XYZ dienen, die innerhalb Deutschlands an unterschiedlichen Standorten vertreten ist. An jedem Standort gibt es ein oder mehrere Gebäude mit unterschiedlich vielen Räumen.
Das Treeview-Steuerelement soll – ausgehend von den Standorten – zur Auswahl der Gebäude, Räume und Mitarbeiter eingesetzt werden.
Die Beispieldatenbank beinhaltet vier Tabellen zur Eingabe dieser Standorte, Gebäude usw. Bild 1 zeigt das Beziehungsfenster mit dem Datenmodell.
Hinweis
Sie müssen die Tabellenstruktur nicht von Hand nachbilden. Alle im vorliegenden Beitrag vorgestellten Tabellen und Formulare befinden sich auf der Heft-CD der aktuellen Ausgabe von “Access im Unternehmen”.
Um das Treeview-Steuerelement verwenden zu können, müssen Sie es zunächst in das gewünschte Formular einfügen.
Hinweis
Weitere Informationen zum Einfügen von Ac-tiveX-Steuerelementen finden Sie im Beitrag “ActiveX-Steuerelemente einfügen” der vorliegenden Ausgabe.
Nachdem Sie das Steuerelement in das Formular eingefügt und dessen Größe angepasst haben, könnte die Entwurfsansicht wie in Bild 2 aussehen. Anschließend geben Sie dem Steuerelement noch den Namen ocxTreeview.
Bild 2: Das Treeview-Steuerelement in der Entwurfsansicht
Die einzelnen Elemente des Treeview-Steuerelements heißen Nodes (dt.: Knoten). In den folgenden Abschnitten wird gezeigt, wie Sie die einzelnen Nodes mit den Daten der Beispieltabellen füllen können.
Da dies nicht besonders einfach ist, lernen Sie zunächst Schritt für Schritt die wichtigsten Eingaben zum Füllen des Treeview-Objektes kennen und setzen dieses Wissen dann anhand der Beispieldatenbank um.
Aufbau des Treeview-Steuerelements
Das Treeview-Steuerelement bietet die Möglichkeit der strukturierten Darstellung hierarchischer Daten. Es besteht aus einer Reihe von Hauptknoten, die zur Darstellung der Elemente der obersten Ebene der Hierarchie dienen.
Zu jedem der Hauptknoten können unterschiedlich viele untergeordnete Knoten vorhanden sein, die wiederum untergeordnete Knoten besitzen usw.
Das Steuerelement bietet die Möglichkeit, die verschiedenen untergeordneten Ebenen ein- und auszublenden, Einträge zu markieren und verschiedene Aktionen anhand dieser Einträge durchzuführen.
So ist es z. B. denkbar, die Mitarbeiter eines Unternehmens entsprechend der Hierarchie in dem Unternehmen darzustellen und per Doppelklick Detaildaten zu einem Mitarbeiter in einem separaten Formular anzuzeigen.
Prozedur zum Füllen des Baumes
Zum Füllen der Nodes verwenden Sie eine VBA-Prozedur namens BaumFuellen(). Legen Sie die Prozedur im Klassenmodul des Formulars frmTreeview an.
Die Prozedur fügt dem Baum zunächst einen einzigen neuen Knoten ohne weitere Verzweigungen zu.
Deklaration von Bäumen und Knoten
Dazu verwenden Sie die Prozedur aus Quellcode 17. Hier erfolgt zunächst die Deklaration einer Treeview- sowie einer Node-Objektvariablen. Anschließend wird der Treeview-Variablen das Treeview-Steuerelement des Formulars zugewiesen.
Die Nodes-Auflistung
Das Treeview-Objekt enthält eine Auflistung namens Nodes, die sämtliche Node-Elemente beinhaltet. Diese Auflistung wird mit der Methode Clear in der nächsten Anweisung der Prozedur initialisiert.
Schließlich fügt die Prozedur der Auflistung mit der Add-Methode ein erstes Node-Objekt hinzu.
Die Add-Methode verfügt über einige Parameter, die in Tabelle 1 aufgelistet sind. Tabelle 2 beinhaltet eine Liste der Konstanten für die Eigenschaft Relationship.
Private Sub BaumFuellen() Dim Baum As MSComctlLib.Treeview Dim Knoten As MSComctlLib.Node Set Baum = Me.ocxTreeview.Object Baum.Nodes.Clear Set Knoten = Baum.Nodes.Add(Key:="n0001", _ Text:="Knoten1") End Sub
Quellcode 1
Eigenschaft |
Bedeutung |
Key |
Eindeutiger Schlüssel zum Verweis auf den Knoten |
Text |
Angezeigter Text |
Relative |
Schlüssel oder Index des Knotens, auf den sich der in Relationship angegebene Wert bezieht |
Relationship |
Art der Beziehung, falls ein Wert für Relative angegeben ist (mögliche Werte in Tabelle 2) |
Image |
Angezeigtes Bild, wenn Knoten nicht ausgewählt ist |
SelectedImage |
Angezeigtes Bild, wenn Knoten ausgewählt ist |
Tab. 1: Parameter der Add-Methode
Konstante |
Beschreibung |
tvwFirst |
Platzierung als erster Knoten in der Ebene des mit Relative angegebenen Knotens |
tvwLast |
Platzierung als letzter Knoten in der Ebene des mit Relative angegebenen Knotens |
tvwNext |
Platzierung hinter dem mit Relative angegebenen Knoten |
tvwPrevious |
Platzierung vor dem mit Relative angegebenen Knoten |
tvwChild |
Platzierung in der Ebene unterhalb des mit Relative angegebenen Knotens |
Tab. 2: Konstanten für den Parameter Relationship
Hinweis
Der Wert für den Parameter Text der Add-Methode muss als erstes Zeichen einen Buchstaben enthalten, also z. B. n0001 statt 0001.
Damit die Prozedur aus Quellcode 1 auch ausgeführt wird, rufen Sie diese in einer Ereignisprozedur auf, die beim Laden des Formulars ausgelöst wird. Die Ereignisprozedur hat folgendes Aussehen:
Private Sub Form_Load() BaumFuellen End Sub
Hinweis
Weitere Informationen zum Anlegen einer Ereignisprozedur finden Sie im Beitrag “Anlegen von Ereignisprozeduren” in der Ausgabe 1/2002 von “Access im Unternehmen”.
Wenn Sie das Formular nun in der Formularansicht öffnen, erscheint ein Baum mit nur einem einzigen Knoten wie in Bild 3.
Bild 3: Ein Treeview-Steuerelement mit einem einzigen Knoten
Anlegen weiterer Knoten
Wenn Sie nun einen weiteren Knoten in der gleichen Ebene hinzufügen möchten, erledigen Sie dies mit der folgenden Anweisung:
Set Knoten = Baum.Nodes.Add(Key:="n0002", Text:="Knoten2")
Hinzufügen untergeordneter Knoten
Auch das Hinzufügen eines untergeordneten Knotens ist nicht viel komplizierter:
Set Knoten = _ Baum.Nodes.Add(Relative:="n0001", _ Relationship:=tvwChild, _ Text:="Knoten1-1")
Zusätzlich zu der bekannten Anweisung sind hier die beiden Parameter Relative und Relationship erforderlich. Die Parameter geben den übergeordneten Knoten und die Art der Zuordnung an.