devxlogo

Sequential Navigation of a TreeView Control

Sequential Navigation of a TreeView Control

While the TreeView control with its associated Node objects isa far cry better than the VB3 Outline control, it lacks a methodfor sequentially traversing the tree, as if you were scrollingusing the up and down arrow keys. The For Each construct allowsyou to process every node, but in order of Index, which can bemeaningless if the tree is sorted by the display text. This code,to be called after the TreeView has been loaded and sorted, createsa 1-based array of keys in the order that the Nodes appear ina TreeView:

 Global asKey() as StringSub Main()        '...Fill the TreeView1 control        ReDim asKey(1 To _                TreeView1.Nodes.Count) As String        KeyArray TreeView1.Nodes(1).Root.FirstSibling, 1End SubPrivate Sub KeyArray(n as Node, _        Optional iStart)        Static i As Integer                If IsMissing(iStart) Then                i = i + 1        Else                i = iStart        End If                asKey(i) = n.Key        If n.Children > 0 Then KeyArray _                n.Child                Do While n  n.LastSibling                i = i + 1                Set n = n.Next                asKey(i) = n.Key                If n.Children > 0 Then _                        KeyArray n.Child        LoopEnd Sub

The first sibling of the root of an arbitrary node is used toreturn the first entry in the TreeView. The use of the Optionalparameter allows the routine to be called whenever the TreeViewis reloaded or modified. Once the array is established, it allowsfor sequential navigation or searching, or whatever operationwould benefit from knowing the order of all Nodes.

devx-admin

Share the Post: