TGUID in TTreeNode.Data?

I want to use the Data property (pointer) for TTreeNode by inserting a TGUID into it. Has anyone understood how to achieve this?

Here, part of the code can help you guys understand what I'm trying to do.

if Assigned(trNode) then
begin
  trNode := tvMain.Items.Add(trNode, dmMain.qryTreeView.FieldByName('SomeColumn').Text);
  gID := StringToGUID(dmMain.qryTreeView.FieldByName('ID').Text);
  trNode.Data := //how do I do this?
+4
source share
2 answers

TGUID is a record, so distribute it dynamically and save its address in node data, something like

var gID: PGUID;
begin
  New(gID);
  gID^ := StringToGUID(...);
  trNode.Data := gID;

Remembre will free memory with Dispose when the node is deleted, otherwise you will have a memory leak!

+4
source

- TTreeNode TGUID, TTreeView.OnCreateNodeClass, TreeView . , RTL guid ( ). , , , TTreeNode . :

type
  TMyTreeNode = class(TTreeNode)
  public
    Guid: TGuid;
  end;

procedure TMyForm.tvMainCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
begin
  NodeClass := TMyTreeNode;
end;

trNode := tvMain.Items.Add(...);
TMyTreeNode(trNode).Guid := StringToGUID(...);
+6

All Articles