Иерархические структуры в Delphi (часть 2)

TTreeNodes

TTreeNodes содержит список узлов дерева в компоненте TTreeView.

Иерархия классов: TObject->TPersistent->TTreeNodes

Модуль ComCtrls

Описание

Элементы TTreeNodes содержат узлы дерева TTreeView. Вершины (узлы) могут быть добавлены, удалены, вставлены и перенесены в пределах древовидного представления TTreeView.

clip_image003 Свойства TTreeNodes

clip_image005 Count

clip_image005[1] Handle

clip_image005[2] Item

clip_image005[3] Owner

clip_image003[1] property Count: Integer;

Указывает число вершин (узлов) объекта TTreeNodes.

Описание

Определяет число древовидных вершин, которое имеет объект TTreeNodes.

Пример

Следующий код определяет тип записи TMyRec и указателя на запись PMyRec.

type
    PMyRec = ^TMyRec;
    TMyRec = record
    FName: string;
    LName: string;
end;

Следующий код добавляет вершину (узел) к TreeView1 как последнюю вершину. Запись TMyRec связана с добавленным элементом. Значения полей FNAME и LNAME получены из окон редактирования Edit1 и Edit2. Параметр Index получен из окна редактирования Edit3. Элемент добавляется, если индекс имеет правильное (допустимое) значение.

procedure TForm1.Button1Click(Sender: TObject);
var
   MyRecPtr: PMyRec;
   TreeViewIndex: LongInt;
begin
    New(MyRecPtr);
    MyRecPtr^.FName := Edit1.Text;
    MyRecPtr^.LName := Edit2.Text;
    TreeViewIndex := StrToInt(Edit3.Text);
     with TreeView1 do
     begin
         if Items.Count = 0 then
         Items.AddObject(nil, ‘Item’ + IntToStr(TreeViewIndex), MyRecPtr)
         else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
         Items.AddObject(Items[TreeViewIndex], ‘Item’ + IntToStr(TreeViewIndex), MyRecPtr);
     end;
end;

После того, как элемент, содержащий запись TMYREC добавлен, следующий код отображает значения FNAME и LNAME в метке.

procedure TForm1.Button2Click(Sender: TObject);
begin
     Label1.Caption:=PMyRec(TreeView1.Selected.Data)^.Fname + ‘ ‘ +
     PMyRec(TreeView1.Selected.Data)^.LName;
end;

clip_image003[2] property Handle: HWND;

Содержит маркер (дескриптор) TTreeNodes.

clip_image003[3] property Owner: TCustomTreeView;

Ссылка на компонент TTreeNodes, которому принадлежит данный узел.

clip_image003[4] property Item[Index: Integer]: TTreeNode; default;

Перечисляет все древовидные узлы объектов TTreeNodes.

Описание

Используется для доступа к вершине, заданной её позицией в дереве. Первая вершина имеет индекс 0, второй индекс 1, и так далее.

Item — заданное по умолчанию свойство для TTREENODES. Это означает, что название свойства Item может быть опущено при индексации в дереве. Таким образом, строка

FirstNode := TreeView1.Items.Item[0];

Может быть написана

FirstNode := TreeView1.Items[0];

clip_image003[5] Методы TTreeNodes

    • Add
    • AddChild
    • AddChildFirst
    • AddChildObject
    • AddChildObjectFirst
    • AddFirst
    • AddNode
    • AddObject
    • AddObjectFirst
    • AlphaSort
    • Assign
    • BeginUpdate
    • Clear
    • clip_image007 Create
    • CustomSort
    • Delete
    • clip_image007[1] Destroy
    • EndUpdate
    • GetFirstNode
    • GetNode
    • Insert
    • InsertNode
    • InsertObject

Наследует от класса 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

clip_image003[6] Add method (TTreeNodes)

Добавляет новую вершину (узел) к дереву.

Синтаксис:

function Add(Node: TTreeNode): TTreeNode;

Описание

Вершина (узел) добавляется последней в тот же список, где расположен узел Node. Параметр S определяет имя новой вершины. Функция возвращает результат – узел, который был добавлен. Если дерево сортируется, то добавляемый узел располагается в последовательности сортировки.

