Das Treeview-Steuerelement – Basics

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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.

Gleichzeitige Anzeige mehrerer Ebenen

Wenn Sie einige Haupt- und untergeordnete Knoten per VBA angelegt haben, zeigt das Treeview-Steuerelement zunächst nur die oberste Ebene an. Wenn Sie einen Knoten direkt zu Beginn erweitert anzeigen möchten, verwenden Sie die Expanded-Eigenschaft des Knotens:

Baum.Nodes("n0001").Expanded = True

Das Treeview-Steuerelement zeigt nun direkt den erweiterten Knoten an (siehe Bild 4). Das Setzen der Eigenschaft Expanded auf den Wert True wirkt sich nur auf die dem Knoten untergeordnete Ebene aus. Knoten in darunter liegenden Ebenen sind ebenso wenig wie übergeordnete Knoten von dieser Eigenschaft betroffen.

Bild 4: Das Treeview-Steuerelement mit expandiertem Knoten

Entfernen von Knoten

Die Remove-Methode der Nodes-Auflistung dient zum Entfernen eines Knotens. Dabei gibt es unterschiedliche Möglichkeiten, den zu entfernenden Knoten festzulegen.

Die erste Möglichkeit verwendet den Schlüssel des Knotens, um auf diesen zu verweisen:

Baum.Nodes.Remove "n0001"

Sie können auch den Index des zu entfernenden Knotens verwenden:

Baum.Nodes.Remove 1

Der wichtigste Unterschied zwischen diesen beiden Methoden ist, dass beim Entfernen eines Knotens per Index der komplette Index aktualisiert wird, d. h. wenn Sie den Knoten mit dem Index 1 entfernen, enthält der nächste Knoten die 1 als Index usw.

Die Schlüssel werden jedoch beibehalten. Eine weitere Möglichkeit zum Entfernen eines Knotens ist, den gewünschten Knoten zu selektieren und anschließend den selektierten Knoten zu entfernen:

Baum.Nodes.Remove Baum.SelectedItem.Index

Hinweis

Bei allen Aktionen zum Entfernen eines Knotens wird der komplette Zweig gelöscht, also auch alle untergeordneten Knoten.

Selektion von Knoten

Das letzte Beispiel verwendete bereits die Selected-Eigenschaft des Treeview-Steuerelementes, um den selektierten Knoten zu entfernen.

Mit der Selected-Eigenschaft lassen sich nicht nur der Index des ausgewählten Knotens ermitteln, sondern auch alle weiteren Eigenschaften eines Knotens.

Entfernen aller Knoten

Mit der Methode Clear können Sie alle Knoten eines Treeview-Steuerelements löschen. Sie haben die Methode bereits weiter oben kennen gelernt – in Quellcode 1 werden vorsorglich alle Knoten mit der folgenden Anweisung gelöscht:

Baum.Nodes.Clear

Festlegen der Eigenschaften eines Knotens

In der Prozedur BaumFuellen haben Sie den mit der Add-Methode neu erzeugten Knoten jeweils der Objektvariablen Knoten zugewiesen.

Dies ist nicht unbedingt erforderlich. Sie können den Knoten auch auf folgende Weise erstellen:

Baum.Nodes.Add Key:="n0002", Text:="Knoten2"

Die Zuweisung an die Objektvariable benötigen Sie für den Fall, dass Sie dem Knoten noch weitere Eigenschaften zuweisen möchten, die nicht durch die Verwendung der Parameter beim Hinzufügen des Knotens festgelegt wurden.

Daher gibt es zwei Varianten beim Zuweisen von Eigenschaften. Bei der ersten Alternative verwenden Sie die aktuelle Objektvariable des Knotens:

Set Knoten = _    Baum.Nodes.Add(Key:="n0002", _    Text:="Knoten2")
Knoten.Expanded = True

Die zweite Variante greift zur Bestimmung des zu bearbeitenden Knotens auf die Nodes-Auflistung zu und verwendet den Key des Knotens als Identifikationsmerkmal:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar