Комп'ютер дозволяє вирішувати всі ті проблеми, які до винаходу комп'ютера не існували.
Вся інформація для ініціалізації і настройки діалогового вікна 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), то повернута рядок буде порожній.