|
|
|
|
|
Sind Sie es auch leid, ein TreeView-Steuerelement immer wieder
manuell mit Test-Knoten füllen zu müssen? Dann verwenden Sie doch
folgende Prozedur, die Ihnen die Arbeit abnimmt und einen Knotenbaum
systematisch oder zufällig generiert.
Neben der Übergabe des TreeView-Steuerelements selbst im ersten
(und einzigen obligatorischen) Parameter können Sie über eine
Reihe weiterer optionaler Parameter den zu generierenden Baum
beeinflussen.
First: Standardmäßig wird hier der Buchstabe A
übergeben. Damit legen Sie den Anfangsbuchstaben bzw. -String für
alle Knoten fest. Alle Knoten werden auf einer Ebene automatisch
durchnummeriert und in der Tiefe hierarchisch gegliedert nummeriert.
Count: Gibt die (maximale) Anzahl der Knoten auf einer
Eben an.
Level: Gibt an, wie tief der Baum verzweigt werden soll.
SingleRoot: Damit legen Sie fest, ob auf der obersten
Ebene nur ein Knoten stehen soll, oder ob entsprechend der
Count-Angabe parallel Knoten die oberste Ebene bilden sollen.
Expand: Voreingestellt ist True - alle eingefügten Knoten
werden automatisch expandiert.
DoRandom: Legt fest, ob die Werte für Count und Level
Obergrenzen darstellen und innerhalb dieser Grenzen zufällig für
jeden Zweig und jede Verschachtelung gewählt werden.
RandomExpand: Übergeben Sie hier True, werden die
engelegten Zweige zufällig expandiert.
RandomImages: Wenn True, wird jedem Knoten zufällig ein
Symbol aus einem mit dem TreeView-Steuerelement verknüpften
ImageList-Steuerelement zugeordnet.
LockWindow: Damit unterdrücken Sie Aktualisierung nach
jedem Einfügen eines Knotens.
Public Sub FillDummies(tvw As TreeView, _
Optional First As String = "A", _
Optional ByVal Count As Integer = 3, _
Optional ByVal Levels As Integer = 5, _
Optional ByVal SingleRoot As Boolean, _
Optional ByVal Expand As Boolean = True, _
Optional ByVal DoRandom As Boolean, _
Optional ByVal RandomExpand As Boolean, _
Optional ByVal RandomImages As Boolean, _
Optional ByVal LockWindow As Boolean = True)
Dim nNode As Node
Dim i As Integer
Dim nNodes As Nodes
Dim nImagesCount As Integer
Dim nImageID As Integer
If LockWindow Then
LockWindowUpdate tvw.hWnd
End If
If DoRandom Then
Randomize Timer
End If
If RandomImages Then
nImagesCount = tvw.ImageList.ListImages.Count
Else
nImageID = 1
End If
Set nNodes = tvw.Nodes
With nNodes
If SingleRoot Then
If RandomImages Then
nImageID = Int(nImagesCount * Rnd + 1)
End If
Set nNode = .Add(, , , First, nImageID)
With nNode
.Key = .FullPath
If RandomExpand Then
.Expanded = CBool(Int((0 + 2) * Rnd - 1))
Else
.Expanded = Expand
End If
End With
zFillDummies nNodes, nNode, Count, Levels - 1, _
DoRandom, Expand, RandomExpand, nImagesCount
Else
For i = 1 To Count
If RandomImages Then
nImageID = Int(nImagesCount * Rnd + 1)
End If
Set nNode = .Add(, , , First & i, nImageID)
With nNode
.Key = .FullPath
If RandomExpand Then
.Expanded = CBool(Int((0 + 2) * Rnd - 1))
Else
.Expanded = Expand
End If
End With
zFillDummies nNodes, nNode, Count, Levels - 1, _
DoRandom, Expand, RandomExpand, nImagesCount
Next 'i
End If
End With
If LockWindow Then
LockWindowUpdate 0&
End If
End Sub
Private Sub zFillDummies(Nodes As Nodes, ParentNode As Node, _
ByVal Count As Integer, Level As Integer, _
ByVal DoRandom As Boolean, ByVal Expand As Boolean, _
ByVal RandomExpand As Boolean, ByVal RandomImages As Integer)
Dim i As Integer
Dim nNode As Node
Dim nLevel As Integer
Dim nCount1 As Integer
Dim nCount2 As Integer
Dim nImageID As Integer
If DoRandom Then
nCount1 = Int(Count * Rnd + 1)
Else
nCount1 = Count
End If
nImageID = 1
For i = 1 To nCount1
If RandomImages Then
nImageID = Int(RandomImages * Rnd + 1)
End If
Set nNode = Nodes.Add(ParentNode.Key, tvwChild, , _
ParentNode.Text & i, nImageID)
With nNode
.Key = .FullPath
If RandomExpand Then
.Expanded = CBool(Int((0 + 2) * Rnd - 1))
Else
.Expanded = Expand
End If
End With
If Level > 0 Then
If DoRandom Then
nCount2 = Int(Count * Rnd + 1)
nLevel = Int(Level * Rnd + 1)
Else
nCount2 = Count
nLevel = Level
End If
zFillDummies Nodes, nNode, nCount2, nLevel - 1, _
DoRandom, Expand, RandomExpand, RandomImages
End If
Next 'i
End Sub

|
|
|