Hier nun meine Lösung:
1. Ich habe eine abgeleitete Klasse vom Tree erstellt:
Delphi-Quellcode:
uses
VirtualTrees;
type
TVirtualStringTreeEx = class(TVirtualStringTree)
public
procedure ReplaceNodeData(Node: PVirtualNode; UserData: Pointer);
end;
implementation
{ TVirtualStringTreeEx }
procedure TVirtualStringTreeEx.ReplaceNodeData(Node: PVirtualNode;
UserData: Pointer);
var
NodeData: ^Pointer;
begin
if Assigned(UserData) then
if NodeDataSize >= 4 then
begin
NodeData := Pointer(PByte(@Node.Data) + TotalInternalDataSize);
NodeData^ := UserData;
end
end;
2. Programmcode aufs Ersetzen angepaßt:
Delphi-Quellcode:
var
lNewData: TMyData;
lNode: PVirtualNode;
begin
lNode:= vstData.FocusedNode;
// lNewData besorgen
...
// Daten ersetzen
TVirtualStringTreeEx(vstData).ReplaceNodeData(lNode, lNewData);
end;
Ich hoffe es stimmt soweit und hilft vielleicht jemanden weiter.
Danke für die Hilfe.
Gruß, Matthias