Das Konzept und die Geschwindigkeit von VirtualStringTree führen über kurz oder lang nicht an dieser VCL-Komponente vorbei. Allerdings ist es etwas störend, wenn ein zu verwendendes Objekt aus den Properties z.B. auch der Text gelesen werden soll, jedes Mal in einen Record verpackt werden muss. Daher ist ein wenig Zeigerarithmetik ganz hilfreich, um innerhalb von VST direkt mit einem Objekt arbeiten zu können.
type PNodeData = ^TMyObject; TMyObject = class private FShowText: String; public property ShowText: String read FShowText write FShowText; end; ... // OnCreate des Formulars vstObject.NodeDataSize:=SizeOf(TMyObject); ... procedure TfrmMyObjectAnzeige.vstObjectGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var obj: TMyObject; begin obj:= TMyObject(vstObject.GetNodeData(Node)^); if Assigned(obj) then begin case Column of 0: CellText := obj.ShowText; end; end; end;