wie es der Betreff schon sagt, habe ich Fragen zum Finden und Anzeigen von Inhalten von TreeNodes eines TreeViews.
Mit TreeNodes.AddChildObject kann ich erfolgreich ein TreeView erstellen, bei dem in der Baumstruktur jeder Knoten mit einem Text bezeichnet wird und zusätzlich mit einem Datenobjekt verknüpft wird. Im Beispiel hole ich mir Stücklisten aus einer Datenbank.
Code: Alles auswählen
type
TTeile = Class(TObject)
auftr_numm,
posnummer,
keyA: String;
end;
var
Stueckliste: TTeile;
[...]
with Query1 do
begin
first;
while not Eof do
begin
Stueckliste := TTeile.Create;
Stueckliste.auftr_numm:=fieldbyname('auftr_numm').asstring;
Stueckliste.posnummer:=fieldbyname('posnummer').asstring;
Stueckliste.keyA:=fieldbyname('keyA').asstring;
if TreeView2.Items.Count = 0 then
TreeView2.Items.AddChildObject(nil, fieldbyname('keyA').asstring, Stueckliste)
else
TreeView2.Items.AddChildObject( TreeView2.Items.FindNodeWithText(fieldbyname('parentkey').asstring),
fieldbyname('keyA').asstring, Stueckliste);
next;
end;
end;
Code: Alles auswählen
procedure TForm1.TreeView2Change(Sender: TObject; Node: TTreeNode);
begin
If Assigned(Node) then
begin
Edit3.Text:=TTeile(Node.Data).auftr_numm;
Edit4.Text:=TTeile(Node.Data).posnummer;
Edit5.Text:=TTeile(Node.Data).keyA;
end;
end;
Code: Alles auswählen
var
Stueckliste2: TTeile;
begin
Stueckliste2 := TTeile.Create;
Stueckliste2.auftr_numm:='123456';
Stueckliste2.posnummer:='001';
Stueckliste2.keyA:='4711';
TreeView2.Selected := TreeView2.Items.FindNodeWithData(Stueckliste2); // <-- findet keinen Knoten
// TreeView2.Select := TreeView2.Items.FindNodeWithText('4711'); // <-- findet den richtigen Konten
TreeView2.SetFocus;
---
Warum?
Gruß,
Peter