Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0282: Arbeiten mit dem TreeView-Control

 von 

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:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,64 KB]

'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-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

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