I started playing with VirtualTreeView and it seems from all the web info and documents that VirtualTreeView manages the memory of the user provided data (records if any). One does not have to New() and Dispose() any user data. One only has to tell VirtualTreeView the size of userdata and assign its field values after calling GetNodeData.
What if I wanted to manage that? Can it be done? Can I create the userdata as I want it and add it to my own lists and only provide a pointer of each record to VirtualTreeView without it interfering?