Zusammenfassung
Erstellen Sie professionelle Benutzeroberflächen mit dem Treeview-Steuerelement.
Techniken
Formulare, Treeview-Steuerelement, VBA
Voraussetzungen
Access 2002 und höher oder Access 97/2000 und Developer Edition oder Visual Studio 6.0
Beispieldateien
Treeview2002.mdb
Das Treeview-Steuerelement
André Minhorst, Duisburg
Access kommt mit einer Menge nützlicher Steuerelemente. Einige wichtige Controls sind jedoch den Besitzern von VB6 oder den Developer-Versionen von Office vorbehalten, da für deren Weitergabe eine Lizenz erforderlich ist. Dazu gehört auch das Treeview-Steuerelement. Oder doch nicht? Unbemerkt von weiten Teilen der Access-Entwicklergemeinde hat Microsoft die Bibliothek MSCOMCTL.OCX zum festen Bestandteil von Office gemacht. Ein Grund mehr, das Treeview-Steuerelement einmal genauer unter die Lupe zu nehmen ...
Lizenz oder nicht?
Entsprechend der Philosophie von Access im Unternehmen, möglichst keine Tools und Anwendungen in Beiträge einzubeziehen, die zusätzliche Kosten erzeugen (Betriebssystem und Access-Software ausgenommen), ist das Treeview-Steuerelement bisher etwas kurz gekommen. Seit Ewigkeiten herrscht nämlich die Legende, dass die Datei MSCOMCTL.OCX und damit das Treeview-Steuerelement nur in speziellen Entwickler-Paketen enthalten ist und nur mit einer entsprechenden Lizenz weitergegeben werden darf. Da diese Bibliothek aber seit Access 2002 fester Bestandteil der Office-Professional-Pakete ist, kann man die enthaltenen Steuerelemente sorglos in einer Anwendung verwenden, wenn auf dem Zielrechner auch die entsprechende Access-Version installiert ist.
Weitere Informationen zu den unterschiedlichen Versionen der Datei MSCOMCTL.OCX erhalten Sie unter http://support.microsoft.com/dllhelp/ ?dlltype=file&l=55&alpha=mscomctl.ocx&S=1 &x=8&y=17.
Es gibt zwar einige Alternativen zum Treeview-Steuerelement von Microsoft, unter anderem solche, die entweder ebenfalls als .ocx-Datei kommen oder keine zusätzlichen Dateien erfordern und komplett auf API basieren, aber auch diese sind meist nicht kostenlos.
Was kann das Treeview-Steuerelement?
Bevor Sie das erste Treeview-Steuerelement in ein Formular einfügen, sollten Sie sich zunächst einmal einen Überblick über die Möglichkeiten des Treeview-Steuerelements verschaffen.
Das Hauptmerkmal ist natürlich, dass es hierarchisch angeordnete Daten anzeigen kann. Das bedeutet, dass sich damit beispielsweise eine Verzeichnisstruktur wie im Windows-Explorer nachbilden lässt.
Die wichtigste Rolle spielen dabei die so genannten Knoten (Node). Jedes Element im Treeview entspricht einem Knoten.

Abb. 1: Beispiele für das Aussehen eines Treeviews

Abb. 2: Das Treeview-Steuerelement finden Sie in der Liste der ActiveX-Steuerelemente, die Sie mit dem abgebildeten Menüeintrag anzeigen.

Abb. 3: Dieser Dialog ermöglicht das Einfügen des Treeview-Steuerelements.
Damit die Knoten hierarchisch angeordnet werden können, weist man untergeordneten Knoten den jeweiligen Parent-Knoten zu. Das Treeview-Steuerelement liefert viele Möglichkeiten zum Anpassen seines Aussehens. So lassen sich die folgenden Möglichkeiten leicht kombinieren:
Text
Symbole
Plus-/Minus-Zeichen
Linien
Kontrollkästchen
Um einen Überblick über die möglichen Stile zu erhalten, öffnen Sie das in der Beispieldatenbank enthaltene Formular frmTreeviewBeispiel (s. Abb. 1). Über die im linken Teil des Formulars enthaltenen Symbole können Sie sich unterschiedliche Stile ansehen. Es gibt noch einige Möglichkeiten mehr wie etwa die Verwendung von Kontrollkästchen, diese werden jedoch in diesem Grundlagenbeitrag nicht behandelt.
Erste Schritte
Zum Einfügen des Treeview-Steuerelements führen Sie nach dem Öffnen des Zielformulars in der Entwurfsansicht den Menübefehl Einfügen/ActiveX-Steuerelement... aus (s. Abb. 2) und wählen im dann erscheinenden Dialog den Eintrag Microsoft Treeview Control, version 6.0 aus (s. Abb. 3).
Sie sollten generell immer die gleiche Version verwenden, wenn Sie mehrere Steuerelemente der Common Controls-Sammlung verwenden - am besten die jeweils neuesten.
Das neue Treeview-Steuerelement erscheint zunächst als unscheinbares weißes Kästchen im Formular, offenbart aber direkt nach dem Vergrößern des Rahmens seinen wahren Charakter (s. Abb. 4). Benennen Sie das Steuerelement um, damit Sie anschließend per VBA komfortabel darauf zugreifen können. Verwenden Sie dabei einen Namen wie tvwTreeview.

