Диалоговые окна открытия и сохранения файла

Шаг 30. Диалоговые окна для выбора открываемого или сохраняемого файла организуются с помощью компонентов OpenDialog и SaveDialog (рисунок 8.29). Найдите их в палитре компонентов на вкладке Dialogs и поместите на форму. Первый компонент назовите OpenDialog, а второй - SaveDialog.


 

 

 

Рисунок 8.28. Компоненты OpenDialog и SaveDialog

Характерные свойства этих компонентов кратко описаны в таблице 8.6.

Свойство Описание
DefaultExt Расширение, которое добавляется к имени файла, если пользователь его не указал.
FileName Имя выбранного файла.
Filter Фильтры имени файла.
FilterIndex Номер активного фильтра.
InitialDir Начальный каталог, открываемый при первом появлении окна диалога.
Options Параметры, определяющие внешний вид и поведение окна диалога. (см. таблицу 8.7).
OptionsEx Дополнительные параметры, определяющие внешний вид и поведение окна диалога (см. таблицу 8.7).
Title Заголовок окна диалога. Если значение свойства не указано, то заголовок будет стандартным - Open (Открыть) или Save (Сохранить) в зависимости от типа компонента.
OnCanClose Происходит, когда пользователь пытается закрыть окно диалога. Позволяет выполнить дополнительные проверки и отменить закрытие окна при необходимости.
OnClose Происходит непосредственно перед закрытием формы после события OnCanClose.
OnFolderChange Происходит, если пользователь переходит в другой каталог.
OnIncludeItem Происходит при добавлении каждого файла в список отображаемых в окне файлов. Позволяет выполнять дополнительную фильтрацию файлов.
OnSelectionChange Происходит при смене выделенного файла или списка файлов.
OnShow Происходит непосредственно перед отображением окна диалога на экране.
OnTypeChange Происходит, когда пользователь выбирает фильтр.
Таблица 8.6. Важнейшие свойства и события компонентов OpenDialog и SaveDialog.

Компоненты OpenDialog и SaveDialog очень схожи между собой, оба являются объектно-ориентированными оболочками стандартных диалоговых окон Windows: Open и Save. На следующем рисунке показано окно Open (рисунок 8.29).


 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 8.29. Стандартное окно Open для выбора открываемого файла

Приблизительный сценарий работы с каждым из компонентов OpenDialog и SaveDialog таков. Компонент помещается на форму и конфигурируется для выбора тех или иных файлов. По команде меню Open... или Save As... у соответствующего компонента вызывается метод Execute. Он вызывает диалог и возвращает значение True, если пользователь выбрал файл. Полный маршрут к файлу запоминается в свойстве FileName. Ход дальнейших действий зависит от прикладной задачи и, как правило, включает или чтение, или запись файла, в зависимости от обрабатываемой команды меню.

Придерживаясь написанного сценария, приспособим компоненты OpenDialog и SaveDialog для выбора графических файлов, поддерживаемых нашей программой. Чтобы пользователь мог просматривать файлы выборочно (какого-то одного типа) в диалоговых блоках имеется набор фильтров, оформленный в виде раскрывающегося списка с подписью Files of type (см. рис. выше). Исходные данные для этого списка устанавливаются в свойстве Filter. Номер активного в данный момент фильтра записывается в свойстве FilterIndex.

Шаг 31. Приступим к формированию списка фильтров. Активизируйте на форме компонент OpenDialog и в окне свойств выберите свойство Filter (рисунок 8.30). Щелчком кнопки с многоточием откройте редактор фильтров - окно Filter Editor (рисунок 8.31).


 

 

 

 

 

 

 

 

Рисунок 8.30. Нажатие кнопки с многоточием вызывает редактор фильтров

Окно Filter Editor представляет собой список с двумя столбцами. В левой колонке вводится текст, отображаемый в раскрывающемся списке Files of type окна диалога. В правом столбце через точку с запятой записываются маски, на основании которых выполняется фильтрация файлов.

