Показать сообщение отдельно
  #21  
Старый 02.03.2012, 08:48
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Пример кода для любого уровня вложний:
Код:
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.
Ответить с цитированием