1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | Dim InitialFolder Dim OldDrive As String Dim TotalDir 'переменная для обозначение общего количества папок Private Sub Command1_Click() ChDrive Drive1 . Drive ChDir Dir1 . Path InitialFolder = CurDir Text2 . Text = "" ScanFolders End Sub Sub ScanFolders() Dim SubFolders As Integer ' ///начало обращения к внешней процедуре 'в данный блок вы можете вставить любую процедуру обработки текущей папки 'MsgBox CurrentFolder(Dir1.Path) ' просмотр текущей папки 'снимите маркер, если хотите получить общее количество папок, включая начальную 'TotalDir = TotalDir + 1 '\\\конец обращения к внешней процедуре 'В текст 1 . вводим то что ИЩЕМ. m = CurrentFolder(Dir1 . Path) If m = (Text1 . Text) Then Text2 . Text = Dir1 . Path + Chr$( 13 ) + Chr$( 10 ) + Text2 . Text End If SubFolders = Dir1 . ListCount 'сколько папок в текущей папке If SubFolders > 0 Then For i = 0 To SubFolders - 1 ChDir Dir1 . List(i) Dir1 . Path = Dir1 . List(i) File1 . Path = Dir1 . List(i) Form1 . Refresh ScanFolders Next End If File1 . Path = Dir1 . Path MoveUp End Sub Sub MoveUp() If Dir1 . List(- 1 ) <> InitialFolder Then ChDir Dir1 . List(- 2 ) Dir1 . Path = Dir1 . List(- 2 ) End If End Sub Private Sub Dir1_Change() ChDir Dir1 . Path File1 . Path = Dir1 . Path End Sub Private Sub Dir1_Click() With Dir1 .Path = .List(.ListIndex) End With End Sub Private Sub Drive1_Change() On Error GoTo ErrHan ChDrive Dir1 . Path Dir1 . Path = Drive1 . Drive Dir1 . Refresh 'присвоение этой переменной значение Drive1 . Drive для исключения ошибки OldDrive = Drive1 . Drive Exit Sub ErrHan: Drive1 . Drive = OldDrive End Sub Private Sub Form_Load() ChDrive App . Path ChDir App . Path End Sub Private Function CurrentFolder(sFolderPath) Dim str1() As String str1 = Split(sFolderPath, "\") CurrentFolder = str1(UBound(str1)) End Function |