Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Компонент отображения дерева данных — TreeView
Компонент TreeView (страница Win32) служит для отображения иерархических данных в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы. Основным свойством TreeView, содержащим информацию об узлах дерева, является Items. Доступ к информации об отдельных узлах осуществляется через свойство Items[int Index]. Например, TreeViewl‑ > Items-> Item[0] — это узел дерева с индексом 0 (первый узел дерева). Каждый узел является объектом типа TTreeNodes, обладающим своими свойствами и методами (см.ниже). Есть два способа формирования дерева: в окне редактора узлов дерева и программно. I способ Используется во время проектирования. Вызов окна редактора узлов производится двойным щелчком на компоненте TreeView или нажатием кнопки с многоточием около свойства Items в окне Инспектора Объектов. Назначение кнопок окна редактора узлов – New Item (новый узел) позволяет добавить в дерево новый узел. Он будет расположен на том же уровне, на котором расположен узел, выделенный курсором в момент щелчка на кнопке New Item. – New Subltem (новый дочерний узел) позволяет добавить в дерево дочерний узел. Он будет расположен на уровень ниже уровня того узла, который выделен курсором в момент щелчка на кнопке New Subltem. – Delete (удалить) удаляет выделенный узел дерева. – Load позволяет загрузить структуру дерева из файла. Файл, хранящий структуру дерева это обычный текстовый файл, содержащий тексты узлов. Уровни узлов обозначаются отступами. Например, файл дерева и может иметь вид:
производство цех 1 цех 2 цех 3 управление администрация бухгалтерия 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; Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 1550; Нарушение авторского права страницы