Пример:

Следующий пример демонстрирует, как добавить вершину (узел) к дереву TTREEVIEW.

procedure TForm1.Button1Click(Sender: TObject);
var
    MyTreeNode1, MyTreeNode2: TTreeNode;
begin
    with TreeView1.Items do
    begin
        Clear; {Удаляет все существующие вершины (узлы)}
        MyTreeNode1 := Add(nil, ‘RootTreeNode1’); { Добавляет корневую вершину (узел)}
        {Добавляет дочернюю вершину к узлу, только что добавленному}
        AddChild(MyTreeNode1,’ChildNode1′);
        {Добавляет другие вершины в корневую папку}
        MyTreeNode2 := Add(MyTreeNode1, ‘RootTreeNode2’);
        {Добавляет MyTreeNode2 как дочернюю вершину }
        AddChild(MyTreeNode2,’ChildNode2′);
        {Изменяет MyTreeNode2 на ChildNode2}
        {и добавляет к нему дочернюю вершину}
        MyTreeNode2 := TreeView1.Items[3];
        AddChild(MyTreeNode2,’ChildNode2a’);
        {Добавить другую дочернюю вершину к ChildNode2 после ChildNode2a }
        Add(MyTreeNode2,’ChildNode2b’);
        {и добавить другие вершины в корневую папку}
        Add(MyTreeNode1, ‘RootTreeNode3’);
    end;
end;

clip_image003[7] AddChild method (TTreeNodes)

Добавляет новую вершину (узел) к дереву.

Синтаксис:

function AddChild(Node: TTreeNode; const S: string): TTreeNode;

Описание

Вершина (узел) добавляется последней в список дочерних вершин узла Node. Параметр S определяет имя новой вершины (узла). AddChild возвращает вершину (узел), которая была добавлена. Если дерево сортируется, AddChild вставляет вершину (узел) в соответствии с порядком сортировки.

clip_image003[8] AddChildFirst method (TTreeNodes)

Добавляет новую вершину (узел) к дереву.

Синтаксис:

function AddChildFirst(Node: TTreeNode; const S: string): TTreeNode;

Описание

Узел добавляется первым в список дочерних узлов узла Node. Параметр S определяет имя новой вершины (узла). Вершины (узлы), которые расположены ниже добавленной вершины, перемещаются вниз на одну строку и повторно индексируются. AddChildFirst возвращает вершину (узел), которая была добавлена.

clip_image003[9] AddChildObject method (TTreeNodes)

Добавляет к дереву новую вершину (узел), содержащий данные.

Синтаксис:

