Naja, in deinem Ausgangspost hast du nicht geschrieben wie TVSTData aufgebaut ist. Von daher ging ich da von anderen Voraussetzungen aus. Ich dachte, dass du zwei ineinander verschachtelte Listen führst.
Mit deiner aktuellen Struktur könntest du es so versuchen (wobei du dann, wie du es jetzt machst, auch einfach zum Anzeigen der Daten auf das Parent Object zurückgehst):
Delphi-Quellcode:
procedure TVSTEvents.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
ParentNode: PVirtualNode;
Data: TVSTData;
begin
if TBaseVirtualTree(Sender).GetNodeLevel(Node) = 0 then begin
Include(InitialStates, ivsHasChildren);
Data := VSTDataList[Node^.Index];
end else begin
Data := Node^.Parent^.GetData<TVSTData>();
end;
Node.SetData<TVSTData>(Data);
end;
Im GetText Event musst du jetzt ja trotzdem noch auswerten ob du Preis1 oder Preis2 anzeigen willst (anhand des Node^.Index).
Eventuell solltest du darüber nachdenken, ein
TList<Double>
zu verwenden. Dann fällt die Abfrage des NodeIndex weg und du kannst im GetText einfach
CellText := Data.Price[Node^.Index];
ausführen.