Abb. 4: Das neue Treeview-Steuerelement in der Entwurfsansicht

Abb. 5: Der Objektkatalog informiert eingehend über die Treeview-Klasse und deren Eigenschaften, Methoden und Ereignisse.

Abb. 6: IntelliSense steht erst nach expliziter Deklaration des Steuerelements als Treeview zur Verfügung.
Im vorliegenden Beitrag lernen Sie die Grundlagen für den Gebrauch des Treeview-Steuerelements. Hier können aber unmöglich alle Funktionen dieses Steuerelements vorgestellt werden. Wenn Sie auf eigene Faust weiterforschen möchten, ist der Objektkatalog ein idealer Startpunkt. Wählen Sie dort die Klasse MSComctlLib und dann das Element Treeview aus, um alle Eigenschaften, Methoden und Ereignisse angezeigt zu bekommen.
Treeview mit IntelliSense
Treeviews können Sie ausschließlich per VBA füllen. Dummerweise bietet IntelliSense nicht die Treeview-spezifischen Eigenschaften, Methoden und Ereignisse an, wenn Sie wie folgt auf das Steuerelement verweisen:
Me!tvwTreeview
Wenn Sie IntelliSense verwenden möchten, was empfehlenswert ist, deklarieren Sie eine Objektvariable für das Treeview-Steuerelement im Modulkopf des Formulars und instanzieren diese an geeigneter Stelle. Die Deklaration sieht etwa wie folgt aus:
Dim objTreeview As MSComctlLib.Treeview
Zum Instanzieren eignet sich am besten eine der Ereignisprozeduren, die beim Öffnen des Formulars ausgeführt werden - beispielsweise das Beim Öffnen-Ereignis (s. Quellcode 1).
Quellcode 1: Instanzieren eines Treeview-Objekts
Private Sub Form_Open(Cancel As Integer)
Set objTreeview = Me.ctlTreeview.Object
End Sub
Wenn Sie in weiteren Routinen auf das Objekt objTreeview zugreifen, statt das Steuerelement ctlTreeview zu referenzieren, stellt IntelliSense die Treeview-spezifischen Elemente zur Verfügung (s. Abb. 6).
Eigenschaften des Treeview-Steuerelements
Wenn Sie in der Entwurfsansicht des Formulars mit der rechten Maustaste auf das Treeview-Steuerelement klicken, können Sie im Kontextmenü den Eintrag TreeCtrl-Objekt/Eigenschaften auswählen. Mit diesem Dialog lassen sich die meisten Eigenschaften des Treeview-Steuerelements einstellen (s. Abb. 7).

Abb. 7: Eigenschaften des Treeview-Steuerelements
Erzeugen eines Baumes
Das A und O beim Erzeugen eines Baumes im Treeview-Steuerelement ist die Add-Methode des Node-Elements. Die Methode erwartet sechs Parameter, die allesamt optional sind:
Relative: Erwartet den Index (Datentyp Integer) oder Schlüssel (String) eines Knotens, zu dem der neue Knoten in einer bestimmten Beziehung stehen soll.
Relationship: Beziehung, in der der neue und der unter Relative angegebene Knoten stehen. Mögliche Werte: tvwChild, tvwFirst, tvwLast, tvwNext, tvxPrevious.
Key: Zeichenfolge als Schlüssel des neuen Knotens. Dient zum Referenzieren des Knotens und muss zwingend mit einem Buchstaben beginnen.
Text: Angezeigter Text.
Image: Index eines Symbols, das vor dem Text angezeigt wird, wenn die Einstellung der Style-Eigenschaft des Treeview-Objekts dies erlaubt. Weitere Informationen zur Verwendung von Symbolen in Treeview-Objekten finden Sie weiter unten.
SelectedImage: Index eines Symbols, das statt des unter Image angegebenen Symbols angezeigt wird, wenn der Knoten markiert ist.
Alle Eigenschaften können Sie nach dem Erzeugen des Knotens ändern. Wenn Sie beim Erzeugen noch gar keine Eigenschaften zuweisen möchten (etwa aus Gründen der Übersicht), können Sie einfach die folgende Anweisung verwenden:
objTreeview.Nodes.Add
Wenn Sie, wie weiter oben beschrieben, ein Formular mit einem Treeview-Steuerelement angelegt, dieses in ctlTreeview umbenannt und ein entsprechendes Objekt im Formularmodul deklariert und instanziert haben, können Sie direkt das erste Element im Treeview anlegen. Dazu erweitern Sie einfach die Routine aus Listing 1 um folgende Anweisung. Beachten Sie, dass die Eigenschaften Key und Text direkt beim Anlegen mit den entsprechenden Werten gefüllt werden:
With objTreeview
.Nodes.Add , , "tvw01", _ "Erster Knoten"
End With
Öffnen Sie das Formular, das nun wie in Abb. 8 aussehen sollte. Mit der leicht erweiterten Fassung aus Quellcode 2 legen Sie drei Unterknoten an, die wie in Abb. 9 angeordnet sind.