function AddChildObject(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Вершина (узел) добавляется последней в список дочерних вершин узла Node. Параметр S определяет имя новой вершины. Параметр Ptr определяет данные, которые связываются с вершиной. AddChildObject возвращает вершину (узел), которая была добавлена.

Замечание: Когда вершина уничтожается, память, выделенная для Ptr не освобождается.

Пример:

Следующий пример добавляет к дереву новую дочернюю вершину к списку дочерних вершин выбранного элемента. Новая вершина идентифицирована ‘New Item’. Объект TBitmap связан с новой вершиной..

TreeView1.Items.AddChildObject(TreeView1.Selected,’New Item’, MyBitMap);

clip_image003[10] AddChildObjectFirst method (TTreeNodes)

Добавляет к дереву новую вершину (узел), содержащий данные.

Синтаксис:

function AddChildObjectFirst(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Добавляется первая дочерняя вершина узла Node, а с ней связываются данные. Вершины, которые располагаются после добавленной вершины, перемещаются вниз на одну строку и повторно индексируются. Параметр S определяет имя вершины. Параметр Ptr определяет связанные данные. AddChildObjectFirst возвращает вершину, которая была добавлена.

Замечание: Память, выделяемая для Ptr не освобождается, когда удаляется вершина.

Пример:

В следующем примере добавляется новая дочерняя вершина к выделенному узлу дерева. Новая вершина сначала добавляется в список дочерних вершин, а затем происходит переиндексация дочерних вершин. Новый узел идентифицирован ‘New Item’. Объект TBitmap связан с новым узлом.

TreeView1.Items.AddChildObjectFirst(TreeView1.Selected,’New Item’,MyBitMap);

clip_image003[11] AddFirst method (TTreeNodes)

Узел добавляется первым в тот же список, что и узел Node.

Синтаксис:

function AddFirst(Node: TTreeNode; const S: string): TTreeNode;

Описание

Вершины, которые располагаются после добавленной вершины, перемещаются вниз на одну строку и заново индексируются. Параметр S определяет имя новой вершины (узла). AddFirst возвращает вершину (узел), которая была добавлена.

clip_image003[12] AddNode method (TTreeNodes)

Добавляет узел к дереву.

Синтаксис:

function AddNode(Node, Relative: TTreeNode; const S: string; Ptr: Pointer; Method: TNodeAttachMode): TTreeNode;

Описание

AddNode добавляет вершину в дерево. AddNode возвращает недавно добавленную вершину.

Если Вершина — ноль, то вызывается метод CreateNode, чтобы создать ее. Параметры Relative и Method вместе определяют расположение новой вершины. Relative – добавляемый узел, который может располагаться на одном уровне с вершиной Node или быть по отношении к Node дочерней. Это определено в параметре Method. Параметр S определяет имя новой вершины. Параметр Ptr определяет данные, связанные с вершиной.

Замечание: Память, выделенная Ptr, не освобождается при удалении вершины.

clip_image003[13] AddObject method (TTreeNodes)

Добавляет новый узел к дереву, содержащий данные.

Синтаксис:

function AddObject(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Вершина добавляется как последний узел в тот же список, что и узел Node. S параметр определяет имя узла. Ptr — параметр определяет данные, связанные с узлом. Функция AddObject возвращает узел, который добавился.

Обратите внимание: память, которая выделяется Ptr, не освобождается при удалении узла.

clip_image003[14] AddObjectFirst method (TTreeNodes)

Добавляет новый узел к дереву, содержащий данные.

Синтаксис:

function AddObjectFirst(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Узел добавляется сначала к списку узлов, определенных параметром Node. Узлы, расположенные после добавленного узла, перемещаются вниз на одну строку и повторно индексируются. Параметр S определяет имя узла. Параметр Ptr определяет данные, связанные с узлом. Функция AddObjectFirst возвращает узел, который добавился.

clip_image003[15] AlphaSort method (TTreeNodes)

Сортирует узлы дерева.

Синтаксис:

function AlphaSort([ARecurse: Boolean]): Boolean;

Описание

Функция AlphaSort вызывает сортировку узлов. Если обработчик события OnCompare определен для TCustomTreeView, то подпрограмма определяет порядок указанной сортировки. Если обработчик события OnCompare не определен, то узлы сортируются по их именам, по возрастанию.

Параметр ARecurse (задано по умолчанию False) определяет, что сортировка должна выполняться рекурсивно для каждой ветви отдельно.

clip_image003[16] Assign method (TTreeNodes)

Переносит значения свойств из источника, заданного параметром Source.

Синтаксис:

procedure Assign(Source: TPersistent!al(`tpersistent’,3,`TopicNotFound’,`main’));

Описание

Используется для копирования информации от одного узла к другому.

clip_image003[17] BeginUpdate method (TTreeNodes)

Предупреждает модификацию дерева до тех пор, пока не будет найден метод EndUpdate.

Синтаксис:

procedure BeginUpdate;

Описание

Метод BeginUpdate препятствует обновлению экрана, когда добавляются, удаляются, или вставляются новые узлы. Добавляемые или удаляемые узлы будут иметь недопустимые идексные значения, пока не будет вызван метод EndUpdate.

Используйте BeginUpdate, чтобы предотвратить экранные операции, связанные с обновлением или перекрашиванием для ускорения времени обработки.

Обратите внимание: для каждого метода BeginUpdate должен быть соответствующий метод EndUpdate.

clip_image003[18] Clear method (TTreeNodes)

Удаляет все узлы дерева TTreeNodes.

Синтаксис:

procedure Clear;

Описание

Используйте метод Clear для удаления всех узлов дерева.

clip_image003[19] CustomSort method (TTreeNodes)

Сортирует узлы дерева.

Синтаксис:

function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;

type TTVCompare = function(lParam1, lParam2, lParamSort: Longint; ARecurse: Boolean = False): Integer stdcall;

Описание

Функция CustomSort вызывает сортировку узлов в виде, обозначенном параметром SortProc. Параметр Data передает данные для сортировки. Дополнительный параметр ARecurse (заданно по умолчанию False) определяет, что сортировка должна выполняться рекурсивно для каждой ветви дерева.

Если SortProc равен nil, то выполняется заданная по умолчанию сортировка. Заданная по умолчанию сортировка использует обработчик события OnCompare для класса TCustomTreeView. Если обработчик события OnCompare не определен, то используется заданная по умолчанию сортировка по именам узлов, по возрастанию.

clip_image003[20] Create constructor (TTreeNodes)

Создает экземпляр объекта TTreeNodes

Синтаксис:

constructor Create(AOwner: TCustomTreeView);

Описание

Создает экземпляр объекта TTreeNodes во время выполнения.

clip_image003[21] Delete method (TTreeNodes)

Удаляет узлы из дерева

Синтаксис:

procedure Delete(Node: TTreeNode);

Описание

Удаляет узел, указанный параметром Node со всеми его дочерними узлами.

clip_image003[22] Destroy destructor (TTreeNodes)

Разрушает и удаляет из памяти созданный экземпляр объекта TTreeNodes.

Описание

Не используйте метод Destoy непосредственно в приложении.

clip_image003[23] EndUpdate method (TTreeNodes)

Вновь возвращает возможность перекрашивания экрана, которая была выключена методом BeginUpdate.

Синтаксис:

procedure EndUpdate;

clip_image003[24] GetFirstNode method (TTreeNodes)

Возвращает первый узел дерева.

Синтаксис:

function GetFirstNode: TTreeNode;

Описание

Используйте метод GetFirstNode для поиска в программе первого узла дерева. GetFirstNode возвращает значение Item[0].

Пример:

Следующий пример заносит (добавляет) имена всех узлов дерева в компоненту ListBox.

var
    CurItem: TTreeNode;
begin
    CurItem := TreeView1.Items.GetFirstNode;
    while CurItem <> nil do
    begin
        ListBox1.Items.Add(CurItem.Text);
        CurItem := CurItem.GetNext;
    end;
end;

clip_image003[25] GetNode method (TTreeNodes)

Возвращает узел дерева, заданный его дескриптором ItemId.

Синтаксис:

function GetNode(ItemId: HTreeItem): TTreeNode;

Описание

ItemId – маркер (дескриптор) узла дерева.

clip_image003[26] Insert method (TTreeNodes)

Функция добавляет узел непосредственно перед узлом Node..

Синтаксис:

function Insert(Node: TTreeNode; const S: string): TTreeNode;

Описание

Параметр S определяет имя узла. Функция Insert возвращает новый узел.

clip_image003[27] InsertNode method (TTreeNodes)

Вставляет узел в дерево, связанный с данными.

Синтаксис:

function InsertNode(Node, Sibling: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Вызывается функция InsertNode, чтобы вставить новый узел (Sibling) перед узлом, заданным параметром Node. Параметр S определяет имя нового узла. Параметр Ptr определяет данные, связанные с узлом. Функция InsertNode возвращает новый узел.

Обратите внимание: память, которая выделена Ptr не освобождается при удалении узла.

clip_image003[28] InsertObject method (TTreeNodes)

Вставляет узел связанный с данными в дерево, перед узлом, указанным параметром Node.

Синтаксис:

function InsertObject(Node: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;

Описание

Функция InsertObject вставляет новый узел, связанный с данными, перед узлом, заданным параметром Node. Параметр S определяет имя нового узла, и параметр Ptr определяет связанные с узлом данные. Функция InsertObject возвращает новый узел.

Обратите внимание: память, выделенная для Ptr не освобождается при удалении узла.

Александр Малыгин

Объект обсуждения - программное обеспечение для выполнения автоматизированного конструкторского и технологического проектирования, разработки управляющих программ, вопросы, связанные с разработкой прикладных САПР.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *