Программирование в Delphi. Барков И.А - 41 стр.

UptoLike

Составители: 

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