Процедура заполнения компонента TTreeView данными из TDataSet-совместимой выборки

Previous  Top  Next

    
 

 

Code:

{ **** UBPFD *********** by delphibase.endimus.com ****

>> Процедура заполнения компонента TTreeView данными из TDataSet-совместимой выборки

 

Процедура заполнения компонента TTreeView данными из TDataSet-совместимой

выборки типа: idNode int, idParentNode int, cNodeName varchar, ...

 

Важно: корневой узел дерева должен быть первой записью выборки.

 

Зависимости: Windows, SysUtils, DB, ComCtrls

Автор:       Delirium, Master_BRAIN@beep.ru, ICQ:118395746, Москва

Copyright:   Master BRAIN (Delirium)

Дата:        18 октября 2002 г.

***************************************************** }

 

procedure FillTree(Tree: TTreeView; Query: TDataSet; idNode, idParent,

cNodeName: string);

var

i: integer;

begin

// Корневой узел, должен быть первым в выборке Query

Query.First;

Tree.Items.Clear;

Tree.Items.AddObject(nil, Query.FieldByName(cNodeName).AsString,

   Pointer(Query.FieldByName(idNode).asInteger));

Query.Next;

while not Query.Eof do

begin

   i := 0;

   while i < Tree.Items.Count do

     if Tree.Items.Item[i].Data = Pointer(Query.FieldByName(idParent).asInteger)

       then

     begin

       Tree.Items.AddChildObject(Tree.Items.Item[i],

         Query.FieldByName(cNodeName).AsString,

         Pointer(Query.FieldByName(idNode).asInteger));

       break;

     end

     else

       Inc(i);

   Query.Next;

end;

end;

 

 

Пример использования:

Code:

FillTree(TreeView1, ADOQuery1, 'idDoc', 'idParentDoc', 'cDocument');

©Drkb::03091