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

Связи между объектами TTreeNode

       Поскольку TTreeView имеет иерархическую структуру, то каждый объект типа TtreeNode может иметь несколько типов связей с другими объектами. Узел м.б. родителем, потомком, или узлом-близнецом (или, во многих случаях, выступать одновременно в 3-х вариантах). Отношения родитель/потомок хорошо просматриваются на рис. А. Узлы East, Central, and West это потомки узла  American League, потомок расположен ниже родителя. Поскольку Boston это потомок East, East является родителем для Boston. Каждый узел может иметь только одного родителя. Когда один или более узлов имеют общего родителя, они - близнецы

Корневые узлы и уровни узла

       Каждое TtreeView содержит, по меньшей мере, один корневой узел. На рис. А дерево имеет два корневых узла: American League и National League. Количество корневых узлов зависит от потребности программы и определяется разработчиками задачи. Корневой узел имеет уровень 0 (прим. пер.: но не в каждой системе программирования, м.б. и 1. Например, в 1С Предприятие 7.7 корневой уровень имеет значение 1). Номера уровней подчиненных узлов отсчитываются от номера корневого узла. Например, на рис. А,  потомки узла Pitcher  находится на 4-м уровне.

Программирование TTreeView

       Независимо от высоты и ширины дерева разработку нужно начинать с создания одного или нескольких корневых узлов. Для этого есть два метода Add и AddFirst. Оба метода в качестве аргументов принимают указатель на существующий узел и строку с именем узла, а затем возвращают указатель на вновь созданный узел.
Синтаксис методов:

       TTreeNode* __fastcall Add(TTreeNode* Node,
         const System::AnsiString S);
     

       Если первый параметр NULL, то создается корневой узел на 0-м уровне. AnsiString аргумент - обычный текст, используемый для представления узла в дереве. Метод Add добавляет новый узел в конец текущей группы узлов-близнецов. Метод AddFirst добавляет новый узел в начало текущей группы.
       Ниже код, вставляющий в дерево два корневых узла (см. рис А):

       TreeView1->Items->Add(NULL, "American League");
       TreeView1->Items->Add(NULL, "National League");

       Все методы, добавляющие узел в дерево, получают два параметра: указатель типа TTreeNode и строку AnsiString. Позднее будут рассмотрены некоторые исключения(например присвоение некоторого пустого значения объекта Void*).
                     Операции Add и AddFirst  выполняются  над текущей группой узлов-близнецов, получают указатель для любого существующего узла, затем добавляют новый узел. Например, можно добавить узел с именем Tom Gordon ниже узла Boston, вызывая метод Add и передавая указатель на узел Boston.

       TTreeNode* tomGordonNode =
         TreeView1->Items->Add(pedroMartinezNode,"Tom Gordon");

       Кроме указанных методов есть ещё метод Insert. Метод Insert получает указатель на существующий узел и производит вставку нового узла непосредственно перед указанным. Следующий код иллюстрирует применение метода Insert:

       TTreeNode* tomGordonNode = TreeView1->Items->
         Insert(timWakefieldNode, "Tom Gordon");

       Подобно методам Add и AddChild, метод Insert выполняет операции с текущей группой узлов-близнецов. Заметим, что если первый параметр будет NULL, то метод Insert вставит новый корневой узел в конец списка узлов, что равнозначно вызову метода Add с параметром NULL.




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 
стр. 2

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