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