Hallo BJ,
anbei die kurze Erklärung des TREEVIEW aus der MSDN. Ein kleines Beispiel habe ich im Moment nicht zur Hand. Meine Codes sind da etwas zu heftig.
Um einen Treeview aufzubauen brauchtst du nur einen Befehl:
Treeview.nodes.add(Key des Bezugsknoten, Beziehung, Key des Knotens, Text des Knotens, Image des Knotens, Image des Knotens wenn selektiert)
Beispiel:
Private Sub Form_Load()
' Setzen der Strukturansicht-Steuerelement Eigenschaften.
TreeView1.LineStyle = tvwRootLines ' Linestyle 1
' Setzen der Objekte
Dim nodX As Node ' Nodevariable deklarieren
' Knoten1 (immer Parent) 'Root'
Set nodX = TreeView1.Nodes.Add(, , "r", "Root")
' Knoten2 ist ein 'child' von Knoten1 ("Root") und Parent von Knoten3.
Set nodX = TreeView1.Nodes.Add("r", tvwChild, "r\child1", "Child1")
' Knoten3 ist ein 'child' von Knoten2 ("Root").
Set nodX = TreeView1.Nodes.Add("r\child1", tvwChild, "r\child1\child2", "Child2")
end sub
Ich lege die Keys immer derart an, dass ich aus dem Key die gesamte Struktur entnehmen kann (r\child1\child2). Da ich aus diese Weise Datenbanken visualisiere, habe ich für Zugriffe die entsprechenden IDs direkt zur Hand. Ist nur ein Tipp. Die Keys kannst du frei vergeben. Sie müssen nur im Baum eindeutig sein.
Mit dem Ereignis "node_click" erhält du den Zugriff auf das selektierte Node und kannst dann hier den Key auslesen.
Grüsse
Ulf
Hinweise aus MSDN:
Verwenden des Strukturansicht-Steuerelements (TreeView)
Das Strukturansicht-Steuerelement ist zur Anzeige von Daten gedacht, die ihrer Natur nach hierarchisch sind, wie z.B. Organisationsstrukturen, Einträge in einem Index oder Dateien und Ordner auf einem Datenträger.
Verwendungsmöglichkeiten
Erstellen einer Organisationsstruktur, die vom Benutzer bearbeitet werden kann.
Erstellen einer Struktur, der mindestens zwei Ebenen einer Datenbank anzeigt.
Einstellen der Eigenschaften von Node-Objekten
Eine „Struktur“ (oder Hierarchie, Baum, engl.: Tree) besteht aus verschachtelten Zweigen mit „Knoten“. Jeder Knoten (Node) besteht normalerweise aus einem Bild (das mit der Image-Eigenschaft festgelegt wird) und einer Beschriftung (die mit der Text-Eigenschaft festgelegt wird). Außerdem kann jeder Knoten einen weiteren Zweig mit Knoten enthalten. Die Bilder für die Knoten kommen von einem Abbildungsliste-Steuerelement, das mit dem Strukturansicht-Steuerelement verknüpft wird. Weitere Informationen über die Verwendung des Abbildungsliste-Steuerelements zusammen mit anderen Steuerelementen finden Sie unter „Verwenden des Abbildungsliste-Steuerelements“.
Ein Knoten kann „geöffnet“ oder „geschlossen“ sein, je nachdem, ob der Knoten untergeordnete Knoten besitzt - Knoten, die von ihm abstammen. Auf der obersten Ebene befinden sich Hauptknoten; jeder Hauptknoten kann eine beliebige Anzahl an untergeordneten Knoten besitzen. Die Anzahl der Knoten ist nicht begrenzt (außer durch Hardware-Beschränkungen). Abbildung 2.41 zeigt eine Struktur mit zwei Hauptknoten; „Root 1“ hat drei untergeordnete Knoten, und „Child 3“ hat selbst wiederum einen untergeordneten Knoten. „Root 2“ hat untergeordnete Knoten, was durch das Zeichen „+“ angezeigt wird, ist aber nicht geöffnet.
Jeder Knoten in einer Struktur ist eigentlich ein programmierbares Node-Objekt, das zur Nodes-Auflistung gehört. Wie bei anderen Auflistungen hat jedes Element dieser Auflistung eindeutige Index- und Key-Eigenschaften, mit deren Hilfe auf die Eigenschaften des Knotens zugegriffen werden kann. Der folgende Code z.B. benutzt den Index eines bestimmten Knotens („7“), um dessen Image- und Text-Eigenschaften einzustellen:
tvwMyTree.Nodes(7).Image = "geschlossen"
tvwMyTree.Nodes(7).Text = "IEEE"
Wenn dem Knoten jedoch ein eindeutiger Schlüssel, z.B. „7 ID“ zugewiesen wäre, könnte der Code folgendermaßen aussehen:
tvwMyTree.Nodes("7 ID").Image = "geschlossen"
tvwMyTree.Nodes("7 ID").Text = "IEEE"
Knotenbeziehungen und Verweise auf Nachbarknoten
Jeder Knoten kann ein über- oder untergeordneter Knoten (Parents bzw. Children) sein, je nach seinen Beziehungen zu anderen Knoten. Das Node-Objekt besitzt mehrere Eigenschaften, die verschiedene Arten von Information zu über- oder untergeordneten Knoten zurückgeben. Beispielsweise verwendet der folgende Code die Children-Eigenschaft, um die Anzahl der untergeordneten Knoten eines Knotens zurückzugeben, sofern vorhanden:
MsgBox tvwMyTree.Nodes(10).Children
Manche Eigenschaften geben jedoch nicht wie die Children-Eigenschaft Informationen zurück, sondern einen Verweis auf ein anderes Node-Objekt. Beispielsweise gibt die Parent-Eigenschaft einen Verweis auf den übergeordneten Knoten eines bestimmten Knotens zurück (sofern er kein Hauptknoten ist). Mit diesem Verweis können Sie den übergeordneten Knoten bearbeiten, indem Sie Methoden aufrufen oder Eigenschaften einstellen, die bei Node-Objekten definiert sind. Beispielsweise gibt der folgende Code die Eigenschaften Text und Index eines übergeordneten Knotens zurück:
MsgBox tvwMyTree.Nodes(10).Parent.Text
MsgBox tvwMyTree.Nodes(10).Parent.Index
Tip Verwenden Sie die Set-Anweisung mit einer Objektvariablen vom Typ Node zur Manipulation von Verweisen auf andere Node-Objekte. Beispielsweise weist der folgende Code einer Node-Objektvariablen den von der Parent-Eigenschaft zurückgegebenen Verweis zu. Anschließend benutzt der Code die Objektvariable, um Eigenschaften des übergeordneten Knotens zurückzugeben:
Dim tempNode As Node ' Objektvariable deklarieren.
' Der Objektvariablen den
' zurückgegebenen Verweis zuweisen.
Set tempNode = tvwMyTree.Nodes(10).Parent
MsgBox tempNode.Text ' Gibt den Text des übergeordneten
' Knotens aus.
MsgBox tempNode.Index ' Gibt den Index des
' übergeordneten Knotens aus.
Hinzufügen eines Node-Objekts zur Nodes-Auflistung
Um einen Knoten zur Struktur hinzuzufügen, verwenden Sie die Add-Methode (Nodes-Auflistung). Diese Methode erhält zwei Argumente, relative und relationship, zur Festlegung, wo der Knoten eingefügt wird. Das erste Argument, relative, nennt einen Knoten; das zweite Argument, relationship, gibt die Beziehung zwischen dem neuen Knoten und dem in relative angegebenen Knoten an.
Der folgende Code fügt beispielsweise einen Knoten namens „11 Knoten“ als untergeordneten Knoten eines anderen Knotens namens „7 Knoten“ hinzu. Die integrierte Konstante tvwChild legt fest, daß der neue Knoten dem eben angegebenen Knoten untergeordnet sein soll. Das dritte Argument weist dem neuen Knoten die Key-Eigenschaft zu.
tvwMyTree.Nodes.Add "7 Knoten", tvwChild, "11 Knoten"
Weitere mögliche Beziehungen sind:
Konstante Wert Beschreibung
tvwLast 1 Der Knoten wird nach allen anderen Knoten auf derselben Ebene wie der in relative angegebene Knoten eingefügt.
tvwNext 2 Der Knoten wird nach dem in relative angegebenen Knoten eingefügt.
tvwPrevious 3 Der Knoten wird vor dem in relative angegebenen Knoten eingefügt.
tvwChild 4 Der Knoten wird dem in relative angegebenen Knoten untergeordnet.
Angenommen, es gibt drei Knoten, und Sie möchten einen vierten Knoten zwischen dem zweiten und dem dritten Knoten einfügen, dann würde der Code folgendermaßen aussehen:
' Angenommen, der Key-Wert des zweiten Knotens
' ist "2 Knoten".
tvwMyTree.Nodes.Add "2 Knoten", tvwNext
Andere Argumente der Add-Methode sind Key, Text und Image. Mit diesen Argumenten können Sie die Eigenschaften Key, Text und Image beim Erstellen des Knotens einstellen.
Weitere Informationen Weitere Informationen über die Add-Methode der Nodes-Auflistung finden Sie unter "Add-Methode", indem Sie "Add-Methode" bei der Indexsuche eingeben und auf "Add-Methode (Nodes-Auflistung) " klicken.
Eine zweite Möglichkeit zum Hinzufügen von Node-Objekten ist die Deklaration einer Objektvariablen von Typ Node und die anschließende Verwendung der Set-Anweisung mit der Add-Methode. Die Set-Anweisung weist der Objektvariablen den neuen Knoten zu. Sie können anschließend die Objektvariable verwenden, um die Eigenschaften des Knotens einzustellen, wie im folgenden gezeigt:
Dim nodX As Node
Set nodX = tvwMyTree.Nodes.Add("10 Knoten", tvwChild)
nodX.Key = "11 Knoten "
nodX.Text = "IEEE"
nodX.Image = "geschlossen"
Tip Die Verwendung der Set-Anweisung mit der Add-Methode erleichtert das Lesen und die Fehlersuche im Code. Dagegen produziert die direkte Verwendung der Add-Methode mit ihren Argumenten schnelleren Code.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP