Шаг 65 - Компонент TTreeView

Компонентный класс gif/65_1.gif (152 b), инкапсулировавший элемент управления - дерево. Это, например, левая сторона Explorera. Правда, надо кое-что отметить касательно именно окон типа TreeView и ListView в Эксплорере и вообще - в "Моем компьютере", диалогах Common, и т.п. Они не являются объектами TreeView или ListView, и даже не элементами управления LISTVIEW и TREEVIEW. Это так называемые системные списки - SysListView, SysTreeView. Они не предоставляют прямой доступ к себе посредством DLL или API-вызовов. Так что приходится при необходимости создавать самим подобные классы. Занятие трудоемкое - в плане описания всплывающих меню, доступа к файл-информации, а самое сложное - эффективность... Если кто обращал внимание, при просмотре иконки подгружаются динамически. Иначе считывание папки занимает довольно долгое время.

Вообще этим - контекстными меню, иконками (большими и малыми) файлов, ведает раздел функций API - shell extension или shell's namespace functions. Они предоставляют доступ также и к "подшивкам свойств" (property sheets) объектов. Но - это предмет отдельного изучения. Скорее всего, в следующих шагах, на примере создания компонента, инкапсулирующего эти возможности, я рассмотрю все это подробнее.

Ну, а теперь собственно про TreeView. Составной частью древовидного списка является node - лист дерева. Эта node может иметь потомков (childs) или иметь родителя (parent). Впрочем, и того и другого может и не быть. В последнем случае такая node ( по-русски, наверное, ближе всего будет понятие "узел") является нодой самого высшего (top-level) уровня.

Вот пример такого дерева:

gif/65_2.gif (1549 b)

Как я и говорил, иконки можно взять одинаковые с проводником. На рисунке два узла высшего уровня, у первого из них имеются три потомка.

Список, содержащий все топ узлы, представляется свойством Items и является объектом класса TTreeNodes. Вкратце про него. Он прдоставляет возможности добавления нод любого уровня.

TTreeNodes

Здесь его основные методы...

Хм... Это было много. Наверное. На свойства осталось мало, их всего четыре. Owner и Hadnle обозначают соответственно владеющий объект и его дескриптор. Item - свойство типа массив, содержит указатели на элементы верхнего уровня. Count - количество всех элементов, которые содержит данный объект TTreeView. То есть не только top-level, но и вложенных.

Я думаю, никто не против, если мы продолжим в следующем шаге?


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел - 18.03.2002