I have an application using TShellTreeView with otFolders and otNonFolders set for ObjectTypes. The actual shell tree is, by design, not visible, and is only presented to the user when actually needed.
When the form hosting the shelltreeview is created, the TShellTreeView will read the shell structure and populate the tree. Note that the component is not visible by default - therefore not "needed" at form creation. The process of enumerating the shell as done by the component takes some time (a few seconds) and it appears as is the application has frozen.
Read the full article to learn how to Fake a Non Existing Active Property for a TShellTreeView