Возникла задача, в которой нужно вызвать диалоговое окно выбора папки. Если нужно сделать выбор файла можно просто разместить на форме не визуальный компонент OpenDialog написать код взаимодействия и все готово. Для диалогового окна выбора папки структура немного другая.
Сперва нужно добавить модуль FileCtrl, если конечно его еще нет в списке подключенных модулей. В данном модуле есть две функции SelectDirectory:
function SelectDirectory ( const Caption : string; const StartDir : WideString; out ChosenDir : string ) : Boolean;
где:
Caption - Текст заголовка окна;
StartDir - Рабочая директория, в которую мы переместимся при открытии диалогового окна выбора папки.
ChosenDir - Выбранный каталог
Если пользователь, в диалоговом окне выбора папки, нажал "ОК" - результат вернется
True и выбранный каталог будет записан в переменную
ChosenDir.
function SelectDirectory ( var CurrDir : string; DialogOptions : TSelectDirOpts ; HelpContext : Longint ) : Boolean;
где:
CurrDir - Базовая рабочая директория, в которую мы переместимся при открытии диалогового окна выбора папки.
DialogOptions - настройка диалогового окна выбора папки. Может принимать следующие параметры:
sdAllowCreate, sdPerformCreate, sdPrompt.
sdAllowCreate - Диалоговое окно выбора папки будет содержать поле редактирования имени каталога, в которое можно вводить имя несуществующего каталога.Указанное имя будет записано в переменную Directory, но при этом сам каталог создан не будет.
sdPerformCreate - Параметр используется только совместно с величиной sdAllowCreate. Когда пользователь вводит несуществующий каталог, функция создает его.
sdPrompt - Параметр используется только совместно с величиной sdAllowCreate. Если пользователь введет имя не существующего каталога, то будет выведено окно на подтверждение создания каталога. Если параметр Options содержит значение sdPerformCreate и пользователь нажимает кнопку OK в диалоговом окне выбора каталога, то указанный каталог создается. В противном случае, каталог создан не будет.
HelpContext - указывает контекст системы помощи, который будет активирован при нажатии кнопки F1
Примеры использователя:
var SelectedDirName:string;
begin
...
SelectDirectory('Выберите каталог','V:\',SelectedDirName);
....
end;
Результат представлен на Рис.1. (В системе Windows Vista диалоговое окно выбора каталога будет выглядит следующим образом)
Рис.1.