Ich würde es so machen
1. Datenklasse
Delphi-Quellcode:
unit Datenklasse;
interface
type
TNodeData =
class(TClass)
private
FText:
string;
public
property Text:
string read FText
write SetText;
end;
type
TNodeDataList = TObjectList<TNodeData>;
implementation
procedure TNodeData.SetText(
const Value:
string);
begin
FText:= '
Hallo ' + Value + '
!';
end;
end.
2. Instanz(variable) der generischen Datenklassenliste bereitstellen und Datenklassenliste erzeugen
Delphi-Quellcode:
var // irgendwo ...
NodeDataList: TNodeDataList;
// FormCreate oder so
NodeDataList := NodeDataList.Create(True);
3. Daten der Liste hinzufügen
Delphi-Quellcode:
var
NodeData: TNodeData;
begin
NodeData := TNodeData.Create;
NodeData.Text := 'jus';
NodeDataList.Add(NodeData);
VST.RootCount := NodeDataList.Count;
4. Node (löscht automatisch Datenklasseninstanz)
NodeDataList.Delete(2);
5. Node im VST initialisieren
Delphi-Quellcode:
procedure TNodeEvents.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
Node.SetData<TNodeData>(NodeDataList[Node.Index]);
end;
6. Node-Daten anzeigen
Delphi-Quellcode:
procedure TNodeEvents.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
NodeData: TNodeData;
begin
NodeData := Node.GetData<TNodeData>;
if not Assigned(NodeData) then
Exit;
case Column of
0: CellText := NodeData.Text;
end;
end;