I'm trying to do now the same in tmylabel,ie, a property called myedit that you can select and object of tmyedit. But when it add umylabel unit lazarus sais that there is a circular reference beteen umyedit an umylabel, and it does not compile.
In that case the cross-reference really must be in the interface part. The only solution is to copy the components into one unit.
LCL has the same problem with many components. The code is divided into smaller files by using include files for the implementation part.
Lazarus IDE fully understands and supports include files.
About the original problem:
The best way to know how a certain component works, is to look at its source code. This is open source after all.
Just Ctrl-Click TShelLlistView or TShellTreeView and you are taken to its sources. Maybe you did just that, I don't know.
Juha