TIDGDBTreeView - the component inherited from TTreeView.
You can use it both for filling data from the hierarchical table and for filling data from the master/detail tables. It depends on the query, composed by you. You can use as simple key so composite key in your query.
You can easily using property OnEdited to create edited TreeView.
It allows:
-to fill treeview from TQuery or TStoredProc( for ORACLE cursor variables )
-to keep data from fields of table in memory for each node and get it in any time.
-to fill treeview by all data from table or to fill treeview by data from table as required ( when node is expended ).
-to search the node for specified data which you keep for node.
The help and more info you can find on the homepage.