Der Code sollte besser so aussehen:
Delphi-Quellcode:
procedure Tfrm_start.VstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
P: ^TObject;
begin
P := Sender.getNodeData(Node);
if Assigned(P) then
begin
P^.Free;
P^ := nil; // zur Sicherheit
end;
end;
Dass du "Vst" anstatt "Sender" verwendet hat, kann natürlich böse ins Auge gehen.
Eventuell lässt sich das noch so vereinfachen: (kann's nicht testen mangels VirtualTree Komponente)
Delphi-Quellcode:
procedure Tfrm_start.VstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
P: ^TObject;
begin
P := Sender.getNodeData(Node);
FreeAndNil(P^);
end;