Вкладка Dialogs. Компоненты TOpenDialog и TSaveDialog

   
На этом шаге мы рассмотрим основные свойства компонентов TOpenDialog и TSaveDialog.

   
Компоненты TOpenDialog (окно открытия) и TSaveDialog (окно сохранения файлов) имеют
идентичные свойства и поэтому рассматриваются вместе. Пример диалогового окна TOpenDialog показан на рисунке 1.


Рис.1. Стандартное окно TOpenDialog

   
Свойство FileName:String содержит путь поиска и выбранный файл при успешном завершении диалога с пользователем. Программа
может применять это свойство для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него
(TSaveDialog). Заметим, что пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл.
Для записи это не имеет значения, но при чтении отсутствие файла может привести к краху программы. Чтобы избежать этого, можно
проверить существование файла глобальной функцией FileExists, как это сделано в примере предыдущего шага, или использовать
механизм обработки исключительных ситуаций.

   
Свойство Filter:String используется для фильтрации (отбора) файлов, показываемых в диалоговом окне. Это свойство можно
устанавливать с помощью специального редактора на этапе конструирования формы или программно, как это сделано в примере предыдущего
шага. Для доступа к редактору достаточно щелкнуть на кнопке

в строке свойства Filter
окна Инспектора Объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы вертикальной черты (|)
служат для разделения фильтров, а также для отделения описания фильтруемых файлов от соответствующей маски выбора. Например,
следующий оператор задает две маски для отбора файлов с расширениями .PAS и .ТХТ:

  OpenDialog1.Filter := 'Текстовые файлы|*.txt|' + 'Файлы Паскаля|*.pas';

   
Установить начальный каталог позволяет свойство InitialDir:String. Например:

  OpenDialog1.InitialDir := 'C:\Program Files\Borland\Delphi6\Source';

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

   
Настройка диалогового окна может варьироваться с помощью следующего свойства:

type TOpenOption =  (ofReadOnly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, 
       ofShowHelp, ofNoValidate, ofAllowMultiSelect, ofExtensionDifferent, 
       ofPathMustExist, ofFileMustExist, ofCreatePrompt, ofShareAware, 
       ofNoReadOnlyReturn, ofNoTestFileCreate, ofNoNetworkButton, 
       ofNoLongNames, ofOldStyleDialog, ofNoDereferenceLinks, 
       ofEnableIncludeNotify, ofEnableSizing, ofDontAddToRecent, 
       ofForceShowHidden); 
TOpenOptions = set of TOpenOption; 
property Options: TOpenOptions;

   
Значения этого свойства имеют следующий смысл:

  • ofReadOnly - устанавливает флажок Только чтение;
  • ofOverwritePrompt - требует согласия пользователя при записи в существующий файл;
  • ofHideReadOnly - скрывает флажок Только чтение;
  • ofNoChangeDir - запрещает смену каталога;
  • ofShowHelp - включает в окно кнопку Справка;
  • ofNoValidate - запрещает автоматическую проверку правильности набираемых в имени файла символов;
  • ofAllowMultiSelect - разрешает множественный выбор файлов;
  • ofExtensionDifferent - при завершении диалога наличие этого значения в свойстве Options говорит о том, что
    пользователь ввел расширение, отличающееся от заданного по умолчанию;
  • ofPathMustExist - разрешает указывать файлы только из существующих каталогов;
  • ofFileMustExist - разрешает указывать только существующие файлы;
  • ofCreatePrompt - требует подтверждения для создания несуществующего файла;
  • ofShareAware - разрешает выбирать файлы, используемые другими параллельно выполняемыми программами;
  • ofNoReadOnlyReturn - запрещает выбор файлов, имеющих атрибут Только для чтения;
  • ofNoTestFileCreate - запрещает проверку доступности сетевого или локального диска;
  • ofNoNetworkButton - запрещает вставку кнопки создания сетевого диска;
  • ofNoLongNames - запрещает использование длинных имен файлов;
  • ofOldStyleDialog - создает диалоговое окно в стиле Windows 3.x;
  • ofNoDereferenceLinks - запрещает разыменование ярлыков Windows (если пользователь выбирает ярлык, в свойство
    FileName помещается путь доступа и имя файла ярлыка с расширением .LNK, а не файла, на который указывает ярлык);
  • ofEnableIncludeNotify (Windows 2000 и выше) - разрешает посылку уведомляющих сообщений диалоговому окну, если пользователь открывает папку
    (сообщения посылаются для каждого файла папки, что позволяет управлять отображением содержимого папки; смотри также описание события OnIncludeItem);
  • ofEnableSizing (Windows 98 и выше) - позволяет окну в стиле Проводника Windows изменять размеры (диалоговые окна
    в старом стиле изменение размеров не допускают) с помощью мыши или клавиатуры (по умолчанию такое изменение размеров допускается независимо от этого флага,
    который учитывается только в пользовательских диалоговых окнах);
  • ofDontAddToRecent - запрещает присоединять файл к списку недавно открывавшихся файлов;
  • ofShowHidden - показывает скрытые файлы.

   
Если разрешен множественный выбор, доступ к выбранным именам можно получить в свойстве Files: Strings.

   
События компонентов TOpenDialog и TSaveDialog перечислены в таблице 1.

Таблица 1. События компонентов TOpenDialog и TSaveDialog

Событие Описание
type TCloseQueryEvent = procedure (Sender: TObject; var CanClose: Boolean) of object;
property OnCanClose: TCloseQueryEvent;
Возникает непосредственно перед закрытием диалогового окна. Используйте обработчик этого события для окончательной проверки
правильности выбранного файла, например, его существования, возможности перезаписи содержимого и т. п. Если обработчик установит значение False в параметр
CanClose, окно не будет закрыто
property OnClose: TNotifyEvent; Возникает при закрытии диалогового окна
property OnFolderChange: TNotifyEvent; Возникает при изменении отображаемой папки
type _OFNOTIFYEXA = packed record hdr: TNMHdr; lpOFN: POpenFilename; psf: IShellFolder; pidl: Pointer; end;
TIncludeItemEvent = procedure (const OFN: TOFNotifyEx; var Include: Boolean) of object;
property OnIncludeItem: TIncludeItemEvent;
Возникает для каждого элемента вновь открываемой папки, если свойство Options диалогового окна содержит элемент
ofEnableIncludeNotifу. Обработчик события с помощью параметра Include указывает, следует ли отображать данный
элемент папки
property OnSelectionChange: TNotifyEvent; Возникает при изменении содержимого диалогового окна: при изменении папки, выбранного файла,, фильтра отбора и т. п.
property OnShow: TNotifyEvent; Возникает при открытии диалогового окна
property OnTypeChange: TNotifyEvent; Возникает при изменении фильтра отбора (пользователь выбирает другой тип файлов в выпадающем списке внизу диалогового окна)

   
На следующем шаге мы рассмотрим компоненты TOpenPictureDialog и TSavePictureDialog.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий