Zitat:
Achja, es wird etwas komplizierter: Kann man sich den Baum vorher sortieren lassen? Alle meine Knoten haben ein Datum und ich suche den Knoten mit dem Ziel-Inhalt des jüngsten Datums. Ich schätze aber, die Indizes sind so wie sie erstellt wurden. Also werd ich da wohl alle Knoten durchlaufen müssen, das Datum vergleichen und den jüngsten Knoten merken. Dürfte ja auch nicht so schwer sein.
Das Sortieren im VirtualTreeView kann man mit dem Event "OnCompareNodes" umsetzen:
Delphi-Quellcode:
PROCEDURE TForm.VirtualTreeViewCompareNodes(
Sender: TBaseVirtualTree;
Node1, Node2: PVirtualNode;
Column: TColumnIndex;
VAR Result: Integer
);
VAR lData1, lData2 : PNodeData;
BEGIN
// Knotendaten beider Knoten ermitteln
lData1 := Sender.GetNodeData(Node1);
lData2 := Sender.GetNodeData(Node2);
// falls die Daten gültig sind ...
IF (Assigned(lData1) AND Assigned(lData2)) THEN
Result := lData1.Datum - lData2.Datum;
END;
wobei ich deine Datenstruktur für das Datum natürlich nicht kenne.
Wenn "Result" < 0 ist, dann kommt Knoten1 zuerst, wenn "Result" > 0 ist, dann kommt Knoten2 zuerst.
Gruß Dale