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

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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Процедура заполнения компонента TTreeView данными из TDataSet-совместимой выборки
Процедура заполнения компонента TTreeView данными из TDataSet-совместимой
выборки типа: idNode int, idParentNode int, cNodeName varchar, ...
Важно: корневой узел дерева должен быть первой записью выборки.
Зависимости: Windows, SysUtils, DB, ComCtrls
Автор: Delirium, <a href="mailto:Master_BRAIN@beep.ru">Master_BRAIN@beep.ru</a>, 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.;
 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.;
 end;
end;

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

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

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...