TiGü schriebe, dass es schlechtes Design wäre sich eine Referenz auf Node zu halten.
Ich habe eine Funktion die sieht so aus
Delphi-Quellcode:
function FindUserNodeByIndex(iIndex: Integer): PVirtualNode;
var
i: Integer;
begin
Result := nil;
for i := 0 to aVSTDataClasses.Count - 1 do
if aVSTDataClasses[i].Index = iIndex then
begin
Result := aVSTDataClasses[i].aNode;
Break;
end;
end;
Ist von sowas dann abzuraten?
Die markierte Zeile unten kann dann vermutlich auch weg
Delphi-Quellcode:
procedure TForm2.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
Node.SetData<TVSTData>(aVSTDataClasses[Node.Index]);
aVSTDataClasses[Node.Index].aNode := Node; // ----------------------------------------------
end;
So würde ich dann beispielsweise den Text eines Properties ändern ohne die Node-Referenz
Delphi-Quellcode:
aVSTDataClasses[5].sUserName := 'XXXXXXXXXXXXXX';
VST.Invalidate; // InvalidateNode(aVSTDataClasses[5].aNode);