Thema: Delphi TreeView aus DB füllen

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: TreeView aus DB füllen

  Alt 6. Jun 2006, 13:51
Hallo Christian,

als erstes solltest du deine DataSets über die Eigenschaft MasterSource (TTable) bzw. DataSource (TQuery) hierarchisch verketten. Das Eintragen von Knoten auf beliebiger Ebene lässt sich folgendermaßen abstrahieren:

Delphi-Quellcode:
procedure AddNodes(nodes: TTreeNodes; nParent: TTreeNode; ds: TDataSet; fnDisplay, fnKey: String);
var
  iKey: Integer;
  sDisplay: String;
begin
  nodes.BeginUpdate;
  with ds do
  try
    First;
    while not Eof do
    begin
      sDisplay := FieldByName(fnDisplay).AsString;
      iKey := FieldByName(fnKey).AsInteger;
      with nodes.AddChildObject(nParent, sDisplay, Pointer(iKey)) do
        HasChildren := True;
      Next;
    end;
  finally
    nodes.EndUpdate;
  end;
end;
Die Initialisierung der TreeView kann im Ereignis OnCreate() der Form statt finden:

Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
begin
  AddNodes(TreeView.Items, nil, QC, 'Company', 'CustNo');
end;
Wie du die Knoten auf den unteren Ebenen über das Ereignis OnExpanding() der TreeView eintragen lassen kannst, das zeigt die angehängte Demo.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip db-tree_128.zip (2,9 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat