Стандартный диалог для открытия файла
Для добавления в программу стандартного диалога для открытия файла добавьте на форму компонент OpenDialog с вкладки Палитры компонентов:
Также добавьте на форму обычную кнопку. Именно при щелчке по ней и будут показываться наше диалоговое окно для открытия файла.
Для того, чтобы при нажатии на кнопку диалоговое окно появилось, добавьте в ее обработчик следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;
Разумеется, для работы с файлом не достаточно только вызвать наше диалоговой окно. Необходимо еще извлечь из него имя выбранного файла. Вот как это делается (в приведенном примере содержимое выбранного пользователем текстового файла показывается в компоненте Memo1 типа TMemo, котрый надо разместить на форме):
...
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
...
Таким образом для извлечения файла мы используем свойство FileName нашего диалога.
Обратите внимание, что с помощью if мы проверяем, выбрал ли пользователь вообще что-нибудь. Если пользователь ничего не выбрал, то OpenDialog1.Execute возвращает false, и последующий код не выполняется.
Вот еще несколько полезных свойств для нашего диалога для открытия файлов.
Для открытия в диалоге заранее определенной папки используем свойство InitialDir:
...
OpenDialog1.InitialDir:='D:\';
if OpenDialog1.Execute then
Для создания фильтров используем свойство Filter. При использовании фильтров пользователю будут показываться не все файлы, а только определенные фильтром. Фильтр можно задавать как в редакторе фильтров, так и в тексте программы на этапе выполнения. Для задания фильтра в редакторе фильтров нажмите накнопку с многоточием свойства Filter:
Затем просто заполните левый и правый столбцы. Левый определяет, что за надпись увидит пользователь, а правый - что за файлы будут показываеться:
Обратите внимание, что мы можем для одного описания задать несколько масок, разделяя их точкой с запятой.
Свойство FilterIndex диалогового окна определяет номер активного фильтра (т. е. того, который будет выбран при вызове диалога). Нумерация при этом начинается с единицы.
А вот так можно задать несколько фильтров в тексте программы:
...
OpenDialog1.Filter:='Текстовые файлы|*.txt; *.ini|Временные файлы|*.tmp';
...
Параметры тут разделяются на пары Описание-Фильтр. В качестве разделителя используем |.
Стандартный диалог для сохранения файла
Вполне естественно после диалога для открытия файла рассмотреть диалог для сохранения файла. Вот так выглядит соответствующий компонент на вкладке Dialogs Палитры компонентов:
Принципиально диалог для сохранения файла почти не отличается от диалога для открытия файла. Свойства FileName, InitialDir, Filter, FilterIndex и другие используются точно так же, как и в диалоге для открытия файла. Вот пример для сохранения содержимого Memo1 в файле, имя которого задает пользователь:
...
SaveDialog1.Execute;
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
...
Из свойств, применяемых более для сохранения файла, отметим DefaultExt. Оно определяет расширение, автоматически прибавляемое к сохраняемому файлу. Это свойство можно задать в окне Инспектора объектов на этапе разработки программы. А вот пример его задания в прямо в коде:
...
SaveDialog1.DefaultExt:='123';
...
После этого к имени введенного пользователем файла автоматически прибавится расширение .123.