Req: Help using TreeView and a Stream

How can I save a treeview along with all of its properties in a
streaming blob field in a database?

Whenever I use the SaveToStream function of the treeview component, it
just saves the text of the tree.  I need the Data item, and the image
index of the tree saved as well.

The only other way I know presently of doing this is to creat a
recursive function that calls itself and rebuilds the tree from
individual records.  Not only is this time consuming, their is also no
way of refering the correct child nodes in the tree to their proper
parent node.

Visual Basic would alow the use of a "key" to access nodes in
combination with index numbers.  Is there a way to perform a similar
operation with delphi's control?