Trying to parse a set of TreeView nodes and their children’s nodes and their children’s nodes can be confusing. This algorithm makes the process easier. Recursion describes an algorithm that can call itself. This is especially useful in COM’s object hierarchy. Collections that can reference other collections can be easily handled with a recursive procedure. To begin the recursion, place this code in a CommandButton labeled “View Nodes.” Here you create a variable to store the results of the procedure and start the recursion, and also display the results when the routine is finished:
Dim N As Node, aNodes As String, lLevel As LongSet N = TreeView1.SelectedItemIf N.Children Then aNodes = "+" & N.Text Else _ aNodes = N.TextEnumChildren N, aNodes, lLevelMsgBox aNodes
Next is the recursive procedure. It calls itself after changing the Node parameter, and the lLevel variable is incremented at the beginning of the routine and decremented at the end. This variable determines the distance to tab from the beginning of the display line, and therefore shows the nodes in the proper child-parent relationship:
Sub EnumChildren(N As Node, aNodes As String, _ lLevel As Long) lLevel = lLevel + 1 Dim nC As Node If N.Children Then Set nC = N.Child Do If nC.Children Then aNodes = aNodes & vbCrLf & String$ _ (lLevel, vbTab) & "+" & nC.Text Else aNodes = aNodes & vbCrLf & String$ _ (lLevel, vbTab) & nC.Text End If EnumChildren nC, aNodes, lLevel If nC.Index = N.Child.LastSibling. _ Index Then Exit Do Set nC = nC.Next Loop End If lLevel = lLevel - 1End Sub