marsheng , there are two sides to this (important you see the difference) -
1. Making the connection between the local compter and the file server, in Unix speak, 'mounting'.
2. Showing files on that connected file server in a GUI component.
The first one, as far as I know is not handled by any component in in LCL. You could code it up easily enough using FPC's ability to execute command lines.
The second one ? Well, as I demonstrated to my embarrassment above, LCL components such as TOpenDialog do show shares that have been mounted. I have not used ShellTreeView. Have you tried using ShellTreeView after you have mounted a share ? If it does not work, then I guess it could be treated as a bug but its probably a case of no one has added the necessary code yet. I am sure it could be done.
I'd be looking in the code of TOpenDialog to see how it extends its reach to those shares if I was you.
Alternatively, easier, you could use, directly, TOpenDialog and then FindFirst/FindNext and put the results into a eg TListVist, effectively making your own ShellTreeView. Thats how I work.
Getting back to Point One, how you would programmatically mount a share will depend on what sort of share it is, SMB, NFS, USB drive etc ? I'd guess SMB, so you will end up calling a command line involving the smbclient program. If you can assume pre knowledge of what the server and the share are called, thats pretty easy. If you need to need to search for a likely network share, somewhat harder.
If you can instruct the end user to mount the share before using your app, its a "no issue".
Davo
EDIT: OK, just had a brief play with TShellTreeView and TShellListView. As you indicated, TShellTreeView does not show you mounted shares as "shares", but you can browse to eg /run/user/1000/gvfs/mysambashare and so view the files in it in the TShellListView. I suggest if you require your users to do that, they will hate you !