Page 1 of 1
Forum

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!



Share:
Notifications
Clear all

Lazarus Pascal - How to add properties or extra data to TTreenode? (used in TTreeview)

1 Posts
1 Users
0 Likes
108 Views
 Hans
(@hans)
Famed Member Admin
Joined: 9 years ago
Posts: 2236
Topic starter  

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.


ReplyQuote
Share: