'shuwork 自Programming Microsoft Visual Basic 6.0 收藏 
Option Explicit 
' True if Cancel was pressed to close this form Public CancelPressed As Boolean 
Private m_Path As String 
' this is used by many routines in the module Dim FSO As New Scripting.FileSystemObject 
Private Sub Form_Load()     ' build the subdirectory tree     DirRefresh End Sub 
Private Sub Form_Resize()     ' the distance among controls     Const DISTANCE = 100     Dim tvwTop As Single          ' move the buttons and the label     lblPath.Move DISTANCE, 0, ScaleWidth, lblPath.Height     cmdOK.Move ScaleWidth / 2 - DISTANCE - cmdOK.Width, ScaleHeight - DISTANCE - cmdOK.Height     cmdCancel.Move ScaleWidth / 2 + DISTANCE, cmdOK.Top     ' resize the treeview control     ' the Top position depends on the visibility of the lblPath label     If lblPath.Visible Then         tvwTop = lblPath.Top + lblPath.Height     Else         tvwTop = DISTANCE     End If     tvwDir.Move DISTANCE, tvwTop, ScaleWidth - DISTANCE * 2, ScaleHeight - tvwTop - cmdOK.Height - DISTANCE * 2 End Sub 
Private Sub DirRefresh()     ' build the treeview control     Dim dr As Scripting.Drive     Dim rootNode As node, nd As node          On Error Resume Next          ' add the "My Computer" root (expanded)     Set rootNode = tvwDir.Nodes.Add(, , "\\MyComputer", "My Computer", 1)     rootNode.Expanded = True          ' add all the drives, with a plus sign     For Each dr In FSO.Drives         If dr.Path <> "A:" Then         Err.Clear         Set nd = tvwDir.Nodes.Add(rootNode.Key, tvwChild, dr.Path & "\", dr.Path & " " & dr.VolumeName, 2)         If Err = 0 Then AddDummyChild nd         End If     Next      End Sub 
Sub AddDummyChild(nd As node)     ' add a dummy child node, if necessary     If nd.Children = 0 Then         ' dummy nodes' Text property is "***"         tvwDir.Nodes.Add nd.Index, tvwChild, , "***"     End If End Sub 
Private Sub tvwDir_Click()     m_Path = tvwDir.SelectedItem.Key     lblPath.Caption = tvwDir.SelectedItem.Key End Sub 
Private Sub tvwDir_Expand(ByVal node As ComctlLib.node)     ' a node if being expanded     Dim nd As node     ' exit if the node had been already expanded in the past     If node.Children = 0 Or node.Children > 1 Then Exit Sub     ' also exit if it doesn't have a dummy child node     If node.Child.Text <> "***" Then Exit Sub     ' remove the dummy child item     tvwDir.Nodes.Remove node.Child.Index     ' add all the subdirs of this Node object     AddSubdirs node End Sub 
Private Sub AddSubdirs(ByVal node As ComctlLib.node)     ' add all the subdirs under a node     Dim fld As Scripting.Folder     Dim nd As node 
    ' the path in the node is hold in its key property     ' cycle on all its subdirectories     For Each fld In FSO.GetFolder(node.Key).SubFolders         Set nd = tvwDir.Nodes.Add(node, tvwChild, fld.Path, fld.Name, 3)         nd.ExpandedImage = 4         ' if this directory has subfolders, add a "+" sign         If fld.SubFolders.Count Then AddDummyChild nd     Next End Sub 
Private Sub cmdOK_Click()     Unload Me End Sub 
Private Sub cmdCancel_Click()     CancelPressed = True     Unload Me End Sub
   
 
  |