TreeView aufgebohrt

TreeView mit Kategorien und Artikeln füllen

Das Füllen des TreeView-Steuerelements übernimmt die Routine TreeViewFuellen aus Listing 1, die von der Ereignisprozedur Form_Open aufgerufen wird. Sie enthält zwei verschachtelte Do- While-Schleifen: Die äußere durchläuft alle Datensätze der Tabelle Kategorien und legt für jede Kategorie einen Knoten im TreeView-Steuerelement an. Die innere Do-While-Schleife öffnet für jede Kategorie eine Datensatzgruppe mit den zur Kategorie gehörenden Artikeln und fügt diese als Child-Elemente zum jeweiligen Kategorie Knoten hinzu.

Option Compare Database
Option Explicit
Private objTreeView As MSComctlLib.TreeView
Private Sub Form_Open(Cancel As Integer)
TreeViewFuellen
End Sub
Private Sub TreeViewFuellen()
Dim db As DAO.Database
Dim rstKategorien As DAO.Recordset
Dim rstArtikel As DAO.Recordset
Dim objNode As MSComctlLib.Node
Set objTreeView = Me.ctlTreeView.Object
Set db = CurrentDb
Set rstKategorien = db.OpenRecordset("Kategorien", dbOpenDynaset)
With objTreeView
Do While Not rstKategorien.EOF
Set objNode = objTreeView.Nodes.Add()
With objNode
.Key = "kat" & rstKategorien![Kategorie-Nr]
.Text = rstKategorien!Kategoriename
End With
Set rstArtikel = db.OpenRecordset("SELECT [Artikel-Nr], Artikelname
FROM Artikel WHERE [Kategorie-Nr] = " & rstKategorien![Kategorie-Nr], dbOpenDynaset)
Do While Not rstArtikel.EOF
objTreeView.Nodes.Add objNode, tvwChild, "art" & rstArtikel![Artikel-
Nr], rstArtikel!Artikelname
rstArtikel.MoveNext
Loop
rstKategorien.MoveNext
Loop
End With
End Sub

Erwähnenswert ist in diesem Zusammenhang, dass die Key-Eigenschaft jeweils aus der einer Zeichenkette („kat“ für Kategorie-Knoten und „art“ für Artikel-Knoten) und dem Primärschlüsselwert des jeweiligen Datensatzes besteht. Damit sorgen Sie nicht nur für die Vergabe eindeutiger Schlüssel, sondern erleichtern auch die Anzeige des Kontextmenüs für den jeweiligen Eintrag: Über die ersten drei Buchstaben („kat“ oder „art“) ermittelt die später vorgestellte Routine den Elementtyp und zeigt das passende Kontextmenü an.

Bild 2: Dieses TreeView- Steuerelement dient als Grundlage für das Hinzufügen von Kontextmenüs.
Bild 2: Dieses TreeView- Steuerelement dient als Grundlage für das Hinzufügen von Kontextmenüs.

Die Optik des Ergebnisses genügt nicht unbedingt höchsten Ansprüchen, reicht aber als Grundlage für das Hinzufügen von Kontextmenüs aus (Bild 2).