Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основные свойства класса TTreeNode
Absolutelndex Абсолютный номер узла в дереве. Самый первый узел имеет номер 0, далее происходит нумерация всех потомков этого узла. При этом, если у потомка в свою очередь есть подчиненные узлы, то нумерация продолжается с первого потомка и так далее Count Число потомков узла Cut Имеет значение True, если объект рисуется как "вырезанный". Действия по поддержке этой операции программист должен реализовать самостоятельно Data Свойство имеет тип Pointer и указывает на связанный с узлом объект Deleting Имеет значение True, если данный узел находится в состоянии удаления. Этот процесс может быть длительным, если удаляется узел с большим числом потомков Expanded Имеет значение True, если узел развернут, то есть кнопка находится в состоянии "-" Focused Имеет значение True, если узел имеет фокус HasChildren Имеет значение True, если узел имеет потомков ImageIndex Номер картинки в списке картинок Index Номер узла в списке потомков вышестоящего родителя. Первый узел-потомок имеет номер 0(?), второй — 1 и так далее Item Массив узлов, являющихся потомками данного IsVisible Имеет значение True, если узел виден Level Уровень глубины узла. Верхний уровень имеет номер 0, следующий уровень — номер 1 и так далее Selected Имеет значение True, если узел выделен SelectedIndex Номер картинки, которая показывается, если узел выделен Text Текст, выводимый в узле TreeView Ссылка на родительский объект TTreeView Работу дерева проще всего понять па следующем примере.
Пусть на форме имеется пустой объект TreeViewl, текстовое поле и две кнопки: Узел и Потомок. После ввода имени и щелчка на кнопке Узел в дерево добавляется новый узел на текущем уровне.При щелчке на кнопке Потомок новый узел добавляется в число потомков текущегоузла. Главное, что требуется в этом примере, — оперативно отслеживать в программе перемещение пользователем фокуса по дереву, чтобы не просматривать в поисках выделенного узла (значение свойства Selected которого равно True) весь массив узлов каждый раз заново. Для этого можно обрабатывать событие OnGetSelectedIndex, которое формируется, когда возникает потребность в отрисовке конкретного вы- деленного узла. Запомним этот узел в переменной MyNode, которая будет принад-
лежать классу формы TForm 1 и иметь тип TTreeNode. MyNode: TTreeNode; В момент создания формы эта переменная должна получить начальное значение, указывающее, что ни один узел не выбран. procedure TForml.FormCreate(Sender: TObj ect); begin MyNode:= nil end; Обработчик события OnGetSelectedIndex запишется следующим образом. procedure TForml.TreeViewlGetSelectedlndex(Sender: TObject;Node: TTreeNode); begin MyNode:= Node; end; При щелчке на кнопке Узел новый узел будет добавляться к дереву с помощью метода function Add(Node: TTreeNode; const S: string): TTreeNode; Этот метод добавляет новый узел на один уровень с узлом Node (или на самый верхний уровень, если вместо узла указано значение nil) и возвращает ссылку на этот узел. Новому узлу в свойство Text записывается значение строки S.
procedure TForml.ButtonlClick(Sender: TObject); Begin If TreeViewl.Items.Count = 0 then TreeViewl.Items.Add(nil, Editl.Text) else TreeViewl.Items.Add(MyNode,Editl.Text) end; Предварительно проверяется, есть ли в дереве хотя бы один узел. Для добавления нового потомка узла используется метод function AddChild(Node: TTreeNode; const S: string): TTreeNode; Он аналогичен предыдущему, за исключением того, что новый узел добавляется не на один уровень с узлом Node, а становится его потомком, последним в списке всех потомков. procedure TForml.Button2Click(Sender: TObjectl; Begin if TreeViewl.Items.Count =0 then TreeViewl.Items.AddChild(MyNode,Editl.Text) end; При добавлении узла-потомка требуется, чтобы родительский узел уже существо- вал, поэтому достаточно проверить, что в дереве есть хотя бы одни элемент. Для удаления текущего элемента можно использовать следующий оператор. TreeViewl.Items.Delete(MyNode); При этом фокус переместится на родительский узел удаляемого объекта. Узел удаляется вместе со всеми его потомками. Теперь можно формировать дерево произвольной сложности (рис. 4.26, стр 298). Когда дерево создано во время работы программы, его структуру желательно сохра- нить на жестком диске до следующего сеанса. Это можно сделать с помощью метода SaveToFile. TreeViewl.SaveToFile('TREE.TXT'); Дерево сохраняется в текстовом формате в наглядном виде — с отступами. Впоследствии загрузить дерево из файла можно с помощью метода procedure LoadFrornFile (const FileName: string); Узлы в дереве можно автоматически сортировать. Момент пересортировки зада-
ется в свойстве SortType одним из трех следующих значений. StData Узлы пересортировываются, когда изменяется их свойство Data StText Узлы пересортировываются, когда изменяется их свойство Text StBoth Узлы пересортировываются, когда изменяются оба эти свойства Значение stNone означает, что сортировка не выполняется. Способ сортировки определяется обработчиком события OnCompare, о котором рас- сказывалось при описании компонента TListView. Например, чтобы отсортировать все элементы дерева в убывающем порядкеих названий, надо установить значение свойства SortType равным stText и написать следующий текст обработчика. procedure TForml. TreeViewlCornpare (Sender: TObject; Nodel, Node2: TTreeNode; Data: Integer; var Compare: Integer); begin if Nodel.Text > Node2.Text then Compare:= -1 else if Nodel.Text < Node2.Text then Compare:= +1 else Compare:= 0 end; ВНИМАНИЕ Реально процедура сортировки выполняется, когда происходит редактирование названия узла или связанных с ним данных, а также при изменении значения свойства SortType.
|
||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 201; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.154.41 (0.018 с.) |