FAQs & Knowledge Base

Welcome to our Knowledge Base. Search or browse through the topics below to find answers to your questions.

Categories: ShellBrowser Delphi Components | Show all categories

An ItemIdList is a type derived from the PIDL that is used by the Windows Shell. It fulfills the same functions as a file system path, but is also available for elements that do not have a file system path, such as virtual elements (like e.g. the "This PC" folder) or files that reside on an attached mobile phone.

You can easily create ItemIdLists from a file system path using the respective constructors.

Getting the path from an ItemIdList can be done using the "Path" or "DisplayPath" properties of an ItemIdList.

Also, whenenver a ShellBrowser component is associated with a path, most likely the ItemIdList can also be accessed via respective "FolderIdList" or "AbsoluteItemIdList" properties (e.g. for ListItems, TreeNodes, etc.).

For further documentation see:

TJamItemIdList (ShellBrowser Delphi components)

ItemIdList (ShellBrowser.NET and ShellBrowser.WPF Components)

ExplorerBrowser is a hybrid control consisting of both native VCL parts (e.g. the BreadCrumbBar) and native Win32 COM controls (especially the naigation tree and shell view).

Unfortunately VCL theming will only affect the native VCL parts, so this is a known issue that is very difficult to overcome as we have no influence how the system control is rendered.

One option is to turn VCL styling off for those forms. The other option is to build an own ExplorerBrowser by connecting a TJamShellTree, TJamShellList and TJamSehllBreadCrunbar using a TJamShellLink.

No actually it's not, since zip archives can be enumerated as well - the filter will be applied to the contents of the zip file.

If you want to change this, you can either:

  • Set the "FileSystemOnly" property of the ShellList to true
  • Implement the "OnAddItem" event and exclude zip files:

procedure TMainForm.ShellListAddItem(Item: TJamShellListItem;
  var CanAdd: Boolean);
begin
  if (Item.IsFolder and Item.AbsoluteItemIdList.HasAttributes(SFGAO_STREAM)) then
    CanAdd := false;
end;

You can add the ftp server as "network address" via the context menu of "This PC" (e.g. in Windows Explorer). This will include it as folder and ShellBrowser components will be able to use it the same way as Windows Explorer.

You need to synchronize the TJamShellSearchEdit component (or the TJamShellBreadCrumbbar containing the search pane) with a TJamShellList or an ExplorerBrowser control using a TJamShellLink. This will present the results of the search in the linked control.

If you have restricted the folders accessible for your application via the TJamShellLink.OnNavigating event, be sure to allow the SearchFolder to be opened:

procedure TForm1.JamShellLink1Navigating(Sender: TObject;
  const pFolder: IItemIdList; var pCancel: Boolean);
begin
  pCancel := not (TJamItemIdList.Create(AllowedPathBranch).IsParentOf(pFolder, true)) and not (IsSearchFolderPath(pFolder.DisplayPath));
end;

The searchfolder is a special folder that holds the temporary search result.