Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 3:

Работа с устройствами, папками, файлами

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Аннотация: Рассматривается работа с объектами файловой системы. Особый интерес представляет классический вопрос записи данных в файл, чтение данных из файла, поддерживаемый практической работой 19.

Элементы управления DriveListBox, DirListBox и FileListBox

Для работы с деревом файлов используйте элементы управления DriveListBox, DirListBox и FileListBox панели элементов управления (рис. 3.1).

DriveListBox, DirListBox и FileListBox

Рис. 3.1. DriveListBox, DirListBox и FileListBox

Имеется возможность после старта проекта выбрать требуемый объект, например файл каталога некоторого дискового устройства для дальнейшей работы с ним. Рассмотрим кратко некоторые параметры этих элементов управления:

  • DriveListBox (рис. 3.1 вверху слева). Имена дисковых устройств (свойство Name) в соответствии с соглашением по коду начинаются с drv; важным свойством является Drive, оно доступно только во время выполнения проекта и определяет выбранное пользователем дисковое устройство. Из имеющихся событий представляет интерес Change, происходящее при выборе пользователем нового дискового устройства,
  • DirListBox (рис. 3.1 в середине слева). При выборе нового дискового устройства в поле элемента управления DirListBox выводится список соответствующих каталогов. Имена каталогов в соответствии с соглашением по коду начинаются с dir. Свойство Path, доступное во время выполнения, задает/возвращает путь к каталогу, выбранному пользователем из списка. Списки обновляются в процедуре события Change,
  • FileListBox (рис. 3.1 внизу слева). В списках файлов перечисляются файлы текущего каталога, откуда их можно выбрать. Имеется около 50 свойств. Свойство Path доступно только во время выполнения, его можно задать и возвратить. Свойства Hidden, Normal, ReadOnly, System, Archive дают возможность вывести в список только требуемые файлы. Имеется около 20 событий. Часто в процедуре CommandК_Click () выполняются действия, связанные со значениями Path и FileName списка файлов.

Чтобы обеспечить совместное функционирование элементов управления DriveListBox, DirListBox и FileListBox после размещения их на форме, нужно создать синхронизирующие их работу процедуры:

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Для вывода содержимого каталога после его маркировки и нажатия клавиши Ввод нужно ввести код:
Private Sub Dir1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex) 
End Sub

Здесь свойство ListIndex характеризует маркированную пользователем строку, см. ниже.

В распоряжение пользователя предоставлен ряд функций, некоторые из них приведены ниже.

  • ChDrive имя дискового устройства - перейти на другое дисковое устройство,
  • ChDir путь - перейти в другой каталог,
  • MkDir путь - создать каталог,
  • RmDir путь - удалить каталог,
  • FileCopy источник, цель - копировать файл.
  • SetAttr - установить атрибуты файла/каталога; допускается комбинация атрибутов.

Информация об атрибутах дана в табл. 3.1

Таблица 3.1. Атрибуты файлов
Значение атрибута Имя константы Пояснение
0 vbNormal Свободный доступ
1 vbReadOnly Только для чтения
2 vbHidden Скрытый
4 vbSystem Системный
8 vbVolume Дисковое устройство
16 vbDirectory Каталог
32 vbArchive Архив

Практическая работа 17. Элементы управления DriveListBox, DirListBox и FileListBox

Для приобретения навыков работы с файловой системой выполнить следующее:

  1. Создать на форме элементы управления DriveListBox, DirListBox и FileListBox, рис. 3.1, синхронизировать работу объектов, см. соответствующие процедуры, приведенные выше,
  2. создать на форме командные кнопки:
    • Path для процедуры вывода пути и меню в поля меток, см. код и рис. 3.1,
    • Copy NET14.ICO для процедуры копирования файла (здесь - файла NET14.ICO) с заданием имени файла в процедуре и выводом данных в поле метки, см. код и рис. 3.1,
    • Copy File1 для процедуры копирования файла (здесь - файла File1) с заданием файла путем маркировки его имени в списке файлов FileListBox и выводом данных в поле метки, см. код и рис. 3.1,
    • Make Directory для создания каталогов, см. код и рис. 3.1,
  3. ввести код данный ниже:
    ' синхронизация работы элементов управления и 
    ' обеспечение вывода содержимого каталогов при 
    ' нажатии клавиши Enter
    Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
    
    Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
    
    Private Sub Dir1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex)
    End Sub
    
    Private Sub Command1_Click() ' вывод пути и имени файла
    Label1 = Drive1: Label2 = Dir1: Label3 = File1
    End Sub
    
    ' процедура многократного копирования файла 
    ' последовательным нажатием командной кнопки
    Private Sub Command3_Click() 
    Static i As Integer
    FileCopy "A:\Net14.ICO", "A:\FileN"
    ' вывод имени копируемого файла и числа копирований
    Label4 = File1 & " Copy " & i +1
    i = i + 1
    End Sub
    
    ' процедура копирования файла путём маркировки файла в 
    ' списке FileListBox и последующего старта 
    ' соответствующей процедуры
    Private Sub Command4_Click()
    Static i As Integer
    Print File1: FileCopy File1, "FileN": Label5 = File1 & " Copy " & i + 1
    i = i + 1
    End Sub
    
    ' создание каталогов
    Private Sub Command2_Click()
    MkDir а1: MkDir а2
    End Sub
  4. стартовать проект и затем:
    • в списке DriveListBox выбрать, например, дисковое устройство А:. Маркировкой имени каталога и последовательным нажатием клавиши Enter вывести на экран содержимое. Маркировать некоторый файл (здесь - NET14.ICO), сделать щелчок на кнопке Path,
    • сделать щелчок на кнопке Copy NET14.ICO,
    • сделать щелчок на кнопке Copy File1,
    • сделать щелчок на кнопке Make Directory.
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова