What is New in ShellBrowser Delphi Components?

Version 12.1

Features and Improvements

  • Support for RAD Studio 12 Yukon has been added.
  • TJamFilePreview: Using the new “LoadFromStream” method, you can now load a file preview directly from a TStream. The file extension that must be passed as parameter determines the PreviewHandler that will be used for the displaying the file. As most PreviewHandlers work with file paths internally, the stream is written to a temporary file, which is then displayed.
  • Context Menu: The modern “Share” command, that was introduced with Windows 10 is now working in ShellBrowser’s context menu. This affects all components that automatically provide an item’s context menu, like the TJamShellList, TJamShellTree, TJamFileList. Unfortunately though, your project must be built using RAD Studio 10.3 or higher for the functionality to work.
  • Context Menu: Opening the parent folder is now reported as “saGoUp”.
  • TJamShellTree: The ShellTree will now automatically add new root nodes if the folder that is passed via a TJamShellLink is not available within the current nodes. This only applies, if the ShellTree supports more than one root node (i.e. the "MultipleRoots" property is not set to mrSingleRoot). For example: if the "Network" node is not included in the ShellTree, and the user tries navigating a network share in a linked BreadCrumbBar, the "Network" node will automatically be added to the ShellTree.
  • The “JamExplorer” example project now illustrates supporting a dark and a light mode in an application.
  • Some refactorings to the code base have been applied and new units were introduced. We’ve taken care not to introduce major breaking changes, but if you run into a case where a type is not found in the unit where it was before, please try adding “Jam.Shell.Controls.DriveList” to the “uses” clause in cases where a TJamDriveList is involved. The base listview related classes and some dependent types have been moved to new unit “Jam.Shell.Controls.BaseShellListView”, so you might need to add this manually, too, in cases where it doesn’t happen automatically.

Please, don’t hesitate to contact the ShellBrowser support, if you experience other compatibility issues.


  • A fix concerning the enumeration of Special Folder "Desktop" that was introduced in v12 unfortunately has a major side-effect: the fix causes app freezes if executed in a dll. This has been fixed.
  • Context Menu: The “OnBeforeCommand” now passes “saUnknown” as value for a command, if the context menu, that was selected by the user, doesn’t provide a verb. In the past, those menu items were reported as “saDefault”, which is normally the command that is executed when double-clicking an item.

The work on this unfortunately introduced a breaking change: If you want to trigger the default command in code, you could in former versions pass an empty string to e.g. “TJamShellList.InvokeCommandOnSelected”. Please explicitly pass “saDefault” for this.

  • TJamShellList: In rename operations it is now possible to remove the extension of a file, even if Windows Explorer is configured to hide extensions. In prior versions, trying to do so didn’t have any effect.
  • TJamShellList: In recent versions, it was not possible to rename shortcuts (elements with extension “.lnk”) correctly. Depending on the setting, whether the file extensions were displayed in the controls, the “.lnk” extension was dropped during the rename operation. This has been fixed.
  • TJamShellList: The “OnBeforeCommand” event is now also called for a rename operation that has been started via 2 mouse-clicks.
  • TJamShellList: A potential AccessViolation that might have happened executing commands such as copying via "Ctrl-C" is now prevented.
  • TJamShellList: Even if IconsBasedOnFileExtension is set, shortcuts will now display the real icon of the file instead of a generic file icon. The icon is fetched asynchronously.
  • TJamExplorerBrowser: Using the setting “FileSystemOnly”, zip files are now not hidden from the view anymore. It is just not possible to view their content in the ExplorerBrowser control.
  • TJamDriveList: Updating the list with changing drives and devices has been improved. In prior versions, attaching or detaching USB devices sometimes was not reflected in the DriveList in time.
  • TDetailsPane: A problem where the property display was cut off on high dpi has been fixed.