Einzelnen Beitrag anzeigen

Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#6

Re: TVirtualStringTree: nachträglich Objekt am Knoten tausch

  Alt 3. Mai 2010, 14:22
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
Matthias
  Mit Zitat antworten Zitat