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

You can use the OnBeforeShellCommand event and check for both the affected files and the command and replace the default behavior by your own.

The ShellTree does indeed restrict this operation to avoid long running operations, so you have to add this functionality writing a custom function, that iterates and expands all nodes.

You can read out file attributes or shell properties using the ItemIdList. You can retreive values either as variant or converted as display value.

For ShellBrowser Delphi components please check documentation here:

IItemIdList.GetPropertyValue

IItemIdList.GetShellInformation

For ShellBrowser.NET Components:

ItemIdList.GetPropertyVariantValue

ItemIdList.GetPropertyDisplayValue

ShellBrowser uses PreviewHandlers installed in the system for the preview. Unfortunately not all of them are capable of handling all kinds of high dpi scenarios. This is not an issue of ShellBrowser components.

If you encounter problems like e.g. the display of a pdf file not filling up the whole FilePreview client area or other display problems, please test if the problem has to do with high dpi settings. Scale your primary monitor to 100% and re-login (even if this is not required in newer Windows 10 versions, it still makes a difference).  

Please also check if the same use case works in Windows Explorer.

ShellBrowser per default uses an alpha-numerical comparison method on the custom column texts of the items, that unfortunately doesn't respect date values.

You can however custom sort the affected columns by implementing the "OnCompare" event, e.g.:

procedure TMainForm.JamShellList1Compare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var lDate1, ldate2: TDateTime;
begin
  if JamShellList1.Columns[JamShellList1.SortColumn].Caption = 'Custom date column' then begin
    lDate1 := StrToDateTime(Item1.SubItems[JamShellList1.Columns[JamShellList1.SortColumn].SubItemIndex]);
    lDate2 := StrToDateTime(Item2.SubItems[JamShellList1.Columns[JamShellList1.SortColumn].SubItemIndex]);
    Compare := CompareDateTime(lDate1, lDate2);
  end;
end;