Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#6

Re: VirtualTreeView, einen Node nach Record-Feldinhalt suche

  Alt 9. Sep 2004, 11:21
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.
  Mit Zitat antworten Zitat