Create Custom Dialogs with ShellBrowser

Bessere Usability dank unserer ShellBrowser Komponenten

Native Funktionalität für Previews und Thumbnails in Ihrer Software: ShellBrowser Delphi

Developer Components Delphi
11.06.2021

Die richtige Datei finden ist nervig

Sind wir doch mal ehrlich: Im Dateiexplorer oder auf dem Desktop nach Dateien zu suchen kann sehr nervtötend sein. Vor allem dann, wenn man nach einem ganz bestimmten Bild sucht – sagen wir etwa von Ihrem letzten Italienurlaub. Zum Glück gibt’s dafür Previews für Dateiinhalte!

Nutzer sind oftmals schon beschäftigt genug. Daher erwarten sie einfach von Ihrem Programm, dass es eine kleine Preview vom Inhalt einer selektierten Datei anzeigt: Stellen Sie sich zum Beispiel vor, dass Ihre Nutzer durch ein großes Verzeichnis scrollen und nach einer bestimmten Excel-Datei suchen. Sie wissen zwar genau was drin steht, können sich an den Dateinamen aber nur noch so ungefähr erinnern. Möchten Sie hierbei von Ihren Nutzern erwarten, dass sie jedes Excel-Dokument einzeln öffnen? Nein, nicht wirklich. Sie möchten Ihren Nutzern den Komfort bieten, eine kleine Voransicht – hier Preview genannt – von den Tabelleninhalten in dem kleinen Fenster auf der rechten Seite betrachten zu können. Klingt das nicht besser?

Solche Komfort-Features sind ein absolutes Must-Have für professionelle Software. Aber einfacher gesagt als getan: Ein eigenes Preview-Feature zu entwickeln ist sehr zeit- und kostenintensiv. Gerade bei kleineren Projekten würde sich sowas einfach nicht rechnen. Eine Alternative wäre es, bereits bestehende Windows Funktionalitäten wiederzuverwenden. Also gibt es eine Möglichkeit, diese systemeigenen Features zugänglich zu machen? Hier kommt unser ShellBrowser ins Spiel: Wir bieten Ihnen Entwicklerkomponenten, mit denen Sie ganz einfach Thumbnails und Previews erstellen können, indem Sie auf native Windows Funktionalitäten zugreifen. Wie das geht? Schauen wir es uns an!

 

Thumbnails – Was waren die noch gleich?

Zuerst sollten wir zum Verständnis den Unterschied zwischen einem Thumbnail und einem Icon klären. Ein Icon ist ein Piktogramm – oder einfacherer gesagt: ein kleines Bild – das eine Datei in Ihrem Dateisystem oder auf Ihrem Desktop repräsentiert. In Windows haben die meisten Dateitypen ihre eigenen Icons entlang der unterschiedlichen Dateiendungen. Lassen Sie uns ein Beispiel zeigen:

Ein Thumbnail hingegen repräsentiert eine Datei nicht nach ihrem Dateityp, sondern nach ihrem individuellen Content. Das kennt man beispielsweise schon seit einigen Jahren von Bilddateien, die durch ihren Bildinhalt im System repräsentiert werden. Aber es gibt auch schon länger einen Trend dahingehend, Office-Dokumente oder PDF-Dateien ebenfalls in Form eines Thumbnails abzubilden. Hier sind ein paar Beispiele:

Wie kann ShellBrowser hierbei helfen?

Mit den ShellBrowser Delphi Components bieten wir eine Vielzahl an Komponenten, die unter anderem die native „ThumbnailProvider“ Funktionalität von Windows verwenden. In RAD Studio eingebettet ermöglicht ShellBrowser ganz einfach Thumbnails für Bilddateien. Aber nicht nur das: Abhängig von individuellen Einstellungen in den Dateien selbst können auch Thumbnails für MS-Office Dokumente, PDFs und viele weitere Dateiformate angezeigt werden. Unsere ShellListView erlaubt das einfache Ein- und Ausschalten der Thumbnail-Ansicht:

Verwenden Sie zudem TJamThumbnailImage, wenn Sie nur für eine Datei Thumbnails anzeigen lassen wollen.

Zusätzlich unterstützen wir mit ShellBrowser die Stabilität Ihrer Anwendung, da Thumbnails asynchron geladen werden. Somit bleibt die Responsivität und Usability der Bedienung jederzeit erhalten, selbst wenn das Laden etwas länger dauert – das kann vor allem in größeren Verzeichnissen schon mal passieren.

 

Thumbnails, sogar wenn das System selbst keine bereitstellt

Obwohl Thumbnails ein absoluter Usability-Standard sind, hält selbst der Windows Explorer für einige Dateiformarte keine Thumbnails bereit – das trifft beispielweise auf den Dateitypen .WMF zu. Für ShellBrowser ist dies hingegen kein Problem: Mit unserem ThumbnailNotAvailable Event-Handler können Sie ein eigenes Thumbnail auswählen, anstatt wieder auf Icons zurückzufallen:

