Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






II способ






Дерево можно формировать или перестраивать и во время выполнения приложения. Для этого служит ряд методов объектов типа TTreeNodes. Следующие методы позволяют вставлять в дерево новые узлы:

Add(Node, S) Добавляет новый узел с текстом S как последний узел уровня, на котором расположен Node.
AddFirst(Node, S) Вставляет новый узел с текстом S как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1.
Insert(Node, S) Вставляет новый узел с текстом S сразу после узла Node на то же уровень. Индексы последующих узлов увеличиваются на 1.
AddChiId(Node, S) Добавляет узел с текстом S как последний дочерний узла Node.
AddChiIdFirst(Node, S) Вставляет новый узел с текстом S как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1

Например:

//вставить на место выделенного, остальные сдвигаются //вниз:

TreeView1-> Items-> Insert (TreeView1-> Items->

Item[TreeView1-> Selected-> AbsoluteIndex], " ");

//Вставить нулевым на тот же уровень, что и выделенный:

TreeView1-> Items-> AddFirst (TreeView1-> Items->

Item[TreeView1-> Selected-> AbsoluteIndex], " ");

//Добавляет новый узел как последний узел уровня, на //котором расположен выделенный:

TreeView1-> Items-> Add (TreeView1-> Items->

Item[TreeView1-> Selected-> AbsoluteIndex], " ");

Каждый из этих методов возвращает вставленный узел. Ниже в качестве примера приведен код, формирующий дерево, которое вы можете видеть на рис.1

Рис.1

TreeViewl-> Items-> Clear(); // очистка списка

// добавление корневого узла " производство" (индекс 0)

TreeViewl-> Items-> Add(NULL, " Мои рисунки");

/* добавление дочених узлов " цех 1" - " цех 3"

(индексы 1-3) */

TreeViewl-> Items-> AddChiId(TreeViewl-> Items-> Item[0], " Мореходы")

TreeViewl-> Items-> AddChild(TreeViewl-> Items-> Item[0], " Художник Васильев")

TreeViewl-> Items-> AddChild(TreeViewl-> Items-> Item[0], " Фото ВОВ")

Добавим программно ещё один узел «Тексты» с подузлами «Биографии» и «Пояснения»:

Рис.2

/* добавление корневого узла " Тексты" после узла " Мои рисунки" (индекс 4) */

TreeViewl-> Items-> Add(TreeViewl-> Items-> Item[0], " Тексты"

/* добавление дочених узлов " Биографии" и " Поясненияё" узла " управление" */

TreeViewl-> Items-> AddChild(TreeViewl-> Items-> Item[4], " Биографии");

TreeViewl-> Items-> AddChild(TreeViewl-> Items-> Item[4], " Пояснения");

Дерево может быть сколь угодно разветвленным. Например, следующие операторы добавляют дочерние узлы «Крузенштерн» и «Лисянский» в сформированный ранее узел «Мореходы»:

TreeViewl-> Items-> AddChild(ТreeViewl-> Items-> Item[l], " Крузенштерн");

TreeViewl-> Items-> AddChiId(TreeViewl-> Items-> Item[l], " Лисянский");

Рис.3

TTreeNode *Node=TreeView1-> Selected;

int level=Node-> Level; //Определяем уровень выделенного узла

int ind=Node-> Index; //Идекс выделенного узла внутри уровня

TreeViewl-> Items-> Item[l]-> Text; // Текст, связанный с узлом 1

 

Для удаления узлов имеется два метода: Clear(void), очищающий все дерево, и Delete(TTreeNode* Node), удаляющий указанный узел Node и все его узлы — потомки.

Например, оператор

TreeViewl-> Items-> Clear(); /*удалит в нашем примере все узлы*/

TreeViewl-> Items-> Delete(TreeViewl-> Items-> Item[l]); /*удалит узел «Мореходы» и его дочерние узлы*/

Для редактирования текста выделенного узла есть метод:

TreeView1-> Selected-> EditText();

Его можно вставить, например, в обработку события OnDblClick

Вызов контекстного меню правой клавишей мышки.

TreeView1-> PopupMenu = PopupMenu1;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.