Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!
Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.
Please note that switching to another language when reading a post will not bring you to the same post, in Dutch, as there is no translation for that post!
[Solved] Lazarus Pascal - How to add properties or extra data to TTreenode? (used in TTreeview)
Delphi, Lazarus, Free Pascal
(@hans)
Famed Member Admin
Joined: 12 years ago
Posts: 2859
Topic starter
August 6, 2022 3:07 AM
So when having a list in a TreeView, how do I add more properties to each node?
I found it surprisingly easy to create my own TreeNode variant ...
TMyTreeNode = class(TTreeNode)
private
fANewProperty: String;
public
property ANewProperty: String read fANewProperty write fANewProperty;
end;
No to make sure this new type is being used when adding a new node/row to the Treeview, we need to make sure the onCreateNodeClass sets our new type:
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
Now when accessing the data, you will need to cast the proper type though:
TMyTreeNode(TreeView1.Selected).ANewProperty := 'some text';
Note that you not have to limit this to a simpel string - I've used this with large records as well and it works great.