Delphi world - провідник для комп'ютерів, директорій, файлів і принтерів

Комп'ютер дозволяє вирішувати всі ті проблеми, які до винаходу комп'ютера не існували.

Вся інформація для ініціалізації і настройки діалогового вікна Browse For Folder передається через змінну типу BrowseInfo. Сама ж функція нам поверне список ID елементів (скажімо: місце розташування обраної папки).

Тепер давайте подивимося, як заповнити структуру записів інформацією, яка необхідна для ініціалізації діалогового вікна Browse for Folder, а потім викличемо SHBrowseForFolder для відображення діалогового вікна.

Основні елементи структури, це поля lpszTitle і ulFlags. Поле lpszTitle - це текст, у вигляді статичного текстового елемента управління (static text control) над деревом (treeview). Елемент ulFlags визначає прапори, які задають режим відображення діалогу.

Прапори дозволяють зробити діалог більш юзабельним, ніж просто відображення в каталогах. У таблиці наведено деякі прапори, які дозволяють розширити можливості діалогу Browse For Folders:

Коли ми помістимо все вищеописане в функцію Delphi, яка буде створювати структуру, форматувати її, і викликати SHBrowseForFolder () для відображення діалогового вікна, то вона буде виглядати наступним чином:

Функція BrowseDialog має на вході два параметри: Title і Flag. Title - це текст над деревом (поле lpszTitle в запису BrowseInfo). Параметр Flag використовується для заповнення поля ulFlags.

Тепер цю функцію можна викликати (для відображення директорії, обраної користувачем) у такий спосіб:

Зверніть увагу: На формі (з ім'ям: frMain) присутній компонент RadioGroup (група радіо кнопок (з ім'ям: rgBrowseFor)) який має чотири елеемента, кожен з яких представляє значення для змінної Flag. Функція витягує з lpItemID шлях до обраної папці і повертає його (заповнивши компонент текстового поля edSelected). Якщо функція повернула помилку (або користувач натиснув кнопку Cancel), то повернута рядок буде порожній.