Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
New_Metod Builder.doc
Скачиваний:
2
Добавлен:
10.11.2019
Размер:
652.8 Кб
Скачать

2. Компонент TreeView (страница Win32)

Компонент служит для отображения древовидных структур, где с каждым узлом дерева могут быть связаны некоторые данные.

Основное свойство компонента Itemsэлементы дерева. Каждый из них является объектом типа TTreeNodes и обладает своими свойствами и методами.

Ряд свойств компонента TreeView:

  • ShowButtons определяет показывать или нет кнопку «+»

  • ShowLines показывает линии дерева

  • ShowRoot отвечают за изображение линий связи с корневым элементом.

  • SortType позволяет автоматически сортировать ветви и узлы дерева.

    • stText - узлы автоматически сортируются по алфавиту

    • stData - сортиров­ка по связанным с узлами объектам Data

    • stBoth - сортиров­ка одновременно по тексту и объектам Data

  • Count — число узлов, управляемых данным, т.е. дочерних уз­лов, их дочерних узлов и т.п. Если значение Count узла равно нулю, то он является листом дерева.

  • Indent показывает число раскрываемых потомков.

Создавать узлы дерева можно как программно, так и с помощью редактора узлов дерева. Он вызывается двойным щелчком на компоненте TreeView или на­жатием кнопки с многоточием около свойства Items в окне Инспектора Объектов. Здесь кнопка New Item позволяет добавить в дерево новый узел, New Subltem позволяет добавить в дерево дочерний узел. Если нажать на Delete, можно удалить выделенный узел дерева. Кнопка Load позволяет загрузить струк­туру дерева из файла — обычный текстовый файл. Уровни узлов обозначаются отступами. Например, ф айл дерева, представленного на рисунке справа имел бы вид:

Компоненты

Standard

MainMenu

Label

Edit

Additional

BitBtn

SpeedBtn

MaskEdit

В панели Item Properties редактора узлов можно задать такие свойства, как Text — надпись, появляющаяся в дереве около данного узла, а так же Image Index и Selected Index определяют индекс пиктограммы, отображаемой для узла, который соответ­ственно не выделен и выделен пользователем в данный момент. Индексы начинаются с 0 и соответствуют списку изображений, хранящихся в отдельном компоненте ImageList. Указание на этот компо­нент можно задать в свойстве Images компонента TreeView. Значение по умолчанию равно -1 (пиктограммы изображаться не будут).

Доступ к информации об отдельных узлах осуществляется через свойст­во Item [int Index]. Например, чтобы обратиться к узлу дерева с индексом 0 и определить число дочерних узлов (на рис.1 это узел «Компоненты», число управляемых им узлов – 4), необходимо написать

{ TreeViewl->Items->Item[0]->Count }

Свойство Selected указывает узел, который выделен пользователем и доступно только во время выполнения программы. Если ни один узел не выбран, значение Selected равно NULL. При выделении пользователем нового узла происходит событие OnChange, в обработчик которого передает­ся параметр TTreeNode *Node — выделенный узел. В этом обработчике можно предусмотреть действия, которые должны производится при выделении узла. Например:

void __fastcall TForm1::TreeView1Change (TObject *Sender, TTreeNode *Node)

{ Edit1->Text = Node->Text; } //Выводим в Edit1 надпись выделенного узла

С каждым узлом может быть связан некоторый объект и данные о нем. Ссылка на этот объект содержится в свойстве узла Data.

Основные методы:

  • AddChild ( ) – добавление дочернего узла

  • Add ( ) – добавление узла

  • Insert ( ) – вставка узла

  • Clear ( ) – очищение дерева

  • SaveToFile – сохранение структуры дерева в файл

Например, чтобы добавить узел «Компоненты», необходимо написать

{ TreeView1->Items->Add (NULL," Компоненты "); }

  • Пример 2. Пусть требуется создать дерево, узлами которого является номера групп, а при выборе соответствующего узла отображать сведения о студентах группы. Пусть пиктограммы, для отображения узла хранятся в компонентах ImageList1 и ImageList2 из примера 1. В основном модуле с расширением *.h перед классом формы объявим класс Student и определим экземпляры этого класса:

class Student

{ public:

AnsiString Fam;

AnsiString Name;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]