Составители:
Рубрика:
41
ску на том же уровне.
Индекс того из предков узла, которьш находится в списке самого высокого уровня, известен из
свойства:
(Ro) property Topltem: Longint;
Для корневого узла это свойство равно 0.
Компонент TOutline не только хранит древовидную структуру, он еще и отображает ее. На эк-
ране каждый узел может находиться в двух состояниях, свер
нутом и
развернутом. В свернутом состоянии потомки узла не видны, в развернутом они изо-
бражаются чуть ниже и правее друг под другом. Состояние узла может иллюстрироваться значком
(плюс/минус, открытая/закрытая папка — см. описание свойства OutlineStyle компонента TOutline). В
таблице приведены методы и свойства, управляющие состоянием узла на экране:
property Expanded: Boolean; Указывает, в каком состоянии находится
узел; True — развернутое со-
стояние.
procedure Collapse; Сворачивает узел, пряча все дочерние узлы.
procedure Expand; Разворачивает узел списка, показывая дочерние узлы.
procedure FullExpand; Полностью разворачивает узел, показывая все дочерние узлы всех поду-
ровней.
Сворачивать/разворачивать узлы дерева, помимо щелчков мышью, можно нажатием
клавиш:
<+> — соответствует Expand;
<-> — соответствует Collapse;
<*> — соответствует FullExpand. Свойство
(Ro) property IsVisible: Boolean;
означает, может ли быть виден узел. Это возможно только в том случае, если виднь! все его ро-
дители. При отрисовке ширина узла сообщается методом:
function GetDisplayWidth: Integer;
Теперь перейдем от описания узла к описанию самого дерева — компонента TOutline.
Он пред-
ставляет собой совокупность узлов типа TOutlineNode. Всего в дереве содержится число узлов, равное
значению свойства:
(Ro) property ItemCount: Longint;
К каждому из них можно обратиться, используя свойство:
(Ro) property Items[Index: Longint]: TOutlineNode;
На текущий (выделенный) узел можно сослаться через свойство:
property Selectedltem: Longint;
Например, выполнение оператора
Items[Items[Selectedltem].Topltem].FullExpand;
приведет в развернутое состояние ту часть дерева, в которой находится выделенный узел (на-
чиная от
его самого далекого предка Topltem). Свойство
property Row: Longint;
показывает, какая строка дерева в данный момент имеет фокус. Зная "содержимое" узла, то есть
его имя или данные, можно найти его в дереве и узнать индекс. Для этого нужно вызвать один из мето-
дов, возвращающих его:
function GetDataItem(Value: Pointer): Longint;
function GetTextItem(const Value: string): Longint;
Можно найти узел и по координатам точки в клиентской
области компонента (на самом деле
играет роль только координата Y) с помощью следующего метода:
function GetItemfX, Y: Integer): LongInC;
Целых три пары методов добавляют новый узел в дерево. Его имя инициализируется парамет-
ром Text. Различие между первым и вторым методами в парах в том, что второй позволяет связать с
ску на том же уровне. Индекс того из предков узла, которьш находится в списке самого высокого уровня, известен из свойства: (Ro) property Topltem: Longint; Для корневого узла это свойство равно 0. Компонент TOutline не только хранит древовидную структуру, он еще и отображает ее. На эк- ране каждый узел может находиться в двух состояниях, свер нутом и развернутом. В свернутом состоянии потомки узла не видны, в развернутом они изо- бражаются чуть ниже и правее друг под другом. Состояние узла может иллюстрироваться значком (плюс/минус, открытая/закрытая папка — см. описание свойства OutlineStyle компонента TOutline). В таблице приведены методы и свойства, управляющие состоянием узла на экране: property Expanded: Boolean; Указывает, в каком состоянии находится узел; True — развернутое со- стояние. procedure Collapse; Сворачивает узел, пряча все дочерние узлы. procedure Expand; Разворачивает узел списка, показывая дочерние узлы. procedure FullExpand; Полностью разворачивает узел, показывая все дочерние узлы всех поду- ровней. Сворачивать/разворачивать узлы дерева, помимо щелчков мышью, можно нажатием клавиш: <+> — соответствует Expand; <-> — соответствует Collapse; <*> — соответствует FullExpand. Свойство (Ro) property IsVisible: Boolean; означает, может ли быть виден узел. Это возможно только в том случае, если виднь! все его ро- дители. При отрисовке ширина узла сообщается методом: function GetDisplayWidth: Integer; Теперь перейдем от описания узла к описанию самого дерева — компонента TOutline. Он пред- ставляет собой совокупность узлов типа TOutlineNode. Всего в дереве содержится число узлов, равное значению свойства: (Ro) property ItemCount: Longint; К каждому из них можно обратиться, используя свойство: (Ro) property Items[Index: Longint]: TOutlineNode; На текущий (выделенный) узел можно сослаться через свойство: property Selectedltem: Longint; Например, выполнение оператора Items[Items[Selectedltem].Topltem].FullExpand; приведет в развернутое состояние ту часть дерева, в которой находится выделенный узел (на- чиная от его самого далекого предка Topltem). Свойство property Row: Longint; показывает, какая строка дерева в данный момент имеет фокус. Зная "содержимое" узла, то есть его имя или данные, можно найти его в дереве и узнать индекс. Для этого нужно вызвать один из мето- дов, возвращающих его: function GetDataItem(Value: Pointer): Longint; function GetTextItem(const Value: string): Longint; Можно найти узел и по координатам точки в клиентской области компонента (на самом деле играет роль только координата Y) с помощью следующего метода: function GetItemfX, Y: Integer): LongInC; Целых три пары методов добавляют новый узел в дерево. Его имя инициализируется парамет- ром Text. Различие между первым и вторым методами в парах в том, что второй позволяет связать с 41