BeginUpdate() und EndUpdate() sind Methoden von TreeView.Items - also tvBaum.Items.BeginUpdate() und es wird funktionieren. Sobald du einen Knoten auswählst wird das Ereignis OnChange() gefeuert - du musst nur entsprechenden Code dafür schreiben. Beim Befüllen des Baums solltest du den Primärschlüssel der Tabelle in der Eigenschaft Data des Knoten mitführen:
Delphi-Quellcode:
tn0 := tvBaum.Items.AddChildObject(nil,
Table1.FieldByName('FIRMA').Text,
Pointer(Table1.FieldByName('ID').AsInteger)
);
Jetzt kannst du im Ereignis OnChange() recht einfach unterscheiden:
Delphi-Quellcode:
procedure TDemoForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
case Node.Level of
0: // Hersteller
Table1.Locate('ID', Integer(Node.Data), []);
1: //Produkt
Table2.Locate('ID', Integer(Node.Data), []);
end;
end;
Das ist ohne datensensitive Komponenten, wie du schon richtig bemerkt hast.
marabu