vb6 - заполнить дерево - PullRequest
       9

vb6 - заполнить дерево

1 голос
/ 02 марта 2011

Мне нужно заполнить древовидную структуру названием папок, которое я получил из нескольких путей. Например, у меня есть несколько путей: C: \ Admin \ Tester1 \ Проект \ item1 \ азбука, C: \ Admin \ Tester1 \ Проект \ item2 \ азбука, C: \ Admin \ Tester1 \ Проект \ item1 \ Защита, C: \ админ \ Tester1 \ project3 \ item2 \ ГХИ

Можете ли вы дать мне некоторые идеи или примеры того, как поместить пути в древовидную структуру?

Ответы [ 3 ]

3 голосов
/ 02 марта 2011

Вам необходимо добавить корневой узел, а затем добавить каждый уровень в качестве дочернего элемента корневого узла или его родителя.

' Add Node objects.
Dim nodX As Node  ' Declare Node variable.
' First node with 'Root' as text.
Set nodX = TreeView1.Nodes.Add(, , "r", "Root")

' This next node is a child of Node 1 ("r").
Set nodX = TreeView1.Nodes.Add("r", tvwChild, "child1", "Child")

' This next node is a child of Node 2 ("child").
Set nodX = TreeView1.Nodes.Add("child1", tvwChild, "child2", "Child 2")

В этом коде будет объявлен корневой узел с именем «Root», затем дочерний узел с именем «Child», а затем дочерний узел этого дочернего узла с именем «Child 2». Это лучший рисунок, который я могу подделать здесь: -)

Root
| -Child
| | -Детская 2

0 голосов
/ 25 февраля 2013
0 голосов
/ 02 марта 2011

Добавьте TreeView элемент управления в форму и попробуйте это:

Option Explicit

Private Sub Form_Load()
    pvAddPath TreeView1, "C:\admin\tester1\project\item1\abc"
    pvAddPath TreeView1, "C:\admin\tester1\project\item2\abc"
    pvAddPath TreeView1, "C:\admin\tester1\project\item1\def"
    pvAddPath TreeView1, "C:\admin\tester1\project3\item2\ghi"
End Sub

Private Sub pvAddPath(oCtl As TreeView, ByVal sPath As String)
    Dim lNext           As Long
    Dim lStart          As Long

    If oCtl.Nodes.Count = 0 Then
        oCtl.Indentation = 0
    End If
    Do While lStart < Len(sPath)
        lNext = InStr(lStart + 1, sPath, "\")
        If lNext = 0 Then
            lNext = Len(sPath) + 1
        End If
        On Error Resume Next
        If lStart = 0 Then
            oCtl.Nodes.Add(, , Left$(sPath, lNext), Left$(sPath, lNext)).Expanded = True
        Else
            oCtl.Nodes.Add(Left$(sPath, lStart), tvwChild, Left$(sPath, lNext), Mid$(sPath, lStart + 1, lNext - lStart - 1)).Expanded = True
        End If
        On Error GoTo 0
        lStart = lNext
    Loop
End Sub
...