OpenDialog — диалоговое окно выбора имени файла
Диалоговые окна выбора имени файла используются в процессах открытия и сохранения файла. Часто эти диалоги называют также диалогами открытия/сохранения файла, хотя на самом деле они позволяют только выбрать имя файла, а все действия по открытию или сохранению файла программируются вручную.
Компонент OpenDialog реализует диалог открытия файла. При запуске этого диалога появляется окно (см. скриншот), в котором можно выбрать имя открываемого файла. В случае успешного закрытия диалогового окна (нажатием кнопки Open) в качестве результата возвращается выбранное имя файла.
Компонент SaveDialog предлагает стандартный диалог сохранения файла, который отличается от диалога открытия файла только своим заголовком.
Основные свойства компонентов OpenDialog и SaveDialog
Далее перечислены основные свойства компонентов OpenDialog и SaveDialog.
FileName типа String — указывает имя и полный путь файла, выбранного в диалоге. Имя файла отображается в строке редактирования списка Имя файла и является результатом диалога.
Title типа String— задает заголовок окна. Если свойство Title не установлено, то по умолчанию используется заголовок Open для OpenDialog и заголовок Save — для SaveDialog.
InitiaLDir типа String— определяет каталог, содержимое которого отображается при вызове диалогового окна. Если каталог не задан, то отображается содержимое текущего каталога.
DefaultExt типа String — задает расширение, автоматически используемое в имени файла, если пользователь не указал расширение.
Filter типа String— задает маски имен файлов, отображаемых в раскрывающемся списке Тип файлов. В диалоговом окне видны имена файлов, совпадающие с указанной маской (см. скриншот) это файл с расширением jpeg). По умолчанию значением Filter является пустая строка, что соответствует отображению имен файлов всех типов.
FilterIndex типа Integer — указывает, какая из масок фильтра отображается в списке. По умолчанию свойство FilterIndex имеет значение 1 (используется первая маска).
Options
Options типа TOpenOptions — применяется для настройки параметров, управляющих внешним видом и функциональными возможностями диалога. Каждый параметр (флажок) может быть установлен или снят. Свойство Options имеет около двух десятков параметров, наиболее важные перечислены ниже:
Основные параметры свойства Options
- ofAllowMultiSelect (из списка можно выбрать одновременно более одного файла);
- ofCreatePrompt (при вводе несуществующего имени файла выдается запрос на создание файла);
- ofNoLongNames (имена файлов отображаются как короткие, не более 8 символов для имени и 3 символов для расширения);
- ofOldStyleDialog (создает диалоговое окно в стиле Windows 3.11).
Фильтр представляет собой последовательность значений, разделенных знаком |. Каждое значение состоит из описания и маски, также разделенных знаком |. Описание представляет собой обычный текст, поясняющий пользователю данную маску. Маска является шаблоном отображаемых файлов и состоит из имени и расширения. Если для одного описания приводится несколько масок, то они разделяются знаком ;.
Пример масок:
- OpenDialog1.Filter := 'Текстовые файлы|*.txt; *.doc|Все файлы|*.*';
Здесь фильтр формируется с двумя масками — маской для текстовых файлов и маской для всех файлов (под текстовыми понимаются файлы типов doc и txt).
Так как в раскрывающемся списке диалогового окна отображается только описание фильтра, то для удобства целесообразно включить в описание и маску, например, так:
- OpenDialog1.Filter:='Текстовые файлы *.txt;*.doc|*.txt;*.doc|Все файлы *.*|*.*';
Фильтр обычно формируется при проектировании приложения. Для этого из окна Инспектора объектов щелчком в области значения свойства Filter вызывается Редактор фильтра (Filter Editor).
Рабочее поле окна Редактора фильтра представляет собой таблицу, состоящую из двух столбцов с заголовками Filter Name и Filter. Значения фильтра вводятся построчно, при этом в левом столбце указывается описание фильтра, а в правом — соответствующая маска (скриншот уже был выше).
Стандартные диалоговые окна выбора имени файла для открытия или сохранения файла вызываются на экран методом Execute. Эта функция в качестве результата возвращает логическое значение, позволяющее определить, как закрыт диалог. Если пользователь в процессе диалога нажал кнопку Open или Save, то диалог считается принятым, и функция Execute возвращает значение True. Если диалог был закрыт любым другим способом, то он считается не принятым, и функция возвращает значение False.
- procedure TForm1.Button2Click (Sender: TObject);
- begin
- if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
- end;
При нажатии кнопки Button2 появляется диалоговое окно OpenDialog1 выбора имени файла для открытия. При выборе имени текстового файла его содержимое загружается в компонент Memo1. Напомним, что многострочный редактор Memo позволяет работать с текстами в коде ANSI. При отмене диалога OpenDialog1 открытие файла не происходит.
Компоненты OpenPictureDialog и SavePictureDialog вызывают стандартные диалоги открытия и сохранения графических файлов. Эти стандартные диалоги отличаются от OpenDialog и SaveDialog видом окон (см. скриншот) и установленными значениями свойства Filter.
Так, по умолчанию свойство Filter установлено для отображения графических файлов следующих форматов:
- JPEG (*.jpg);
- JPEG (*.jpeg);
- растровое изображение (*.bmp);
- значок (*.ico);
При использовании диалогов OpenPictureDialog и SavePictureDialog, а также OpenDialog и SaveDialog значение свойства Filter можно установить ранее рассмотренными способами, а также с помощью функции GraphicFilter (GraphicClass: TGraphicCiass) : String.
Параметр GraphicClass принадлежит к одному из графических классов: TBitmap, TGraphic (и его потомки), TIcon, TMetafile или TJPEGimage. Для работы с классом TJPEGimage нужно подключить модуль jpeg. В качестве результата функция GraphicFilter () возвращает строку с фильтрами для указанного графического класса:
TBitmap — Bitmaps (*.bmp) |*.bmp;
TIcon—Icons (* . ico) I * . ico;
TMetafile — All (*.emf;*.wmf) |*.emf;*.wmf|Enhanced Metafiles(*.emf)| *.emf|Metafiles(*.wmf) |*.wmf;
TJPEGimage — All (*.jpeg;*.jpg) | *.jpeg;*.jpg| JPEG Image File (*.jpeg) |*.jpeg| JPEG Image File (*.jpg)| *.jpg;
TGraphic — All (*.jpeg;*.jpg;*.bmp;*.ico;*.emf;*.wmf) | *.jpeg;*.jpg; *.bmp;*.ico;*.emf; *.wmf|JPEG Image File (*.jpeg) | *.jpeg| JPEG Image File (*.jpg) |*.jpgI Bitmaps (*.bmp) | *.bmp| Icons(*.ico) |*.ico | Enhanced Metafiles(*.emf)|*.emf|Metafiles(*.wmf)I*.wmf.
Если модуль jpeg в разделе uses не указан, то фильтры, соответствующие формату JPEG, будут отсутствовать.
Например, фильтр, заданный как OpenDialog1.Filter := GraphicFilter(TGraphic); позволяет отображать имена графических файлов допустимых форматов.
2 комментария к “OpenDialog — диалоговое окно выбора имени файла”
Спасибо! Помогли найти подключение формата Jpeg к просмотру!
При открытии диалога ( Дельфи 7) в окне диалога получаются имена файлов без расширения. Где выполнить настройку?
Никак не могу найти.