Эти компоненты имеют идентичные свойства и поэтому рассматриваются вместе. Пример окна TOpenDialog показан на рис. 18.38.
Свойство FileName: string содержит маршрут поиска и выбранный файл при успешном завершении диалога. Программа может использовать это свойство для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog). Замечу, что пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтении отсутствие файла может привести к краху программы. Чтобы избежать этого, можно проверить существование файла глобальной функцией FileExists, как это сделано в предыдущем примере, или использовать механизм обработки исключительных ситуаций.
Рис. 18.38. Стандартное окно TOpenDialog
Свойство Filter: string используется для фильтрации (отбора) файлов, показываемых в диалоговом окне. Это свойство можно устанавливать с помощью специального редактора на этапе конструирования формы или программно, как это сделано в предыдущем примере. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна Инспектора объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы "|" служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора. Например, оператор
OpenDialogI.Filter := 'Текстовые файлы|*.txt| Файлы Паскаля|*.раs';
задает две маски - для отбора файлов с расширениями раs и TXT.
Установить начальный каталог позволяет свойство InitialDir string. Например:
OpenDialogI.InitiaiDir := 'c:\program files\borland\delphi5\source';
С помощью свойства DefaultExt: String [ 3 ] формируется полное имя файла, если при ручном вводе пользователь не указал расширение. В этом случае к имени файла прибавляется разделительная точка и содержимое этого свойства.
В диалоговом окне для ручного ввода предусмотрен элемент TEdit, который при желании можно заменить на TCоmbовох. Для этого необходимо свойству FileEditStyle придать значение fsComboBox вместо умалчиваемого fsEdit. Если выбран комбинированный список, с ним можно связать протокол выбора имен. Для этого используется свойство HistoryList: TStrings, содержимое которого будет появляться в выпадающем списке. Этот список не пополняется автоматически, поэтому за его содержимым должна следить программа. Например:
if OpenDialogI.Execute then begin HistoryList.Add(OpenDialogI.FileName); end;
Настройка диалога может варьироваться с помощью свойства
TOpenOption = (ofReadOnly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofShowHelp, ofNoValidate, ofAllowMultiSelect, ofExtensionDifferent, ofPathMustExist, ofFileMustExist, ofCre-atePrompt, ofShareAware, ofNoReadOnlyReturn, ofNoTestFileCre-ate, ofNoNetworkButton, ofNoLongNames, ofOldStyleDialog, of-NoDereferenceLinks) ;
TOpenOptions = set of TOpenOption;
property Options: TOpenOptions;
Значения этого свойства имеют следующий смысл:
ofReadOnly | Устанавливает переключатель Только для чтения | ofOverwritePrompt | Требует согласия пользователя при записи в существующий файл | ofHideReadOnly | Прячет переключатель Только для чтения | OfNoChangeDir | Запрещает смену каталога | ofShowHelp | Включает в окно кнопку Help | ofNoValidate | Запрещает автоматическую проверку правильности набираемых в имени файла символов | OfAllowMultiSelect | Разрешает множественный выбор файлов | ofExtensionDifferent | При завершении диалога наличие этого значения в свойстве options говорит о том, что пользователь ввел расширение, отличающееся от умалчиваемого | ofPathMustExist | Разрешает указывать файлы только из существующих каталогов | ofFileMustExist | Разрешает указывать только существующие файлы | ofCreatePrompt | Требует подтверждения для создания несуществующего файла | ofShareAware | Разрешает выбирать файлы, используемые другими параллельно выполняемыми программами | OfNoReadOnlyReturn | Запрещает выбор файлов, имеющих атрибут Только для чтения | ofNoTestFileCreate | Запрещает проверку доступности сетевого или локального диска | OfNoNetworkButton | Запрещает вставку кнопки для создания сетевого диска | ofNoLongNames | Запрещает использование длинных имен файлов | ofOldStyleDialog | Создает диалог в стиле Windows 3-х |
Если разрешен множественный выбор, доступ к выбранным именам можно получить в свойстве Files: strings.
8 8 8
| |