Copyright © 2010 Promsite. All Rights Reserved.
стр. 5
Изучение компонента TTreeView, часть I


C++ Builder позволяет определить, является ли один узел родителем, по отношению к другому. Ниже пример, где проверяется, является ли узел В родителем для узла А:

       bool isParent = nodeA->HasAsParent(nodeB);

       Этот пример демонстрирует дополнительные свойства и методы. Которые мы пока не изучили.

       Примите во внимание, что можно обратиться к каждому узлу, используя индекс элемента. Для любого дерева, имеющего узлы с потомками, к каждому элементу можно обратиться с помощью parentNode->Item[x]. Индекс элемента доступен через выражение:

       int x = childNode->Index;

Родителя узла можно узнать через свойство Parent (Значение которого равно NULL для корневого узла):

       TTreeNode* parent = childNode->Parent;

C++ Builder позволяет определить, является ли один узел родителем, по отношению к другому. Ниже пример, где проверяется, является ли узел В родителем для узла А:

       bool isParent = nodeA->HasAsParent(nodeB);

Абсолютные методы позиционирования.

       Вы уже видели использование абсолютного позиционирования, применяя свойство Item, которое дает прямой доступ к узлам-потомкам. Другой абсолютный метод это AbsoluteIndex, присваювающий каждому узлу в дереве уникальный идентификатор.




Построение дерева.

       Теперь, давайте напишем код для реализации дерева как на рис А и проверим концепции которые обсуждали выше. Пример исходного кода показан в листинге А. и заголовочный файл в листинге  В.
              Приложение содержит одну форму с деревом и списком и некоторым количеством кнопок, вызывающие методы, описанные в статье.

       Для демонстрации примера обход кнопок проводится в порядке: слева-направо, сверху-вниз. На рис. В показано главное окно:


(Для увел. рис. - кликните мышкой)
       Если бы узел etc не существовал, то индекс узла Cather был бы равен 6. Не рекомендуется использование в коде AbsoluteIndex из-за возможности его частого изменения.
Узел               Индекс
Amtrican League        0
East                          1
Boston                      2
Pitcher                      3
Pedro Martinez           4
Tim Wakefield           5


AbsoluteIndex зависит от положения узла в дереве и меняется при добавлении или удалении узлов. Значения присваиваются, начиная с 0-го от первого коневого узла. Заметим, что узлы-потомки текущего узла будут иметь последовательные значения AbsoluteIndex. Ниже показаны AbsoluteIndex для некоторых узлов рис. А:

P  R  O  M  S  I  T  E
Статьи по С++Builder 6
страницы: 1   2   3   4   5   6   7   8
стр: 1   2   3   4   5   6   7   8 
стр. 5

Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.