We need you!

We're working hard on the next version of Developer Fusion. Let us know what you think we should be up to!

Members

Technology Zones

Articles

Hosted By

MaximumASP

Info

Rated
Read 46,015 times

Related Categories

Treeview Files/Folder Lists Recursively

Kimmy

You will need a command button called Command1 to start the scan and a treeview control called Treeview1.
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>

Till the Roof comes off Till the Lights go out Till my Legs give out Can't shut my mouth I will not fall, my Wisdoms all.

Comments