VB 5/6-Tipp 0282: Arbeiten mit dem TreeView-Control
von Björn Kirsch
Beschreibung
Zeigt die grundsätzlichen Methoden und Ereignisse des TreeView Controls. Auf die Einbindung von Grafiken wurde hier verzichtet, dafür bietet der übernächste Tip genügend Material.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- ' Die Komponente 'Microsoft Windows Common Controls 5.0 (SP2) (COMCTL32.OCX)' wird benötigt. '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Kontrollkästchen-Steuerelement "Check1" ' Steuerelement: Schaltfläche "Command1" (Index von 0 bis 1) ' Steuerelement: Optionsfeld-Steuerelement "Option1" (Index von 0 bis 2) ' Steuerelement: Baumansichtsteuerelement "TreeView1" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" Option Explicit Private Sub Form_Load() Option1(0).Caption = "250" Option1(1).Caption = "500" Option1(2).Caption = "1000" 'Stil festlegen TreeView1.Indentation = 250 TreeView1.LineStyle = tvwRootLines 'Ein einfacher TreeView Eintrag TreeView1.Nodes.Add , , , "Testbaum 1" 'Ein einfacher Untereintrag zum Testbaum 1 TreeView1.Nodes.Add 1, tvwChild, , "Testbaum 1-1" 'Ein weiterer TreeView Eintrag TreeView1.Nodes.Add , , , "Testbaum2" 'Ein Untereintrag hierzu TreeView1.Nodes.Add 3, tvwChild, , "Testbaum 2-1" 'Ein Untereintrag zum Testbaum 1-1 TreeView1.Nodes.Add 2, tvwChild, , "Testbaum 1-2" 'Ein weiterer Eintrag unter Testbaum 2 TreeView1.Nodes.Add 3, tvwChild, , "Testbaum 2-2" End Sub Private Sub Option1_Click(Index As Integer) TreeView1.Indentation = CInt(Option1(Index).Caption) End Sub Private Sub TreeView1_Collapse(ByVal Node As ComctlLib.Node) Me.Caption = "Knoten '" & Node.Text & "' wurde geschlossen" End Sub Private Sub TreeView1_Expand(ByVal Node As ComctlLib.Node) Me.Caption = "Knoten '" & Node.Text & "' wurde geöffnet" End Sub Private Sub TreeView1_MouseMove(Button As Integer, Shift As _ Integer, x As Single, y As _ Single) Dim N As ComctlLib.Node Set N = TreeView1.HitTest(x, y) If Not (N Is Nothing) Then If Check1.Value = vbChecked Then Set TreeView1.DropHighlight = N End If Label3.Caption = N.Text Set N = Nothing End If End Sub Private Sub Command1_Click(Index As Integer) Dim Flag As Boolean Flag = IIf(Index = 0, True, False) TreeView1.Nodes(1).Expanded = Flag TreeView1.Nodes(2).Expanded = Flag TreeView1.Nodes(3).Expanded = Flag End Sub Private Sub Check1_Click() If Check1.Value = vbUnchecked Then Set TreeView1.DropHighlight = Nothing End If End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 14 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Felix.S am 15.09.2009 um 20:11
Super Tipp!!!
Kommentar von Endres am 08.10.2008 um 09:55
@Dustin
Nein, denn Flag wird hier ja bei jedem Click-Event neu definiert.
Eine elegantere Methode wäre einfach:
Flag = (Index = 0)
Bzw.:
Flag = Not CBool(Index)
Oder eventuell auch:
Flag = Not Index
Kommentar von Dustin am 09.05.2008 um 19:43
Private Sub Command1_Click(Index As Integer)
Dim Flag As Boolean
Flag = IIf(Index = 0, True, False)
...
hier wäre Flag = Not Flag eleganter!
Gruß, Dustin
Kommentar von Andreas am 24.03.2008 um 14:42
Kann mir jemand sagen wie man diesen schönen Highlightening Effekt auch für das Treeview von Microsoft Windows Common Controls 6.0 SP4 hinbekommt? Bei mir wird der entsprechende Knoten nur "unterstrichen" dargestellt. Bevor einer fragt warum ich nicht das Teil aus Version 5.0 nehme, wie in dieser Demo hier - Ich brauche unbedingt die Checkboxen ! - Und wo wir gerade dabei sind, kann mann die Checkboxen auch nur für einen ganz bestimmten Knoten aktivieren?
Gruß und Dank im vorraus
Andreas
Kommentar von sbrinkmann am 09.08.2006 um 16:21
Wie kann ich dem Treeview das Updaten während des Eintragens von neuen Knoten verbieten?
Kommentar von Georg am 13.03.2006 um 17:05
Wie kann ich jetzt in diesem Tree Ordner strukturien nach bilden ohne vielaufwand oder gibt es ein besseres Steuerelemnt dafür ich danke auch schon mal vorher
lg georg
Kommentar von Furion am 27.09.2005 um 13:25
@ Jan Jessen
So gehts:
Private Sub UserForm_Initialize()
With TreeView1
Call .Nodes.Add(Text:="Ich bin der 1.")
Call .Nodes.Add(1, tvwChild, Text:="Ich bin der 1-1.")
.Nodes(1).Expanded = True
End With
End Sub
Kommentar von Nils Jermann am 06.11.2003 um 17:05
Was bedeuten die Parameter in: "TreeeView1.Nodes.Add"?
Kommentar von ManuelGonzalez am 15.12.2002 um 16:30
...vielen Dank sehr Hilfreicher und einfach gehaltener Sourcecode...!
Kommentar von Jan Jessen am 28.11.2002 um 16:39
Ich versuche unter Excel 2000 (also VBA ) ein Treeview Steuerelement einzubinden erleide aber Schiffbruch.
Folgendes Problem: Ich habe ein Formular (UserForm1) angelegt und darauf ein TreeView (TreeView1) plaziert. Dem Formular habe ich folgenden Code hinterlegt:
Private Sub UserForm_Load()
Dim Knoten1 As Node
Set Knoten1 = TreeView1.Nodes.Add _
(, tvwText, "eins", "Ich bin der 1.")
End Sub
Wenn ich dann das Formular aufrufe ist die TreeView leer.
Warum?
Kommentar von Archimedes am 10.10.2002 um 09:07
Der Code funktioniert ganz gut. Nur bei mir VB6/Win2000 war in der Sub TreeView1_MouseMove ein Fehler:
Dim N As ComctlLib.Node
heißt richtig:
Dim N As MSComctlLib.Node
Gruß
Thorsten
Kommentar von Olaf Dolge am 04.06.2002 um 18:19
habe mit treeview experimentiert, klappt soweit, auch Untereinträge, jedoch wird trotz richtiger Einstellung von Style die PlusMinusZeichen nicht angezeigt, vielleicht ein Bug
Kommentar von DaveStar am 07.12.2001 um 20:47
Hi
Bei mir gehts nicht.
(Win 98) Es gibt immer einen Fehler beim Laden des Projekts...
Kommentar von STwombat am 27.11.2001 um 15:50
Das ist ja alles schön und gut aber wie kann man erreichen das ein untergeordneter eintrag auf ein klick-event reagiert.
Bitte helft mir!!
Schickt mir einfach eine Email
MFG STwombat