Определение спецификации файла и папки

Для выполнения различных операций с указанными объектами необходимо предварительно определить спецификацию папки или файла, подвергающихся воздействию со стороны программы. Определение спецификаций возможно следующими способами:

· ввод по запросу с клавиатуры;

· выбор из списков дисков; папок и файлов; с возможностью ввода с клавиатуры;

· выбор в окне объекта Common Dialog.

Наиболее просто можно ввести спецификацию, применив обычное окно ввода на основе объекта InputBox. Фрагмент программы, реализующий эту идею, показан на рис. 4.17. Недостаток этого способа заключается в возможности ввода несуществующей или синтаксически неправильной спецификации файла. Способ применяют в ограниченных случаях не для широкого круга непрофессиональных пользователей программы.

Примечание: В строке ввода видна спецификация файла . . . Dim i As String 'описана переменная для 'спецификации файла . . . 'ниже выводится окно запроса i = InputBox("Введите имя файла", "Запрос") 'спецификация файла в переменной i   . . .
а) б)
Рис. 4.17. Пример простейшей реализации запроса спецификации файла: окно запроса (а) и текст фрагмента программы (б)

Более эффектным способом, но и более трудоемким, является организация создания спецификации файла на основе выбора ее элементов из списков дисков, папок и файлов с возможностью ввода имени файла. Списки дисков, папок и файлов создаются на основе объектов DriveListBox, DirListBox

Рис. 4.18. Форма для выбора папки и файла и FileListBox. Для обеспечения ввода имени папки или файла эти объекты дополняются объектом TextBox. Программисту приходится решать две задачи: обеспечить согласованное взаимодействие этих объектов и получить из них информацию. Пример формы для реализации этого способа показан на рис. 4.18, текст программы – на рис. 4.19.

На форме (рис. 4.18) показаны четыре объекта управления:

· DriveListBox с именем Dr1 для выбора диска,

· DirListBox с именем D1 для выбора папки,

· FileListBox с именем F1 для выбора файла,

· TextBox с именем TBS для создания спецификации папки или файла.

Public SpecFile As String . . . Private Sub D1_Change() F1.Path = D1.Path : TBS.Text = F1.Path : SpecFile = TBS.Text End Sub Private Sub Dr1_Change() D1.Path = Dr1.Drive: F1.Path = D1.Path: TBS.Text = F1.Path: SpecFile = TBS.Text End Sub Private Sub F1_Click() TBS.Text = F1.Path + "\" + F1.filename : SpecFile = TBS.Text End Sub Private Sub Form_Load() Dr1.Drive = "c:" : D1.Path = Dr1.Drive + "\Мои документы\Документы" F1.Path = D1.Path: TBS.Text = F1.Path: SpecFile = TBS.Text End Sub Private Sub TBS_ KeyPress () If KeyAscii =13 then SpecFile = TBS.Text End Sub
Рис. 4.19. Текст программы, реализующей второй способ выбора папки и файла

Дополнительно в секции General кода формы описана глобальная переменная SpecFile строкового типа для хранения спецификации файла.

В процедуре Form1_Load выполняется начальная установка свойств указанных объектов обычными операторами присваивания., процедура Dr1_Change выполняет формирование спецификации папки как корневого каталога выбранного диска. Формирование спецификации папки выбором ее из списка папок выполняется в процедуре D1_Change, а формирование спецификации файла – в процедуре F1_Click. Программа позволяет задать спецификацию папки или файла принудительно вводом с клавиатуры. Сигналом окончания ввода с клавиатуры служит нажатие клавиши Enter, отслеживаемое обработчиком события TBS_KeyPress().

Внимание!!! 1. В данном примере не показаны разложение спецификации с целью выявления имени диска, пути и имени файла, а также обработка ошибки при вводе неверной спецификации файла.

2. В результате работы программы будет определена переменная SpecFile, но не будут изменены текущие диска и каталог.

Самым современным способом является применение объекта Common Dialog, позволяющим определить файл в стандартном окне, открытом методом ShowOpen или ShowSave. Схема формы в момент проектирования приведена на рис. 4.20, текст процедуры, вызывающей объект при щелчке по

  Рис. 4.20. Форма с Common Dialog в момент проектирования кнопке Com1, приведен на рис. 4.21. В примере кнопка вызова объекта имеет имя Com1, объект CommonDialog – имя CD1. Перед вызовом объекта необходимо провести подготовку вызова: установку заголовка окна, начального пути к файлу, списка фильтров имен файлов и номер фильтра по умолчанию.