Abb. 8: Der einfachste Treeview der Welt

Abb. 9: Treeview mit Knoten auf zwei Ebenen
Quellcode 2: Knoten mit drei Unterknoten anlegen
Private Sub Form_Open(Cancel As Integer)
Set objTreeview = Me.tvwBeispiel.Object
With objTreeview
'Basisknoten anlegen
.Nodes.Add , , "tvw01", "Erster Knoten"
'Knoten unterhalb des Basisknotens anlegen
.Nodes.Add "tvw01", tvwChild, "tvw0101", "Erster Unterknoten"
'Knoten hinter einem existierenden Knoten anlegen
.Nodes.Add "tvw0101", tvwNext, "tvw0102", "Zweiter Unterknoten"
'Knoten als ersten Knoten in der Ebene des angegebenen Knoten anlegen
.Nodes.Add "tvw0101", tvwFirst, "tvw0100", "Nullter Unterknoten"
End With
End Sub
Stil einstellen
Wenn Sie keinen bestimmten Stil festlegen, verwendet Access standardmäßig den Stil tvwTreelinesText wie in Abb. 9. Wenn Sie einen anderen Stil verwenden möchten, stellen Sie die Eigenschaft Style des Treeview-Objekts etwa mit folgender Anweisung ein:
objTreeview.Style = tvwPictureText
Das Aussehen der verschiedenen Stile können Sie dem bereits weiter oben erwähnten Formular frmTreeviewBeispiel entnehmen.
Quellcode 3: Instanzieren eines neuen Knotens und Zuweisen einiger Eigenschaften
Set objNode = objTreeview.Nodes.Add(, , _ "tvw01", "Erster Knoten")
With objNode
'Fette Schrift verwenden
.Bold = True
'Hintergrundfarbe
.BackColor = 255
'Schriftfarbe
.ForeColor = 128
'Unterknoten anzeigen
.Expanded = True
End With
Knoteneigenschaften
Mit der Add-Methode der Nodes-Auflistung können Sie bereits einige Eigenschaften des neuen Knotens festlegen. Es gibt aber noch wesentlich mehr Eigenschaften, die Sie anpassen können, wenn Sie den neuen Knoten direkt per Objektverweis referenzieren. Dazu deklarieren Sie zunächst eine entsprechende Objektvariable:
Dim objNode As MSComctlLib.Node
Das Anlegen eines Knotens mit passender Objektvariablen und anschließender Anpassung der Eigenschaften sieht wie in Quellcode 3 aus.
Symbole im Treeview
Richtig hübsch wird ein Treeview-Steuerelement erst, wenn Sie die einzelnen Knoten mit Symbolen versehen. Dabei können Sie jedem Knoten ein anderes Symbol verpassen; es ist sogar möglich, zusätzliche Symbole für unterschiedliche Zustände eines Knotens anzugeben. Die dazu verwendeten Symbole speichert man in einem ImageList-Steuerelement. Umfangreiche Informationen zum ImageList-Steuerelement und zum Füllen von Treeview-Knoten mit den enthaltenen Bildern finden Sie im Beitrag Das ImageList-Steuerelement (s. Shortlink 322).
Zusammenfassung und Ausblick
Im vorliegenden Beitrag haben Sie die Grundlagen zum Treeview-Objekt und zum Anlegen von Knoten erfahren. In weiteren Beiträgen lernen Sie, wie man von Drag & Drop profitiert (Drag and Drop im Treeview-Steuerelement, Shortlink 320) und ein Treeview-Steuerelement dynamisch mit Daten füllt (Treeview-Steuerelement mit Daten füllen, Shortlink 321).
Eine Musterlösung, die das Treeview-Steuerelement verwendet, beschreibt der Beitrag Notizverwaltung (Shortlink 328). Hier finden Sie auch Informationen zu weiteren Techniken in Zusammenhang mit dem Treeview-Steuerelement.
|