OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog
Компоненты OpenDialog – законченный диалог «Открыть файл» и SaveDialog – законченный диалог «Сохранить файл как…» используются в большинстве приложений.
Создайте новый проект, перенесите на форму компоненты OpenDialogи SaveDialogи, поочередно выделяя, просмотрите их свойства. Видно, что свойства этих компонентов одинаковы, только смысл несколько различен для открытия и сохранения файлов. Двойной щелчок на компонентах вызывает диалоговые окна Открытие файла и Сохранение соответственно.
Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, – FileName. Значение этого свойства можно задать и перед обращением к диалогу, т.е. перед вызовом диалогового окна. Убедитесь в том, что тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.
В свойстве Filter задаются типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла. В процессе проектирования это свойство задают с помощью редактора фильтра, который вызывается нажа-тием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. В левой панели Имя фильтра окна редактора фильтра записы-вают тот текст, который увидит пользователь в списке Тип файла диалога, а в правой панели Фильтр записываются шаблоны фильтра. Например,
Имя фильтра Фильтр
текстовые (*.txt, *.doc) *.txt; *.doc
все файлы *.*
Убедитесь в том, что после выхода из окна редактора фильтра заданные шаблоны появятся в свойстве Filter в виде строки вида:
текстовые (*.txt, *.doc)|*.txt; *.doc|все файлы|*.*|
В аналогичном виде можно задавать свойство Filter программно во время выполнения приложения.
Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение FilterIndex=1 задает по умолчанию первый фильтр.
Свойство InitialDir определяет начальный каталог, который будет открыт в момент начала работы пользователя с диалогом. Если значение этого свойства не задано, то открывается текущий каталог или тот, который был открыт при последнем обращении пользователя к соответствующему диалогу в процессе выполнения данного приложения.
Свойство DefaultExtопределяет значение расширения файла по умолчанию. Убедитесь в том, что если оно не задано, то пользователь должен указать в диалоге полное имя файла с расширением, и в том, что если оно задано, то можно писать в диалоге имя без расширения, так как будет принято заданное расширение.
Свойство Title позволяет задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе (например, Открытие файла и Сохранение). Но можно задать и свой заголовок, подсказывающий пользователю ожидаемые действия. Например, Укажите имя и тип сохраняемого файла. Убедитесь в этом.
Свойство Options определяет условия выбора файла. Множество опций, которые можно установить программно или во время проектирования, включает:
ofAllowMultiSelect | Позволяет пользователю выбирать несколько файлов |
ofCreatePrompt | В случае, если пользователь написал имя несущест-вующего файла, появляется замечание и запрос, надо ли создать файл с заданным именем |
ofEnableIncludeNotify | Разрешает посылать в диалог сообщения |
ofEnableSizing | Разрешает пользователю изменять размер диалого-вого окна |
ofExtensionDifferent | Этот флаг, который можно прочитать после выпол-нения диалога, показывает, что расширение файла, выбранного пользователем, отличается от DefaultExt |
ofFileMustExist | В случае, если пользователь написал имя несущест-вующего файла, появляется сообщение об ошибке |
ofHideReadOnly | Удаляет из диалога индикатор Открыть только для чтения |
ofNoChangeDir | После щелчка пользователя на кнопке OK восста-навливает текущий диалог, независимо от того, какой каталог был открыт при поиске файла |
ofNoDereferenceLinks | Запрещает переназначать клавиши быстрого доступа в диалоговом окне |
ofNoLongNames | Отображаются только не более 8 символов имени и трех символов расширения |
ofNoNetworkButton | Убирает из диалогового окна кнопку поиска в сети. Действует только, если флаг ofOldStyleDialog включен |
ofNoReadOnlyReturn | Если пользователь выбрал файл только для чтения, то генерируется сообщение об ошибке |
ofNoTestFileCreate | Запрещает выбор в сети защищенных файлов и недоступных дисков при сохранении файла |
ofNoValidate | Не позволяет писать в именах файлов неразрешен-ные символы, но не мешает выбирать файлы с неразрешенными символами |
ofOldStyleDialog | Создает диалог выбора файла в старом стиле |
ofOverwritePrompt | В случае, если при сохранении файла пользователь написал имя существующего файла, появляется замечание, что файл с таким именем существует, и запрашивается желание пользователя переписать существующий файл |
ofPathMustExist | Генерирует сообщение об ошибке, если пользова-тель указал в имени файла несуществующий каталог |
ofReadOnly | По умолчанию включает индикатор Открыть толь-ко для чтения при открытии диалога |
ofShareAware | Игнорирует ошибки нарушения условий коллектив-ного доступа и разрешает, несмотря на них, производить выбор файла |
ofShowHelp | Отображает в диалоговом окне кнопку Справка |
По умолчанию все перечисленные опции в свойстве Options, кроме ofHideReadOnly, выключены. Однако из описания опций можно сделать вывод, что многие из них полезно включить перед вызовом диалогов.
Если разрешить с помощью опции ofAllowMultiSelect множественный выбор файлов, то список выбранных файлов можно прочитать в свойстве Files типа Strings. При включении опции ofOldStyleDialogизменяется вид диалогового окна. Убедитесь в этом.
В компонентах диалогов открытия и сохранения файлов предусмотрена возможность обработки ряда событий. Она может потребоваться, если опций не хватает, чтобы установить все требуемые ограничения на выбор файлов.
Событие OnCanClose возникает при нормальном закрытии пользователем диалогового окна после выбора файла. При отказе пользователя от диалога – нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает. В обработке события OnCanClose можно произвести дополнительные проверки выбранного пользователем файла и, если по условиям задачи этот выбор недопустим, можно известить об этом пользователя и задать значение false передаваемому в обработчик параметру CanClose. Это не позволит пользователю закрыть диалоговое окно.
В обработчиках событий: OnFolderChange –изменение каталога, OnSelectionChange –изменение имени файла, OnTypeChange –изменениетипа файла – можно предусмотреть какие-то сообщения пользователю.
Задание. Построить приложение, содержащее MainMenu1иокно редактирования RichEdit1, в которое по команде меню Открыть загрузить текстовый файли после каких-то изменений, сделанных пользователем, – сохранить текст по команде Сохранить в том же файле, а по команде Сохранить как – в файле с другим именем. Для действий с файлами использовать диалоги OpenDialog и SaveDialog.
1.Начните новое приложение, в свойство Captionформы впишите ДИАЛОГИ OPENDIALOG, SAVEDIALOG.