Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#12

AW: TVirtualStringTree: nachträglich Objekt am Knoten tauschen

  Alt 25. Sep 2010, 21:10
Normalerweise überlässt man dem Tree das Speichermanagement. Wenn du allerdings Objekte daran hängen willst, solltest du sowas machen:
Delphi-Quellcode:
type
  TNodeData = record
    Data: TObject
  end;
  PNodeData = ^TNodeData;
Dann setzt du die MyTree.NodeDataSize := SizeOf(TNodeData) und schon kannst du mit GetNodeData lustig Objekte austauschen.
Schreib dir dazu am besten ne Methode, z.B.:
Delphi-Quellcode:
function GetObjectOfNode(Node: PVirtualNode; Tree: TBaseVirtualTree): TObject
var
  LNodeData: PNodeData;
begin
  LNodeData := Tree.GetNodeData(LNodeData);
  if Assigned(LNodeData) then
    Result := LNodeData.Data
  else
    Result := nil;
end;

procedure SetObjectOfNode(Node: PVirtualNode; Tree: TBaseVirtualTree; Obj: TObject);
var
  LNodeData: PNodeData;
begin
  LNodeData := Tree.GetNodeData(LNodeData);
  if Assigned(LNodeData) then
    LNodeData.Data := Obj;
end;
Code ist ohne Delphi bzw VST geschrieben, also nicht 100% compile Garantie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat