Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi8.doc
Скачиваний:
62
Добавлен:
06.02.2015
Размер:
350.72 Кб
Скачать

Лабораторная работа №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. Можно также открыть файл и если с ним сопоставлено любое приложение оно запустится.

Соседние файлы в папке Лабы IT