Шаг 32. Установите в компоненте OpenDialog фильтры, как показано на рисунке 8.31.


 

 

 

 

 

 

 

 

Рисунок 8.31. Окно для редактирования фильтров - Filter Editor

Шаг 33. Аналогичным образом установите фильтры в компоненте SaveDialog. Самый простой и быстрый способ в данном случае - скопировать текст свойства Filter из компонента OpenDialog в компонент SaveDialog через буфер обмена (результат показан на рисунке 8.32):


 

 

 

 

 

 

 

Рисунок 8.32. Фильтры для окна Save скопированы из окна Open

Компоненты OpenDialog и SaveDialog имеют большое количество булевских параметров, организованных в виде составных свойств Options и OptionsEx. Эти параметры влияют на то, как окно диалога выглядит и работает. Их смысл поясняет таблица 8.7.

Параметр Описание
ofReadOnly Если равно True, то переключатель Read-only в окне диалога включен.
ofOverwritePrompt Если равно True, то пользователю выдается предупреждение при попытке сохранить файл с именем, которое уже существует.
ofHideReadOnly Если равно True, то переключатель Read-only отсутствует в окне диалога.
ofNoChangeDir Если равно True, то пользователь не сможет сменить каталог в окне диалога.
ofShowHelp Если равно True, то в окне диалога присутствует кнопка Help.
ofNoValidate Если равно True, то пользователь может вводить в имени файла любые символы, даже недопустимые.
ofAllowMultiSelect Если равно True, то пользователь может выделить сразу несколько файлов.
ofExtensionDifferent Этот параметр устанавливается после завершения диалога, если расширение в имени файла отличается от начального расширения.
ofPathMustExist Если равно True, то пользователь не сможет ввести для файла несуществующий маршрут.
ofFileMustExist Если равно True, то пользователь не сможет ввести имя несуществующего файла.
ofCreatePrompt Если равно True и пользователь вводит имя несуществующего файла, то пользователю задается вопрос, желает ли он создать новый файл с таким именем.
ofShareAware Если равно True, то ошибки одновременного доступа к файлу со стороны нескольких приложений игнорируются.
ofNoReadOnlyReturn Если равно True, то пользователь не сможет ввести файл с атрибутом read-only (только для чтения).
ofNoTestFileCreate Если равно True, то проверка на возможность записи в каталог не выполняется.
ofNoNetworkButton Если равно True, то кнопка Network отсутствует в окне диалога. Этот параметр работает только в паре с параметром ofOldStyleDialog.
ofNoLongNames Если равно True, то длинные имена файлов запрещены.
ofOldStyleDialog Если равно True, то окно диалога отображается в старом стиле Windows 3.1.
ofNoDereferenceLinks Если равно True, то ярлыки к каталогам трактуются как обычные файлы. В противном случае они трактуются как каталоги.
ofEnableIncludeNotify Если равно True, то при формировании списка отображаемых файлов происходит событие OnIncludeItem (для каждого файла). В обработчике этого события обычно выполняется дополнительная фильтрация файлов.
ofEnableSizing Если равно значению True, то пользователь имеет возможность изменять размеры окна диалога.
ofDontAddToRecent Если равно значению True, то файл не помещается в список последних открытых файлов.
ofShowHidden Если равно True, то в окне показываются скрытые файлы (файлы с атрибутом Hidden).
ofExNoPlaceBar Если равно True, то боковая панель не показывается в окне диалога. Флажок ofExNoPlaceBar относится к свойству OptionsEx.
Таблица 8.7. Параметры компонентов OpenDialog и SaveDialog

Шаг 34. В нашем простом примере ограничимся тем, что установим в компоненте SaveDialog параметр ofOverwritePrompt в значение True (см. табл. 6.6).

Заметим, что проверить работу компонентов OpenDialog и SaveDialog можно с помощью команды Test Dialog. Она находится в контекстном меню значка компонента в форме.

 

Яндекс цитирования