This example scans the path of a directory listbox (Dir1)
It will also support pattern matching. ie: only scanning certain types of files, like *.jpg or *.exe.
Recursion is when a routine calls itself.. If a subfolder is found, then RecurseFiles2 calls itself to scan the sub folder/s encountered.
' In general Declarations
Dim tvn As Node
Private Sub Command1_Click()
Me.MousePointer = vbHourglass
TreeView1.Nodes.Clear
' Pathname to create folder/file list from
p$ = Dir1.Path
If Right$(p$, 1) <> "\" Then p$ = p$ + "\"
Set tvn = TreeView1.Nodes.Add(, tvwParent, p$, p$)
RecurseFiles2 p$
Me.MousePointer = vbDefault
End Sub
Sub RecurseFiles2(ByVal fPath As String)
Dim File_Name As String
Dim File_Read As Integer ' Number of Files Read
Dim strTempPath As String
Dim i As Integer
If Right$(fPath, 1) <> "\" Then fPath = fPath & "\"
' to do a pattern match do, or something.
' folders won`t be included in the list (not my fault)
' File_Name = Dir$(fPath+"\*.exe", vbDirectory)
File_Name = Dir$(fPath, vbDirectory)
File_Read = 1
Do While File_Name <> ""
If File_Name <> "." And File_Name <> ".." Then
strTempPath = fPath & File_Name
If GetAttr(strTempPath) And vbDirectory Then
Set tvn = TreeView1.Nodes.Add(fPath, tvwChild, strTempPath + "\", File_Name)
RecurseFiles2 strTempPath ' if a folder, then call this routine to scan that folder (recursion)
File_Name = Dir$(fPath, vbDirectory)
For i = 2 To File_Read
File_Name = Dir$
Next
Else
Set tvn = TreeView1.Nodes.Add(fPath, tvwChild, strTempPath, File_Name)
End If
End If
File_Name = Dir$
File_Read = File_Read + 1
Loop
End Sub
/html>
Comments