Пример кода для любого уровня вложний:
Код:
procedure TForm4.FillTree;
var
TN : TTreeNode;
procedure FillNode(aTN : TTreeNode; IDN : Integer);
var
TN : TTreeNode;
qr: TIBQuery;
begin
qr := TIBQuery.Create(Self);
qr.Database := DM.IBDatabase1;
try
qr.SQL.Text := 'select * from catalog where IDParent = '+IntToStr(IDN);
qr.Open;
while not qr.Eof do begin
TN := Tree.Items.AddChildObject(aTN, qr.FieldValues['Name'],
TObject(qr.FieldByName('ID').AsInteger));
FillNode(TN, qr.FieldValues['ID']);
qr.Next;
end;
finally
qr.Close;
qr.Free;
end;
end;
begin
Tree.Items.Clear;
Tree.Items.BeginUpdate;
try
DM.qrTree.SQL.Text := 'select * from catalog where IDParent = 0';
DM.qrTree.Open;
while not DM.qrTree.Eof do begin
TN := Tree.Items.AddObject(nil, DM.qrTree.FieldValues['Name'],
TObject(DM.qrTree.FieldByName('ID').AsInteger));
FillNode(TN, DM.qrTree.FieldValues['ID']);
TN.Expand(True);
DM.qrTree.Next;
end;
DM.qrTree.Transaction.Commit;
DM.qrTree.Close;
finally
Tree.Items.EndUpdate;
end;
end;
Надеюсь, компоненты из IBX не сложно заменить на компоненты из ADO.