Knowledgebase

status_loader

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;

Using the TJamShellList you can add custom columns to add custom content.

Please check the project "CustomColumns" in the examples subfolder of the installation directory for more information.

The issue with selecting the element by typing is, that it will only work for elements that have a caption. For performance reasons in the ShellList, loading the caption only occurs when the item is scrolled into view.

However you can force loading the caption sooner by implementing the "OnAddItem" event:

procedure TMainForm.ShellListAddItem(Item: TJamShellListItem;  
var CanAdd: Boolean);
begin  
  Item.Caption := Item.Caption;
end;

In this case the Item.Caption will be assigned when the item is added, so that the incremental search will subsequently work.

Another option to find an item manually, is to use the features that our controls inherited from the TListView control:

var Item := ShellList.FindCaption(0, 'notepad.exe', False, False);
if Assigned(Item) then 
  Item.MakeVisible(False);

If you want to slelect the item, use code like this:

ShellList.SelectedFiles.Add('notepad.exe');

Please contact the support at shellbrowser@jam-software.com.

It would be most helpful if you could provide a callstack so that we know which function is causing the delay.

From within the RAD Studio debugger, please take the following actions:

When the application freezes, click Run > Program Pause in RAD Studio and take a screenshot of the call stack of the main thread (RAD Studio > View > Debug Window > Call Stack).

If the call stack window is empty, please ensure that these options are set at "Project > Options > Delphi Compiler > Compiling":

Code Generation > Stack Frames: True

Debugging > Debug information: True

Debugging > Use debug DCUs: True

In case the call stack window is still empty, please do the following:

After clicking Program Pause, please open View > Debug Windows > Threads, double click each thread, which hopefully shows the call stack of each thread in the Call Stack window. Please search the main thread that way, which contains Application.Run in the call stack, and send us a screenshot of this threads call stack.

You can also use a tool like MadExcept and use the "MadTraceProcess32" or "MadTraceProcess64" tool to inspect the state and receive call stacks of the running threads.

This seems to be configuration issue with the 64-bit Outlook PreviewHandler.

Check the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID\{53BEDF0B-4E5B-4183-8DC9-B844344FA104}

The AppID key should contain

AppID = {6d2b5079-2f0b-48dd-ab7f-97cec514d30b}

You can implement the OnNavigating event (ShellBrowser Delphi Components) or NavigationPending event (ShellBrowser .NET or WPF) respectively. Using the event handler's parameters you can check the path and stop the navigation.

Indeed, by default additional space is added between root nodes. While it is unfortunately technically not possible to reduce the extra space, you can remove it, using the "SingleSpacedRoots" property. If set to true, all extra space is removed.

For specific documentation on components, check the API help. It contains descriptions on all classes, methods, and properties and is accessible either online or in the installation directory of ShellBrowser.

All entries (Page 3 of 10)

Need further help getting started?

You did not find what you were looking for? Please contact us so we can provide an answer to your question.

Contact Form