Hallo und herzlich Willkommen in unserer Wissensdatenbank.
Unsere Fachexperten liefern hier Antworten auf die häufigsten Fragen unserer Kunden.
Beginnen Sie Ihre Informationssuche hier, um schnell und einfach auch Ihre Antwort zu finden.
Geben Sie bitte einen Suchbegriff ein oder wählen Sie eine der obenstehenden Kategorien aus.

Knowledge Base ShellBrowser Delphi Components


Um die Suchfunktion nutzen zu können benötigen Sie JavaScript.

Die folgenden Inhalte sind leider nicht auf Deutsch verfügbar.

Alle Einträge (Seite 1 / 5)
In my application I want to restrict the access to only some folders or a single branch of the file system. How can achieve this?

There are several measures you can take, depending on the components you are using:

In the TJamShellTree, you can set the root nodes via the MultipleRoots and RootedAt properties. RootedAt is also available for the BreadCrumbBar.

To avoid, that a user manually opens a folder you have different options of interception:

Does the ShellBrowser Delphi Edition contain a control to preview files?

Yes, it contains the TJamFilePreview control.

What is the difference between the TJamShellList and TJamExplorerBrowser?

When configuring TJamExplorerBrowser to only include the FolderView, it looks much like the TJamShellList.

TJamExplorerBrowser wraps a Windows system component, and thus it will look exactly like Windows File Explorer.The TJamShellList on the other hand derives a VCL ListView control, that tries to resemble Windows File Explorer as much as possible. While it misses some aspects of this, it can on the other hand be customized more widely visually and functionally.

How can I prevent a file from being opened in the TJamShellList?

Assign the OnKeyDown event with this content:
if Key = vk_Return then Key := 0;

To prevent the automatic handling of a double click, simply add an OnDblClick event handler.

Or, you can use the OnBeforeShellCommand event and use the AllowExecute parameter to prevent the execution. The Command parameter when opening a file will be "default" or "open".

I get a memory leak report that an instance of TComboBoxExEnumerator is not freed. Can this be avoided?

This problem applies to Windows XP only and is fixed in Windows Vista and later. It is documented in MSDN. With the current implementation of TComboBoxEx in the VCL this unfortunately cannot be avoided.

How can I show XYZ as a thumbnail?

The thumbnails are generated through the same Windows API function that the Windows Explorer uses, and so the ShellBrowser components will show similar thumbnails like the Windows Explorer.

To provide thumbnails for a certain file format that Windows does not support out of the box, it is best to register a thumbnail provider in the system.

Another option is to use the OnThumbnailUpdated event of the TJamShellList control, which allows you to change the generated thumbnail.

allows you to set one application-wide thumbnail provider that is called if the system does not supply one.

How can I select the columns that are (initially) displayed in the TJamShellList?

Each Windows Shell extension may define which columns will be displayed for its view.To add or remove specific columns, use the OnCreateColumns event in combination with SetColumnVisibility. 

uses ShellBrowser;

procedure TForm1.JamShellListCreateColumns(Sender: TObject);
   with JamShellList do
       SetColumnVisibility(TShellColumns.Size, False);
       SetColumnVisibility(TShellColumns.Author, True);

How can I order ShellBrowser Delphi Edition and how will it be delivered?

You may order online at www.jam-software.com

For further questions, please have a look at the Shop FAQ:

Which operating systems are supported?

All current versions of Windows are supported. See here for further information.


Which IDEs are supported?

ShellBrowser is compatible with all current RAD Studio versions. See here for further information.

How can I forbid entering a specific folder in a JamShellTree and JamShellList?

You can use the TJamShellTree.OnChanging event like this:
uses ShellBrowser;
    forbiddenPath: String = 'C:\Windows';
procedure TMainForm.ShellTreeChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
    shellNode: TJamShellTreeNode;
    shellNode := node as TJamShellTreeNode;
    if (ShellBrowser.SamePath(shellNode.FullPath, forbiddenPath)) then
        AllowChange := false;

To achieve the same result in the JamShellList, use the TJamShellList.PathChanged event:
uses ShellBrowser;

    lastPath: String;
    forbiddenPath: String = 'C:\Windows';

procedure TMainForm.ShellListPathChanged(Sender: TObject);
    if (ShellBrowser.SamePath(ShellList.Path, forbiddenPath)) then
        ShellList.Path := lastPath
        lastPath := ShellList.Path;

You can also use the OnBeforeShellCommand event and use the AllowExecute parameter to prevent the execution. The Command parameter when opening a folder might be "default" or "open".

When I move to certain folders (e.g C:\Windows\assembly) Delphi displays an error message like: "Could not get IShellFolder2 interface for current folder". How can I prevent this?

This message is triggered by a handled excpetion. In the default configuration, RAD Studio stops on all exceptions, if handled or not. The end-user will not see errors like this for handled excpetions. Using exceptions for error handling is common in modern programming languages.
We recommend turning off this option:
"Tools > Options > Debugger Options > Language Exceptions > Notify on Language Exceptions".