Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
II способ
Дерево можно формировать или перестраивать и во время выполнения приложения. Для этого служит ряд методов объектов типа TTreeNodes. Следующие методы позволяют вставлять в дерево новые узлы:
Например: //вставить на место выделенного, остальные сдвигаются //вниз: 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;
|