als Anlage mal das Musterprojekt genau nach Deinen vorgaben. Trotzallem immer noch der gleiche Fehler.
Ändere mal in der for-Schleife diese Zeilen:
Delphi-Quellcode:
for I := 0 to 10 do
begin
BuildingNode := vstKunden.AddChild(nil);
Daten := vstKunden.GetNodeData(CustomerNode);
...
in folgende Zeilen:
Delphi-Quellcode:
for I := 0 to 10 do
begin
BuildingNode := vstKunden.AddChild(nil);
Daten := vstKunden.GetNodeData(BuildingNode);
...
Außerdem bitte noch das OnFreeNode ergänzen:
Delphi-Quellcode:
procedure TForm1.vstKundenFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Kunden_Daten: PRKundenDaten;
begin
case vstKunden.GetNodeLevel(Node) of
0:
begin
Kunden_Daten := Sender.GetNodeData(Node);
Kunden_Daten^.FKundedaten.Free;
Kunden_Daten^.FObjektdaten.Free;
Kunden_Daten^.FSystemdaten.Free;
Finalize(Kunden_Daten^);
end;
end;
end;
Und jetzt darfst du gerne mit den Kopf auf den Tisch schlagen.
PS: Trotzdem wäre der Weg mit externer Datenhaltung über eine Objektliste langfristig besser!
Bitte beschäftige dich damit.