- •Лабораторная работа №8. Работа в delphi.
- •Создание МикроПроводника
- •Задание 1 Изучение 4 – ёх перечисленных компонентов
- •Задание 2.1. Таким образом, запрограммируем, так чтобы при выборе конкретного файла в FileListBox1 и двойном щелчке на нём данный файл открывался сопоставленным с ним приложением.
- •Задание 2.4 Покажем как сформировать окно заставки появляющееся на 3 секунды, а затем исчезающее
Лабораторная работа №8. Работа в delphi.
Создание МикроПроводника
В Windows имеется стандартное приложение «Проводник», однако в Delphi имеются компоненты позволяющие построить из них аналогичное приложение.
Delphi предоставляет программисту 4 компонента, которые можно использовать для работы с файлами и каталогами которые располагаются на палитре Win3.1:
Компонент DirectoryListBox1 Отображает информацию о текущем каталоге и предоставляет пользователю изенять данные установки. В большинстве случаев данный компонент используется совместно с компонентом FileListBox1
Компонент DriveComboBox1 Отображает все дисководы в системе, позволяет выбрать один из них. В большинстве случаев данный компонент используется совместно с компонентом DirectoryListBox1, поэтому пользователь имеет возможность перейти к другому устройству и просмотреть его каталоги.
Компонент FileListBox1 Отображает файлы в текущем каталоге, может либо выводить информацию обо всех файлах, либо выбирать для отображения группу файлов, используя фильтры, например *.pas или *.txt. Данный компонент обычно связывается с элементом Edit, предоставляя пользователю возможность вводить и редактировать имена файлов.
Компонент FilterComboBox1 Содержит фильтры, которые пользователь может выбирать для того, чтобы ограничить набор файлов, отображаемых компонентом FileListBox1.
Задание 1 Изучение 4 – ёх перечисленных компонентов
Создайте новый проект. Сбросьте DirectoryListBox1 на форму справа, а FileListBox1 слева, а также DriveComboBox1 справа и FilterComboBox1 слева. А также кнопку Button1. Всё должно выглядеть следующим образом:
Рис. 1 Окно приложения «Микропроводник»
Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы можете легко перемещаться по папкам, однако файлы содержащиеся в текущем каталоге компонента DirectoryListBox1 не отображаются в FileListBox1. Исправим это. Вернитесь в РП (Режим программирования)
Настроим компонент DirectoryListBox1 на FileListBox1, так чтобы при навигации по папкам в FileListBox1 отображались файлы, находящиеся в текущем каталоге DirectoryListBox1.
В обработчике FormCreate формы напишите:
DirectoryListBox1.FileList:=FileListBox1;
Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы обнаружите, что файлы содержащиеся в текущем каталоге компонента DirectoryListBox1 начали отображаться в FileListBox1. Однако вы не можете перемещаться по жестким дискам. Вернитесь в РП.
Для навигации по жестким дискам, дисководам, и т.д. следует настроить компонент DriveComboBox1 на DirectoryListBox1.
В обработчике FormCreate формы к уже написанному, допишите следующее:
DriveComboBox1.DirList:=DirectoryListBox1;
Запустите программу, пощелкайте мышкой в DirectoryListBox1. Вы обнаружите, что владеете полной навигацией по всем каталогам, всех дисков. Вернитесь в РП.
Далее поместите на форму несколько компонентов Label, а также Edit1 над компонентом FileListBox1 (рис 2)
Рис. 2 Добавляем компоненты TLabel для отображения
полной информации при навигации по папкам с файлам
Будем в Label1 выводить обрезанный путь к файлу, а в Label2 полный путь.
В обработчике FormCreate формы к уже написанному, допишите следующее:
DirectoryListBox1.DirLabel:=Label1; //Настраиваем DirectoryListBox1.DirLabel на
//Label1
Label2.Caption:= DirectoryListBox1.Directory; // просто выводим путь в Caption
Запустите программу. Убедитесь в правильности ее работы. Вернитесь в РП.
При навигации по файлам, часто используется окно редактирования, здесь в его качестве используется обычный компонент Edit1. После запуска программы, в окне отображается фильтр *.*, который выбирает все файлы каталога, а также отображает имена выбранных файлов.
В обработчике FormCreate формы к уже написанному, допишите следующее:
FileListBox1.FileEdit:=Edit1; // Настраиваем FileListBox1.FileEdit на Edit1
Запустите программу. Убедитесь в правильности ее работы. Вернитесь в РП.
Конечно же, часто требуется выбор файлов по заданному расширению который обеспечивает компонент FilterComboBox1. Зайдите в его свойство Filter и укажите следующие типы расширений:
Рис. 3 Задаем расширения файлов которые будут отображаться в FileListBox1
В обработчике FormCreate формы к уже написанному, допишите следующее:
FilterComboBox1.FileList:=FileListBox1;
Запустите программу. Убедитесь, что изменение расширения влияет на отображаемые файлы в FileListBox1. Вернитесь в РП.
В общем случае чтобы обратиться к имени выбранного файла нужно обратиться к свойству FileName компонента FileListBox1.
Войдите в обработчик щелчка FileListBox1Click и напишите там следующее:
ShowMessage(FileListBox1.FileName);
Запустите программу. Убедитесь, что при выборе файла его имя отобразится на экране. Вернитесь в РП.
Теперь, здесь же в обработчике данного щелчка закомментируйте эту инструкцию (поставьте перед ней комментарии // или {}), чтобы компилятор её не воспринимал:
// ShowMessage(FileListBox1.FileName);
Если не требуется информация о полном пути, содержащемся в строке FileListBox1.FileName то её можно обработать одной из функций Delphi для управления файлами: ExtractFileExt, ExtractFileName и ExtractFilePat.
Сделаем это, путем присвоения значений работы этих функций соответствующим свойствам Caption компонентов Label3, Label4 и Label5.
Здесь же в обработчике данного щелчка допишите следующее:
with FileListBox1 do begin
Label3.Caption:=ExtractFileExt(FileName);
Label4.Caption:=ExtractFileName(FileName);
Label5.Caption:=ExtractFilePath(FileName);
end;
Запустите программу. Изучите что делает, какая функция. Вернитесь в РП.
Далее, чтобы можно было выбирать несколько файлов в FileListBox1 установите значение его свойства MultiSelect в True.
Теперь при запуске программы можно мышкой выделять несколько файлов, а если удерживать Ctrl можно выбирать мышкой разные файлы.
Запустите программу. Убедитесь, что можно выбирать несколько файлов. Вернитесь в РП.
Интерес представляет выявление списка выбранных файлов, чтобы потом передать их приложению. Поэтому сбросьте ListBox1 (палитра Standard), а также Button1 (установите Caption в “Run”) на форму
Рис. 4 Добавляем компонент ListBox1 для отображения в
нём выбранных файлов в FileListBox1
Будем определять все выбранные файлы и помещать их в список компонента ListBox1
Всё здесь же, в обработчике щелчка FileListBox1Click допишите следующее:
ListBox1.Clear; // Каждый раз очищаем ListBox1
with FileListBox1, Items do begin//Работаем с массивом Items компонента FileListBox1
If SelCount>0 then // Если выбран один или более элемент массива (файл )
for i:=0 to Count-1 do // то, Пробегаем по индексам массива Items и если
If Selected[i] then // попался выбранный(выделенный) элемент массива
ListBox1.Items.Add(Items[i]); // Добавляем его в ListBox1
end;
Не забывайте что в данный обработчик следует добавить ключевое слово Var, так как появилась переменная i типа integer. В общем виде весь обработчик должен выглядеть так:
procedure TForm1.FileListBox1Click(Sender: TObject);
var i:integer;
begin
//ShowMessage(FileListBox1.FileName);
with FileListBox1 do begin
Label3.Caption:=ExtractFileExt(FileName);
Label4.Caption:=ExtractFileName(FileName);
Label5.Caption:=ExtractFilePath(FileName);
end;
ListBox1.Clear;
with FileListBox1, Items do begin
If SelCount>0 then
for i:=0 to Count-1 do
If Selected[i] then
ListBox1.Items.Add(Items[i]);
end;
end;
Запустите программу. Убедитесь, что при выборе нескольких файлов они отображаются в ListBox1. Вернитесь в РП.
Задание 2 Запуск Программ
Одной навигации по файлам мало. Интерес представляет возможность запустить любое внешнее приложение из своей собственной программы.
В Windows существует такое понятие как WIN API Application Program Interface – Интерфейс Прикладного Программирования представляющий из себя большой набор системных процедур и функций операционной системы.
Одна из часто используемых и полезных функций WIN API является функция ShellExecute, она объявлена следующим образом:
ShellExecute(Wnd: HWnd; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): THandle;
Функция возвращает дескриптор (в данном случае разновидность указателя) открытого приложения. Если возвращаемое значение меньше или равно 32 это указывает на ошибку.
Wnd – Дескриптор родительского окна из которого запускаются внешние приложения
Operation – Указатель на строку с нулевым символом в конце, строка может содержать «open» или «print». Если данный параметр равен nil по умолчанию выполнится операция «open»
FileName – имя файла
Parameters – передаваемые параметры, часто nil
Directory – каталог
ShowCmd – режим открытия файла, может иметь 12 значений, перечислим 4:
SW_HIDE |
Окно делается невидимым |
SW_MINIMIZE |
Свертывает окно |
SW_SHOW
|
Активизирует и отображает окно в его текущей позиции с текущими размерами |
SW_SHOWMINNOACTIVE
|
Отображает окно в виде пиктограммы |
Функция ShellExecute позволяет выполнить любое приложение Windows. Можно также открыть файл и если с ним сопоставлено любое приложение оно запустится.