Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

5.4. Диалог выбора директории (tOpenDirDialog)

Диалог выбора директории - это один из случаев, когда в KOL было решено создать объектный тип, в то время как на VCL предлагается на прямую вызывать API-функцию, каждый раз вписывая множество параметров. Я решил сделать "завернуть" вызов этой функции в объект еще и потому, что, так же, как и для диалога выбора файлов, имеется некоторое количество свойств, которые могут "наследовать" свое состояние от одного вызова диалога к другого (а именно: стартовая директория, которую делается текущей в момент вызова диалога на экран). Совершенно непонятно, почему пользователь должен каждый раз начинать выбор директории всегда с папки "Мой компьютер" или "Рабочий стол". Особенно бывает обидно, если очень часто по ходу взаимодействия с приложением приходится выбирать одну и ту же директорию. Впрочем, если хотите, можете вызывать API-функцию напрямую, как в VCL-приложениях.

Конструктор:

NewOpenDirDialog( s, options ) - создает диалог выбора директории с заголовком s (если строка пустая, то используется стандартный системный заголовок), и с набором опций:

odBrowseForComputer - диалог для выбора компьютера, а не директории;

odBrowseForPrinter - диалог используется для выбора принтера;

odDontGoBelowDomain - не включать сетевые папки ниже доменного уровня (если кто не знает, что в точности означает эта фраза, то, скорее всего, эта опция вам просто не нужна);

odOnlyFileSystemAncestors - диалог позволяет выбрать только системные файловые объекты. / Аналогично предыдущему, если эта фраза вам мало что говорит, страшного в этом ничего нет. Я сам в данный момент не знаю в точности, что это значит. Когда мне это понадобится узнать, я загляну в справку. /

odOnlySystemDirs - диалог позволяет выбрать только системные папки;

odStatusText - обеспечивается наличие строки состояния в диалоге;

odBrowseIncludeFiles - в диалоге отображается также содержимое папок (список файлов);

odEditBox - обеспечивается наличие поля ввода имени папки или всего пути;

odNewDialogStyle - новый стиль диалога. По сравнению со старым стилем в новом, например, обеспечивается возможность изменять размеры диалога.

Свойства, метод и событие диалога:

Execute - метод для вызова диалога. Аналогично диалогу TOpenSaveDialog, возвращает true, если диалог завершился успешно выбором директории;

Title - заголовок окна диалога. Если строка пустая, система использует заголовок по умолчанию;

Options - опции диалога;

Path - путь к выбранной пользователем директории на выходе из диалога;

InitialPath - исходный путь, с которого начинается выбор директории при показе диалога;

CenterOnScreen - центрировать окно диалога на экране при показе;

OnSelChanged - событие, которое срабатывает, когда во время работы диалога пользователь выбирает другую директорию. Обработчик может запретить выбирать какие-то директории, делая недоступной кнопку выбора;

DialogWnd - окно самого диалога (доступно во время выполнения самого диалога, может использоваться для перечисления его дочерних элементов в пользовательском обработчике события OnSelChanged);

WndOwner - окно, отвечающее за передачу сообщений. Это же окно используется как "родительское" для диалога, т.е. активируется автоматически при его завершении.

В пакете зеркальных компонентов MCK роль образа данного объекта берет на себя компонент TKOLOpenDirDialog. Но, кроме того, в нем есть свойство времени разработки AltDialog, установка которого в значение true означает, что в форме будет использоваться альтернативный диалог TOpenDirDialogEx (см. ниже).