Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
33
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

2. Диалоги открытия и сохранения файлов — компоненты OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog

Компоненты OpenDialog — диалог «Открыть файл» и SaveDialog — диалог «Сохранить файл как...», пожалуй, используются чаще всего, в большинстве приложений. (см. рис. 29)

рис. 29. Компоненты OpenDialog, SaveDialog

Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, — FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.

Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла, задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра. После выхода из окна редактирования фильтров заданные вами шаблоны появятся в свойстве Filter в виде строки вида:

текстовые (*.txt, *.doc) I*, txt; *.doc I все файлы]*.*

В этой строке тексты и шаблоны разделяются вертикальными линиями. В аналогичном виде, если требуется, можно задавать свойство Filter программно во время выполнения приложения.

Свойство Filterlndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение Filterlndex = 1 задает по умолчанию первый фильтр.

Свойство InitialDir определяет начальный каталог, который будет открыт в момент начала работы пользователя с диалогом. Если значение этого свойства не задано, то открывается текущий каталог или тот, который был открыт при последнем обращении пользователя к соответствующему диалогу в процессе выполнения данного приложения.

Свойство DefaultExt определяет значение расширения файла по умолчанию. Если значение этого свойства не задано, пользователь должен указать в диалоге полное имя файла с расширением. Если же задать значение DefaultExt, то пользователь может писать в диалоге имя без расширения. В этом случае будет принято заданное расширение.

Свойство Title позволяет вам задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе. Но вы можете задать и свой заголовок, подсказывающий пользователю ожидаемые действия. Например, «Укажите имя открываемого файла».

Свойство Options определяет условия выбора файла.

ofAllowMuliSelect – Позволяет пользователю выбирать несколько файлов.

ofCreatePrompt – В случае, если пользователь написал имя несуществующего файла, появляется замечание или запрос, надо ли создать файл с таким именем.

ofEnableIncludeNotify – Разрешает посылать в диалог сообщения.

ofEnableSizing – Разрешает пользователю изменять размер диалогового окна.

ofFileMustExist – В случае, если пользователь написал имя несуществующего файла, появляется сообщение об ошибке.

ofReadOnly – удаляет из диалога индикатор «Открыть только для чтения».

ofNoChangeDir - После щелчка пользователя на кнопке OK восстанавливает текущий каталог, независимо от того, какой каталог был открыть при поиске файла.

OfNoDeferenceLinks - Запрещает переназначать клавиши быстрого доступа в диалоговом окне.

ofNoLongNames - Отображаются только не более 8 символов имени и трех символов расширения.

ofNoNetworkButton - Убирает из диалогового окна кнопку поиска в сети. Действует только если флаг ofOldStyleDialog включен

ofNoReadOnlyReturn - Если пользователь выбрал файл только для чтения, то генерируется сообщение об ошибке

ofTestFileCreate - Запрещает выбор в сети защищенных файлов и не до­ступных дисков при сохранении файла

ofNoValidate - Не позволяет писать в именах файлов неразрешенные символы, но не мешает выбирать файлы с неразрешенными символами

ofOldStyleDialog - Создает диалог выбора файла в старом стиле

ofOverwritePromt - В случае, если при сохранении файла пользователь написал имя существующего файла, появляется замечание, что файл с таким именем существует, и запрашивается желание пользователя переписать существующий файл

ofPathMustExist - Генерирует сообщение об ошибке, если пользователь указал в имени файла несуществующий каталог

ofReadOnly - По умолчанию устанавливает индикатор «Открыть только для чтения» при открытии диалога

ofShareAware - Игнорирует ошибки нарушения условий коллективного доступа и разрешает, несмотря на них, производить выбор файла

ofShowHelp - Отображает в диалоговом окне кнопку Справка

По умолчанию все перечисленные опции, кроме ofHideReadOnly, выключены. Но, как видно из их описания, многие из них полезно включить перед вызовом диалогов.

Если вы разрешаете с помощью опции ofAllowMultiSelect множественный выбор файлов, то список выбранных файлов можно прочитать в свойстве Files типа TStrings.

В компонентах диалогов открытия и сохранения файлов предусмотрена возможность обработки ряда событий. Такая обработка может потребоваться, если рассмотренных опций, несмотря на их количество, не хватает, чтобы установить все диктуемые конкретным приложением ограничения на выбор файлов. Событие OnCanClose возникает при нормальном закрытии пользователем диалогового окна после выбора файла. При отказе пользователя от диалога — нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает. В обработке события OnCanClose вы можете произвести дополнительные проверки выбранного пользователем файла и, если по условиям вашей задачи этот выбор недопустим, вы можете известить об этом пользователя и задать значение false передаваемому в обработчик параметру CanClose. Это не позволит пользователю закрыть диалоговое окно.

Можно также написать обработчики событий OnFolderChange — изменение каталога, OnSelectionChange — изменение имени файла, OnTypeChange — изменение типа файла. В этих обработчиках вы можете предусмотреть какие-то сообщения пользователю.

Свойства компонентов OpenPictureDialog и SavePictureDialog ничем не отличаются от свойств компонентов OpenDialog и SaveDialog. Единственное отличие — заданное значение по умолчанию свойства Filter в OpenPictureDialog и SavePictureDialog. В этих компонентах заданы следующие фильтры:

All (*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)

JPEG Image File (*.jpg)

JPEG Image File (*.jpeg)

Bitmaps (*.bmp)

Icons (*.ico)

Enhanced Metafiles (*.emf)

Metafiles (*.wmf)

*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf

*jpeg

*.bmp

*.ico

*.emf

*.wmf

В этих фильтрах перечислены все типы графических файлов, с которыми может работать диалог. Так что вам остается удалить, если хотите, фильтры тех файлов, с которыми вы не хотите работать, добавить, может быть, фильтр «Все файлы (*.*)» и перевести на русский язык названия типов.