Das haben wir mit folgendem Codeschnipsel gemacht:

 

procedure TMainForm.ThumbnailUnavailable(const Path: string; Width, Height: Integer; out Bitmap: TBitmap);
var lPicture: TPicture;
begin
  if LowerCase(ExtractFileExt(Path)) = '.wmf' then begin
    lPicture := TPicture.Create;
    try
      lPicture.LoadFromFile(Path);
      Bitmap := TBitmap.Create;
      Bitmap.PixelFormat := pf24bit;
      Bitmap.Width := Width;
      Bitmap.Height := Height;
      Bitmap.Canvas.Lock;
      Bitmap.Canvas.StretchDraw(Rect(0,0,Width,Height), lPicture.Graphic);
      Bitmap.Canvas.Unlock;
    finally
      lPicture.Free;
    end;
  end
  else if IsDrive(Path) then begin
    Bitmap := TJamThumbnailExtractor.GetThumbnailBitmap(TJamItemIdList.Create(Path),  Width, Height, true);
  end;
end;

 

Lernen Sie mehr dazu in der ShellBrowser Online-Hilfe.

 

 

Previews – die machen Nutzer richtig froh!

Während Thumbnails eine etablierte Praktik sind, um Nutzern bereits vor dem Öffnen einen Eindruck zu vermitteln wie der Dateiinhalt aussieht, gehen Previews noch ein Stück weiter:

Previews erlauben dem Nutzer, mit dem Dateiinhalt zu interagieren, ohne das entsprechende Programm im Vollbildmodus zu öffnen. Somit können etwa PDF-Dateien durchblättert und herangezoomt und Excel-Tabellen können zeilengenau angeschaut werden. Mit anderen Worten: Previews sparen bei Ihren Nutzern Zeit und vor allem Nerven.

ShellBrowser benutzt die nativen PreviewHandler, die bereits im Windows-System integriert sind. Auf die Weise erkennt der ShellBrowser sofort, ob die selektierte Datei ein Preview unterstützt – und wenn nicht, dann wird automatisch ein Thumbnail anstelle verwendet. Technisch lässt sich das so begründen, dass innerhalb des TJamFilePreview-Komponenten das TJamThumbnailImage integriert ist. ShellBrowser erkennt zudem automatisch Textdateien und nutzt den PreviewHandler selbst wenn keine Preview für den jeweiligen Dateitypen registriert ist.

 

Noch ein paar Worte zu den Einstellungsmöglichkeiten Ihrer Preview

Für ein weiteres Finetuning der Funktionsweise von TJamFilePreview können Sie das  “OnLoadPreview”-Event verwenden. Hier können Sie entscheiden, ob das Vorschaubild dem installierten PreviewHandler vorgezogen werden soll. Sie können auch einen anderen PreviewHandler wählen als den, der im Windows-System für den jeweiligen Dateityp registriert ist. Zusätzlich können Sie einen existierenden PreviewHandlder verwenden, um auch jene Dateien abzudecken, für die normalerweise keine Previews bereitgestellt werden.

Die TDetailsPane”-Komponente enthalt die TJamFilePreview und zusätzlich die gängigsten Dateieigenschaften – somit erhalten Ihre Nutzer direkt einen guten Überblick über die Datei, die Sie gerade selektiert haben. Alle hier präsentierten Einstellungsmöglichkeiten arbeiten mit anderen ShellBrowser-Einstellungen flüssig zusammen. Durch Zuweisung eines TJamShellLinks, wird die Komponente automatisch mit der Selektion von etwa einer TJamShellList synchronisiert.

Derzeit muss noch erwähnt werden, dass TJamFilePreview und TJamThumbnailImage um native Windows-Funktionalitäten herumgebaut sind: Diese nutzen die Shell Extensions wie ThumbnailProviders and PreviewHandlers, die im System installiert sind. Das bedeutet im Umkehrschluss, dass nicht alle Bestandteile der Preview beliebig angepasst werden können.

Suchen Sie nach weiteren Informationen zu den nativen Windows-Funktionalitäten? Dann werfen Sie einen Blick in die technische Dokumentation zu Windows.

Dieser Artikel wurde zuerst auf dem Embarcadero-Blog veröffentlicht. Schauen Sie mal vorbei.

 

 

Möchten Sie immer auf dem neuesten Stand bleiben?

Hat Ihnen der Beitrag gefallen, haben Sie noch weitere Ideen oder Feedback für uns? Lassen Sie es uns über das Kontaktformular wissen, wir freuen uns auf den Austausch!

Blog author Sabine

Sabine

Developer Components