Du machst ja scheinbar jetzt folgendes:
Delphi-Quellcode:
procedure TForm1.LoadNodes();
var
NodeData: PNodeData;
Node: PVirtualNode;
begin
Node := vst.AddChild(nil);
NodeData := vst.GetNodeData(Node);
NodeData^ := TNodeData.Create(); // Hier führst du einen Konstruktor einer Klasse aus
end;
Da du in dem Beispiel oben (das jeanicke im übrigen auch so nur mit Generics gezeigt hat) ein Objekt instanziiert hast, musst du das dann auch wieder freigeben.
Also erstellt du dir einen EventHandler für das OnFreeNode Event des VST.
Delphi-Quellcode:
procedure TForm1.vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
NodeData: PNodeData;
begin
NodeData := vst.GetNodeData(Node);
NodeData^.Free;
end;
Nicht ganz ich mache es so (da steht Record aber es ist eine Class, keine Sorge!)
Delphi-Quellcode:
procedure AddVSTStructure(aVST: TVirtualStringTree; aRecord: TTreeData);
var
Data: PTreeData;
Node: PVirtualNode;
begin
Node := aVST.AddChild(nil);
Node.CheckType := ctCheckBox;
Node.CheckState := csCheckedNormal;
Data := aVST.GetNodeData(Node);
Data^ := aRecord;
end;
und freigeben
Delphi-Quellcode:
procedure TForm2.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
Data^.Free;
end;
Ich werde mir später mal das neue VST runterladen und prüfen. Aber mit meiner aktuellen Version zeigt der Taskmanager nie "weniger" an.
Ich habe übrigens Version 5.3.0: (04 Jan 2014) sehe ich gerade.