Иерархия классов: TObject->TPersistent->TTreeNodes
Класс TTreeNode отображает индивидуальный узел дерева
Unit
ComCtrls
Описание
Каждый узел в дереве состоит из метки и дополнительного растрового изображения. Каждый узел может быть родителем списка дочерних узлов. Щелкая по узлу, пользователь может развернуть или свернуть связанный список дочерних узлов.
Свойства TTreeNode
В классе TTreeNode
Cut
Data
Expanded
Focused
HasChildren
ImageIndex
Item
OverlayIndex
Selected
SelectedIndex
StateIndex
Text
AbsoluteIndex property (TTreeNode)
Указывает индекс узла дерева относительно первого узла.
Синтаксис:
property AbsoluteIndex: Integer;
Описание
Используйте AbsoluteIndex, чтобы определить абсолютную позицию узла в дереве. Первый узел дерева имеет индекс 0, и последующие узлы пронумерованы последовательно. Если узел имеет любые дочерние записи, его AbsoluteIndex – на единицу меньше, чем индекс его первого ребенка.
Указывает количество прямых потомков узла. Счетчик числа дочерних узлов данного узла.
Синтаксис:
property Count: Integer;
Описание
Count используется, чтобы определить, сколько дочерних вершин принадлежит узлу. Count включает только непосредственные дочерние узлы, и не их потомков. Count может быть полезен при выполнении итераций с дочерними узлами.
Указывает, вырезан ли узел, как часть операции «вырезать и вставить».
Синтаксис:
property Cut: Boolean;
Data property (TTreeNode)
Указывает на определенные приложением данные, связанные с узлом.
Синтаксис:
property Data: Pointer;
Описание
Используйте свойство Data, чтобы сопоставить данные с узлом. Данные позволяют приложениям быстро обратиться к информации об объекте, представленного вершиной (узлом).
Deleting property (TTreeNode)
Указывает, уничтожает ли узел метод Destroy.
Синтаксис:
property Deleting: Boolean;
Описание
Свойство Deleting возвращает true, если узел находится в процессе удаления.
DropTarget property (TTreeNode)
Показывает, перетащен ли узел?
Синтаксис:
property DropTarget: Boolean;
Expanded property (TTreeNode)
Определяет, расширен ли узел?
Синтаксис:
property Expanded: Boolean;
Focused property (TTreeNode)
Указывает, имеет ли вершина (узел) фокус?
Синтаксис:
property Focused: Boolean;
Handle property (TTreeNode)
Содержит маркер (дескриптор) Handle окна дерева, которое содержит узел TTreeNode.
Синтаксис:
property Handle: HWND;
HasChildren property (TTreeNode)
Указывает, имеет ли узел дочерние вершины?
Синтаксис:
property HasChildren: Boolean;
Описание
Свойство HasChildren равно True, если вершина имеет дочерние узлы, или False, в противном случае. Если ShowButtons дерева равен True, и HasChildren равен True, то налево от вершины появится кнопка плюс (+), когда узел свернут, и минус (-), когда узел развернут.
Замечание: если вершина не имеет никаких дочерних узлов, установка HasChildren в True покажет (+) , но дочерние вершины появляться не будут, и развернута вершина быть не может.
ImageIndex property (TTreeNode)
Определяет, какое изображение выбрано, когда вершина (узел) находится в ее нормальном состоянии и в настоящее время не выбрана.
Синтаксис:
property ImageIndex: TImageIndex;
Index property (TTreeNode)
Определяет позицию узла в списке вершин своего родителя.
Синтаксис:
property Index: Longint;
Описание
Используется свойство Index, чтобы определить позицию вершины (узла) относительно родительской вершины. Первый узел имеет значение индекса 0, и последовательные дочерние узлы индексированы последовательно.
IsFirstNode property (TTreeNode)
Указывает, является ли данная вершина самой первой?
Синтаксис:
property IsFirstNode: Boolean;
Описание
Свойство IsFirstNode возвращает true для первой вершины.
IsVisible property (TTreeNode)
Указывает, видима ли вершина (узел) в настоящее время в дереве?
Синтаксис:
property IsVisible: Boolean;
Item property (TTreeNode)
Предоставляет доступ к дочерней вершине по индексу Index.
Синтаксис:
property Item[Index: Integer]: TTreeNode;
ItemId property (TTreeNode)
Содержит маркер (дескриптор), который уникально идентифицирует каждую вершину (узел) в дереве.
Синтаксис:
property ItemId: HTreeItem;
Описание
Используйте это свойство, чтобы сослаться на вершины (узлы) при создании вызовов API Windows или запроса GetNode метода TTreeNodes.
Level property (TTreeNode)
Указывает уровень вершины в пределах дерева.
Синтаксис:
property Level: Integer;
Описание
Значение уровня 0 — для вершин на верхнем уровне. Значение уровня 1 — для их дочерних записей, и так далее.
OverlayIndex property (TTreeNode)
Определяет, которое изображение из списка изображений, используется как оверлейная маска.
Синтаксис:
property OverlayIndex: Integer;
Описание
Оверлейная маска — изображение, которое накладывается на другое изображение в дереве. Например, чтобы указать, что узел больше не доступен, используется оверлейное изображение, которое помещает X поверх изображения текущего узла.
Owner property (TTreeNode)
Указывает, какой древовидный компонент типа TTreeNodes содержит данный узел.
Синтаксис:
property Owner: TTreeNodes;
Parent property (TTreeNode)
Ссылка на объект – родительский узел верхнего уровня.
Синтаксис:
property Parent: TTreeNode;
Selected property (TTreeNode)
Определяет, выбран ли узел.
Синтаксис:
property Selected: Boolean;
SelectedIndex property (TTreeNode)
Определяет индекс изображения для выбранного узла.
Синтаксис:
property SelectedIndex: Integer;
StateIndex property (TTreeNode)
Индекс дополнительной картинки, отражающей состояние узла.
Синтаксис:
property StateIndex: Integer;
Описание
Используйте StateIndex, чтобы отобразить дополнительное изображение для узла, которое отражает информацию о состоянии.
Text property (TTreeNode)
Определяет метку, которая идентифицирует узел дерева.
Синтаксис:
property Text: string;
TreeView property (TTreeNode)
Определяет дерево, которому принадлежит узел.
Синтаксис:
property TreeView: TCustomTreeView;
Методы TTreeNode
В классе TTreeNode
AlphaSort
Assign
Collapse
CustomSort
Delete
DeleteChildren
DisplayRect
EndEdit
Expand
getFirstChild
GetHandle
GetLastChild
GetNext
GetNextChild
getNextSibling
GetNextVisible
GetPrev
GetPrevChild
getPrevSibling
GetPrevVisible
HasAsParent
IndexOf
IsFirstNode
MakeVisible
MoveTo
Наследуют от TPersistent
GetNamePath
Наследуют от TObject
AfterConstruction
BeforeDestruction
ClassInfo
ClassName
ClassNameIs
ClassParent
ClassType
CleanupInstance
DefaultHandler
Dispatch
FieldAddress
Free
FreeInstance
GetInterface
GetInterfaceEntry
GetInterfaceTable
InheritsFrom
InitInstance
InstanceSize
MethodAddress
MethodName
NewInstance
SafeCallException
AlphaSort method (TTreeNode)
Сортирует узлы дерева.
Синтаксис:
function AlphaSort(ARecurse: Boolean = False): Boolean;
Описание
Метод AlphaSort вызывает сортировку вершин или пересортировку дочерних вершин. Если обработчик события OnCompare определен для TCustomTreeView, то программа определяет порядок сортировки. Если OnCompare не определен, вершины сортируются с учетом регистра по их заголовкам.
Дополнительный параметр ARecurse (значение по умолчанию False) определяет, что сортировка должна выполняться рекурсивно и сортировать каждое поддерево в свою очередь. Чтобы сортировать вершины верхнего уровня, используйте метод AlphaSort класса TTreeNodes.
Assign method (TTreeNode)
Копирует свойства другого узла дерева.
Синтаксис:
procedure Assign(Source: TPersistent; override;
Collapse method (TTreeNode)
Свертывает вершины дерева.
Синтаксис:
procedure Collapse(Recurse: Boolean);
Описание
Когда вершина свернута, все ее подвершины скрыты. Положительная кнопка (+) может быть отображена, в зависимости от того, установлено ли свойство дерева ShowButtons. Если параметр Recurse равен true, то все подвершины будут также свернуты.
Create constructor (TTreeNode)
Создает экземпляр класса TTreeNode.
Синтаксис:
constructor Create(AOwner: TTreeNodes);
CustomSort method (TTreeNode)
Выполняет сортировку узлов.
Синтаксис:
type
PFNTVCOMPARE = function(lParam1, lParam2, lParamSort: Longint): Integer stdcall;
TTVCompare = PFNTVCOMPARE;
function CustomSort(SortProc: TTVCompare; Data: Longint; ARecurse: Boolean = False): Boolean;
Delete method (TTreeNode)
Уничтожает вершину и все её дочерние.
Синтаксис:
procedure Delete;
DeleteChildren method (TTreeNode)
Удаляет все дочерние узлы.
Синтаксис:
procedure DeleteChildren;
Описание
Метод DeleteChildren удаляет все дочерние узлы и освобождает память.
Destroy destructor (TTreeNode)
Разрушает вершины.
Синтаксис:
destructor Destroy; override;
DisplayRect method (TTreeNode)
Возвращает ограничивающий прямоугольник для узла.
Синтаксис:
function DisplayRect(TextOnly: Boolean): TRect;
Описание
Если параметр TextOnly равен True, ограничительный прямоугольник включает только текст вершины, в противном случае включает полную строку, которую занимает вершина.
OnCustomDrawItem, DisplayRect, Level, Indent
Следующий пример показывает, как обработчик события OnCustomDrawItem рисует элементы и строки дерева после того, как обработчик события OnCustomDraw выполнился на заднем плане.
procedure TCustomDrawForm.TVCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect: TRect;
begin
with TV.Canvas do
begin
// Если DefaultDraw, равно true, любое из свойств шрифта узла, может быть
// изменено. Обратите внимание также, что, когда DefaultDraw = True, Windows рисует
// кнопки и игнорируют наши цвета фона шрифта, используя вместо этого
// свойство Color TreeView’s.
if cdsSelected in State then
begin
Font.Assign(SelectedFontDialog.Font);
Brush.Color := SelBkgColorDialog.Color;
end;
DefaultDraw := FDefaultDrawItem;
//DefaultDraw = False означает, что Вы должны обработать весь узел, включая кнопки,
//строки, изображения и текст.
if not DefaultDraw then
begin
//draw the selection rect.
if cdsSelected in State then
begin
NodeRect := Node.DisplayRect(True);
FillRect(NodeRect);
end;
NodeRect := Node.DisplayRect(False);
if None1.Checked then
//no bitmap, so paint in the background color.
begin
Brush.Color := BkgColorDialog.Color;
Brush.Style := FBrushStyle;
FillRect(NodeRect)
end
else
//don’t paint over the background bitmap.
Brush.Style := bsClear;
NodeRect.Left := NodeRect.Left + (Node.Level * TV.Indent);
//NodeRect.Left now represents the left-most portion of the expand button
DrawButton(NodeRect, Node);
NodeRect.Left := NodeRect.Left + TV.Indent + FButtonSize;
//NodeRect.Left is now the leftmost portion of the image.
DrawImage(NodeRect, Node.ImageIndex);
NodeRect.Left := NodeRect.Left + ImageList.Width;
//Now we are finally in a position to draw the text.
TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
end;
end;
end;
EndEdit method (TTreeNode)
Метод окончания редактирования метки узла.
Синтаксис:
procedure EndEdit(Cancel:Boolean);
Описание
Вызовите метод EndEdit, чтобы окончить редактирование узла. Если параметр Cancel равен True, все изменения, сделанные пользователем, отменяются.
Expand method (TTreeNode)
Раскрывает дочерние вершины данного узла.
Синтаксис:
procedure Expand(Recurse: Boolean);
Описание
Когда вершина развернута, отображаются дочерние узлы. Кнопка минус ‘-‘ может быть отображена, в зависимости от того, установлено ли свойство дерева ShowButtons. Если Recurse равно True, все потомки подузлов также развернуты.
GetFirstChild method (TTreeNode)
Возвращает первую дочернюю вершину данного узла.
Синтаксис:
function GetFirstChild: TTreeNode;
GetHandle method (TTreeNode)
Возвращает маркер (дескриптор).
Синтаксис:
function GetHandle: HWND;
GetLastChild method (TTreeNode)
Возвращает последнюю дочернюю вершину данного узла.
Синтаксис:
function GetLastChild: TTreeNode;
GetNext method (TTreeNode)
Возвращает следующую вершину после данной.
Синтаксис:
function GetNext: TTreeNode;
GetFirstNode, GetNext example
Следующий пример добавляет значение Text для всех узлов дерева в список ListBox.
var
CurItem: TTreeNode;
begin
CurItem := TreeView1.Items.GetFirstNode;
while CurItem <> nil do
begin
ListBox1.Items.Add(CurItem.Text);
CurItem := CurItem.GetNext;
end;
end;
GetNextChild method (TTreeNode)
Возвращает следующую дочернюю вершину, следующую после вершины, указанной параметром Value.
Синтаксис:
function GetNextChild(Value: TTreeNode): TTreeNode;
Parent, GetNextChild, GetPrevChild example
Следующий код проверяет, видит ли выбранный узел брата; если так, HasSibling будет установлен в true.
var
HasSibling: Boolean;
SelNode: TTreeNode;
ParentNode: TTreeNode;
begin
SelNode := TTreeView1.Selected;
ParentNode := SelNode.Parent;
HasSibling := (ParentNode.GetPrevChild(SelNode) <> nil) or
(ParentNode.GetNextChild(SelNode) <> nil);
end;
gGetNextSibling method (TTreeNode)
Возвращает следующий узел в дереве на том же самом уровне, что и данный узел.
Синтаксис:
function GetNextSibling: TTreeNode;
Описание
Функция GetNextSibling возвращает следующий узел, независимо от того, видим ли мы его. Чтобы находить следующий узел в дереве, включая дочерние вершины, используйте функцию GetNext.
GetNextVisible method (TTreeNode)
Возвращает следующий видимый узел дерева после данного.
Синтаксис:
function GetNextVisible: TTreeNode;
GetPrev method (TTreeNode)
Возвращает узел в дереве, предшествующий данному узлу (выделенному, например).
Синтаксис:
function GetPrev: TTreeNode;
GetPrevChild method (TTreeNode)
Возвращает дочерний узел, предшествующий узлу Value.
Синтаксис:
function GetPrevChild(Value: TTreeNode): TTreeNode;
GetPrevSibling method (TTreeNode)
Возвращает предыдущий узел перед текущим узлом и на том же самом уровне.
Синтаксис:
function GetPrevSibling: TTreeNode;
GetPrevVisible method (TTreeNode)
Возвращает предыдущий узел перед текущим узлом.
Синтаксис:
function GetPrevVisible: TTreeNode;
HasAsParent method (TTreeNode)
Возвращает True, если узел Value является родителем текущей вершины.
Синтаксис:
function HasAsParent(Value: TTreeNode): Boolean;
IndexOf method (TTreeNode)
Возвращает позицию дочерней вершины текущего узла.
Синтаксис:
function IndexOf(Value: TTreeNode): Integer;
Описание
Вызовите метод IndexOf, чтобы получить положение дочерней вершины среди других дочерних вершин. Если вершина Value — не является дочерней вершиной метод IndexOf возвращает-1. Первая дочерняя вершина имеет индекс 0, вторая индекс 1, и так далее.
MakeVisible method (TTreeNode)
Делает узел видимым.
Синтаксис:
procedure MakeVisible;
MoveTo method (TTreeNode)
Перемещает узел в другое место дерева.
Синтаксис:
procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode);
Описание
Параметр Destination определяет узел, который будет родителем текущего узла или братом после перемещения. Параметр Mode определяет новые отношения между этим узлом и узлом адресата.
Значение Комментарий
naAdd Новый или перемещенный узел становится последним братом другого узла.
naAddFirst Новый или перемещенный узел становится первым братом другого узла.
naInsert Новый или перемещенный узел становится братом перед другим узлом.
naAddChild Новый или перемещенный узел становится последним ребенком другого узла.
naAddChildFirst Новый или перемещенный узел становится первым ребенком другого узла.
GetNodeAt, MoveTo, Selected
Следующий код использует GetNodeAt, чтобы добавить перемещенный узел как ребенок узла.