Wollte gerade antworten
1. TObjectList habe ich durch TList ausgetauscht. Denn TObjectList UND die VST haben die Objekte.... "ge-owned"
gehabt... glaube ich jedenfalls.
2. Folgende Änderung im OnFreeNode
Delphi-Quellcode:
procedure TForm2.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
begin
VST.GetNodeData<TVSTData>(Node).Free;
aVSTDataClasses.Delete(Node.Index); // <== das hier habe ich hinzugefügt
end;
Das funktioniert jetzt soweit.
- VST.Clear
VST leeren, Nodes löschen und TList-Objekte freigeben
- aVSTDataClasses.Free
Am Ende des Programms Liste freigeben
NUR ich kann mir gut vorstellen, dass meine Änderung oben mit Delete(Nodex.Index) richtig in die Hose geht, wenn man das VST um-sortiert (von Z nach A statt A nach Z).
Bzw. wenn man im VST nur ein paar Nodes und nicht alle angezeigt (Stichwort "Suche") dann ginge das auch echt in die Hose.
Oder sehe ich das falsch?
Und habe dabei gerade noch ein anderes Problem gefunden... ein VST.Clear räumt mir leider auch die TList leer, was ich nicht möchte.