Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Beginner
Nov 3, 1999

Enumerate Treeview Nodes Recursively

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 Long
Set N = TreeView1.SelectedItem
If N.Children Then aNodes = "+" & N.Text Else _
	aNodes = N.Text
EnumChildren N, aNodes, lLevel
MsgBox 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 - 1
End Sub
Matt Hart
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date