|
Mit der Methode EnsureVisible eines Knotens in einem TreeView-Steuerelement können Sie sicherstellen, dass dieser Knoten sichtbar wird. Das bedeutet, dass alle ihm übergeordneten Knoten expandiert werden und dass der Knoten in den sichtbaren Bereich des TreeView-Steuerelements gerollt wird. Hingegen lässt sich die Frage, ob nun ein Knoten in einem TreeView-Steuerelement sichtbar ist, nicht so einfach beantworten.
Zwar gibt es die Visible-Eigenschaft eines Node-Elements, die offensichtlich True zurückgibt, wenn der gesamte Pfad bis zu dem Knoten geöffnet ist und der Knoten somit sichtbar ist. Allerdings ist das wörtlich zu verstehen. Denn liegt der Knoten außerhalb des sichtbaren Ausschnitts des TreeView-Steuerelements, gibt die Visible-Eigenschaft False zurück. Der Wert dieser Eigenschaft hat wohl demnach nichts mit dem Expansionszustand der übergeordneten Knoten zu tun.
Eine direkte Methode oder Eigenschaft zur Prüfung, ob die übergeordneten Knoten eines Knotens geöffnet sind, stellen jedoch weder das TreeView-Steuerelement noch die Node-Elemente oder die Nodes-Collection zur Verfügung. Es bleibt Ihnen nur die Möglichkeit, sich von einem Knoten ausgehend so lange durch alle übergeordneten Knoten aufwärts zu hangeln, bis Sie entweder auf einen nicht expandierten Knoten oder auf den Wurzelknoten des betreffenden Zweiges treffen.
Dies lässt sich am einfachsten über eine rekursive Funktion erreichen, die Sie zunächst mit dem gegebenen Knoten aufrufen, und die sich so lange selbst wieder unter Übergabe des jeweiligen Eltern-Knotens aufruft, bis eine der beiden Bedingungen erfüllt ist.
Public Function IsPathExpanded(Node As Node) As Boolean
Dim nParentNode As Node
With Node
If Node.Root Is Node Then
IsPathExpanded = .Expanded
Else
Set nParentNode = Node.Parent
If nParentNode.Expanded Then
IsPathExpanded = IsPathExpanded(nParentNode)
End If
End If
End With
End Function
|