Also eine sehr abgespeckte Variante wäre diese hier. (Aus dem Kopf geschrieben und auch nicht vollständig). Damit weist du der Node eine Objekt Instanz aus einer ObjectList zu. Dieses Objekt muss natürlich mit dem Index auch existieren. Beim Sortieren sollte sogar dann auch nichts passieren, da die Referenz ja bleibt. Es wird nur im Init Event einmal auf die ObjectList zugegriffen und das Item genommen, das mit dem NodeIndex übereinstimmt.
Delphi-Quellcode:
procedure TForm1.VSTInitNode(Sender: TBaseVirtualTree; Node: PVirtualNode; var InitialStates: TVTInitialStates);
var
NodeData: PNodeData;
begin
NodeData := Sender.GetNodeData(Node);
NodeData^ := ObjectList[Node^.Index];
end;