Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: VirtualStrignTree Child node Level 1 zeigt falschen Text an

  Alt 10. Jan 2020, 15:39
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.
  Mit Zitat antworten Zitat