Учись программированию на C++ Builder бесплатно!

Компонент OpenDialog служит для открытия указанного файла и загрузки данных. Компонент SaveDialog, соответственно, необходим для сохранения данных в файл. Все свойства у компонентов идентичны, но немного отличаются только по смыслу назначения.

Свойство FileName

Является основным свойством компонентов OpenDialog и SaveDialog, которое возвращает пользовательский файл FileName в виде строки. Можно задать значение свойства перед обращением к диалогу, в этом случае, при появлении окна загрузки/сохранения файла будет задано имя файла по умолчанию.

Свойство Filter

Указывает какие типы файлов можно загружать в приложение или в какие типы файлов приложение будет сохранять данные. Во время программирования следует указывать параметры свойства Filter, чтобы ограничить компонентам OpenDialog и SaveDialog диапазон типов файлов. Чтобы открыть окно редактора, следует нажать на многоточие рядом со свойством Filter в окне «Инспектор объектов». В столбце FilerName указывается название типов файлов, которое будет отображаться в выпадающем списке. В столбце Filter указывается тип файлов.

Свойство Filter

Также значение свойства можно задавать программно для компонента OpenDialog или SaveDialog.

Пример создания фильтра

OpenDialog1->Filter = "Текстовые (*.txt, *.doc)|*.txt; *.doc|Bсе файлы|*.*";

Каждый тип файлов разделяется точкой с запятой, а название файла с типом разделяются вертикальной линией.

Свойство FilterIndex

Задаёт для компонента OpenDialog или SaveDialog какой фильтр будет отображаться по умолчанию. Свойство FilterIndex удобно использовать, когда указан не один фильтр типов файлов, а несколько, и чтобы вручную не переписывать все. Так гораздо удобнее, указав значение FilterIndex = 1, в этом случае по умолчанию будет показан первый фильтр по списку.

Свойство InitialDir

Задаёт начальный каталог, который будет показан в момент открытия диалогового окна OpenDialog или SaveDialog. В случае, если свойство InitialDir не задано, будет открыт текущий каталог или каталог, к которому пользователь в последнее время обращался во время работы приложения. Рекомендуется указывать путь каталога, если приложение использует, например, собственный тип файлов.

Свойство DefaultExt

Задаёт расширения файла в строке названия по умолчанию. Если свойства не задано, то пользователю необходимо указать в диалоговом окне полностью имя файла с расширением. Если указать значение, то пользователю достаточно написать только имя файла, а расширение будет задано автоматически.

Свойство Title

Задаёт имя заголовка диалогового окна OpenDialog или SaveDialog. Если свойство не задано, то откроется диалоговое окно с заголовком, заданным системой. Если указать значение свойству, например, «Укажите имя и тип файла», то открываемое диалоговое окно будет с указанным заголовком.

Свойство Title

Свойство Options

Задаёт условия выбора файла. Обладает множеством полезных параметров.

Параметры Описание
ofAllowMultiSelect

Даёт возможность выбирать несколько файлов.

ofCreatePrompt

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

ofEnablelncludeNotify

Посылает сообщение в диалоговое окно.

ofEnableSizing

Разрешает или запрещает изменение размера диалогового окна.

ofExtensionDifferent

Отображает сообщение, если после выполнения диалогового окна, расширение файла отличается от DefaultExt, выбранное пользователем.

ofFileMustExist

Отображает сообщение об ошибке, если пользователь написал имя несуществующего файла.

ofHideReadOnly

Скрывает из диалогового окна пункт – только для чтения.

ofNoChangeDir

Сбрасывает путь последнего открытого каталога пользователем при поиске файлов и восстанавливает текущий.

ofNoDereferenceLinks

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

ofNoLongNames

Запрещает слишком длинное название и расширение файлов (название не более 8 символов, расширения не более 3).

ofNoNetworkButton

Скрывает кнопку поиска в сети в диалоговом окне. Параметр ofOldStyleDialog должен быть включён.

ofNoReadOnlyReturn

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

ofNoTestFileCreate

Запрещает выбор защищенных файлов в сети, а так же недоступных дисков во время сохранения файла.

ofNoValidate

Задаёт список символов, которые запрещено вводить в название файлов, но не запрещает выбирать файлы с запрещёнными символами.

ofOldStyleDialog

Устанавливает внешний вид диалогового окна в старом стиле.

ofOverwritePrompt

Отображает сообщение о перезаписывании существующего файла, если пользователь при сохранении написал имя существующего файла.

ofPathMustExist

Отображает сообщение об ошибке, если пользователь указал несуществующий каталог.

ofReadOnly

При открытии диалогового окна отмечает пункт – открыть только для чтения.

ofShareAware

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

ofShowHelp

Включает справку в диалоговом окне.

В C++ Builder 5 присутствует свойство OptionsEx. Оно позволяет задать дополнительные условия выбора файла. Параметр ofExNoPlacesBar скрывает стандартные кнопки папок Windows в диалоговом окне.

Все параметры из таблицы свойств Options и OptionsEx, по умолчанию выключены, а единственный параметр ofHideReadOnly включён.

В компонентах OpenDialog и SaveDialog есть возможность обрабатывать некоторые события. Это предусмотрено для того, если стандартных свойств и параметров недостаточно. Таким образом, компоненты OpenDialog и SaveDialog не ограничивают в возможностях при разработке приложений.

Событие OnCanClose

Возникает, когда закрывается диалоговое окно после выбора файла. Если пользователь закроет диалоговое окно кнопкой отмена или клавишей Esc, то событие OnCanClose не запускается. Так можно создать свои условия при обработке события OnCanClose и запретить закрытие диалогового окна пока пользователь не выполнит указанное условие, задав параметру CanClose значение false.

Событие OnFolderChange

Возникает в случае изменения каталога.

Событие OnSelectionChange

Срабатывает, когда пользователь переименовывает имя файла в диалоговом окне.

Событие OnTypeChange

Срабатывает, когда пользователь изменяет расширение файла в диалоговом окне.

Пример загрузки текста из файла

В приложение есть окно редактирования RichEdit1, которое будет содержать некий текст. Так же на форме добавлены компоненты OpenDialog1 и SaveDialog1.

AnsiString txt = "";

Компонентом OpenDialog1 будет осуществляться загрузка текста из файла в RichEdit1.

if (OpenDialog1->Execute())
{
txt = OpenDialog1->FileName;
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
}

Приведённый код вызывает диалоговое окно и проверяет был ли выбран файл. Если файл выбрал, то функция Execute вернёт true, иначе false. В переменную txt типа AnsiString записывается имя файла командой OpenDialog1->FileName, а содержимое файла загружается в RichEdit1 с помощью метода LoadFromFile.

Пример загрузки текста из файла

Загружаемый текст из файла должен быть в кодировке ANSI.

Пример сохранения текста в файл

AnsiString txt = "";
if(txt!= "")
  RichEdit1->Lines->SaveToFile(txt);
else
  if(SaveDialog1->Execute())
  {
    txt = SaveDialog1->FileName;
    RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
  }

Если имя файла txt не пустое и содержит некоторый текст, то во время сохранения не будет вызвано диалоговое окно, а текст будет сохранён в файле методом SaveToFile. Если имя файла txt пусто, то текст из RichEdit1 будет сохранён с помощью диалогового окна SaveDialog1.

Поделиться