Zitat von
Kostas:
Ich hätte erwartet das eine Methode gibt einen Node
zu finden anhand der Daten.
Ich habe dazu eine Funktion gefunden, die genau das Gewünschte vollzieht. Ich benutze diese in meinen Anwendungen, da ich recht viele Einträge in meinen VTVs habe.
Ich habe mir in meinen Knotendaten zu jedem Node den Parent vermerkt (der eine ID hat). Ich benutze die Funktion, um an den Root-Knoten später die Kinder ranzuhängen.
Mußt Du natürlich noch an Deine Bedürfnisse anpassen.
Delphi-Quellcode:
function TfrmMain.FindNodeByData(aTree: TBaseVirtualTree;
aID: Integer): PVirtualNode;
var
NodeData: pIstData;
begin
Result := aTree.GetFirst;
while Assigned(Result) do
begin
NodeData := pIstData(aTree.GetNodeData(Result));
if (NodeData^.FGid = aID) AND ((NodeData^.FGTyp=0) OR (NodeData^.FGTyp=1)) Then
Exit;
Result := aTree.GetNext(Result);
end;
end;
Aufgerufen wird das später dann bei mir so:
Delphi-Quellcode:
position:=atree.AddChild(FindNodebyData(atree, myData.FGid));
myPosData:=atree.GetNodeData(position);
usw.