ERCC (http://eriedel.info)

FILEDLG.DLL: Beschreibung


Übersicht

FILEDLG (FILEDLG.DLL) ist ein COM-Modul von ERCC, das den Standarddialog zur Dateiauswahl von Windows (COMDLG32.DLL) als Objekt für OLE/COM-Clients wie bspw. Visual Basic Script (VBS) verfügbar macht. Es kann bei Bedarf alternativ oder ergänzend zu Microsofts COM-Modul COMDLG32.OCX eingesetzt werden. Eine mögliche Verwendung zeigt der VBS-Code zum Dateienvergleich.
Der folgende Auszug gibt die allerwichtigsten Anweisungen wieder.

Set dlg = CreateObject("FileDlg.FileSelection")
dlg.DialogTitle = "Bitte eine Datei auswählen"
dlg.ShowDialog
f = dlg.FileName

FILEDLG ist eine reine Unicode-Version für NT-basiertes Windows ab Windows 2000. FILEDLG verwendet die API-Funktion GetOpenFileName in grundsätzlich ähnlicher Weise wie COMDLG32.OCX. Der Funktionsumfang ist demgegenüber allerdings deutlich vereinfacht und auf die Auswahl einer vorhandenen Datei ausgerichtet.

Methoden und Eigenschaften

Die für den vorgesehenen Anwendungszweck nicht benötigten Objekteigenschaften sind weggelassen, d.h. durch interne Vorgaben ersetzt worden. In dieser Weise sind die folgenden Parameter und Flags vordefiniert:

Filter = *.*
Flags = OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY + OFN_NOCHANGEDIR

Die Stringlängen (nMaxFile etc.) sind sämtlich auf 256 Zeichen festgelegt.

FILEDLG.FileSelection verfügt über die folgenden Eigenschaften, die denen von COMDLG32.OCX entsprechen:

DialogTitle spezifischer Fenstertext (Parameter)
InitDir voreingestelltes Verzeichnis (Parameter)
FileName vollständiger Dateiname (Rückgabewert)
FileTitle bloßer Dateiname ohne Pfad (Rückgabewert)

Der Funktionsaufruf zur Anzeige des Dialogs lautet abweichend:

ShowDialog Methode zur Anzeige des Windows-Dialogs

FILEDLG.FileSelection verfügt über folgende zusätzliche Eigenschaften:

FilePath bloßer Dateipfad (Rückgabewert)
Error Fehlercode (Rückgabewert)

Der Dateipfad wird intern aus dem Dateinamen und dem Rückgabewert nFileOffset der API-Funktion erzeugt. Ein abschließender Backslash ist enthalten. Der Fehlercode wird (bei »unwahrem« Funktionswert von GetOpenFileName) über die API-Funktion CommDlgExtendedError ermittelt. Error erhält somit ggfs. den entsprechenden DWORD-Wert.
Der Abbruch der Dateiauswahl durch den Benutzer führt nicht zu einem Fehlercode. (In FILEDLG.DLL wird auch kein Error-Event erzeugt.)

Verzeichnisauswahl

FILEDLG enthält außerdem noch den Windows-Dialog zur Verzeichnisauswahl (Shell-API, Funktion SHBrowseForFolder u.a.). Dieser Dialog ist zwar standardmäßig als COM-Objekt vorhanden (SHELL32.DLL), aber FILEDLG vereinfacht die Benutzung in Visual Basic Script. Zudem bot es sich auch aus praktischen Gründen an, beide Auswahldialoge zusammenzufassen.
Einfaches Anwendungsbeispiel (VBS):

Set dlg = CreateObject("FileDlg.PathSelection")
dlg.ShowDialog
f = dlg.FolderName

FILEDLG.PathSelection verfügt über folgende Eigenschaften:

DialogText zusätzlicher Text, max. 1024 Zeichen (Parameter)
InitDir voreingestelltes Verzeichnis (Parameter)
FolderName Name des ausgewählten Verzeichnisses (Rückgabewert)
Error Fehlercode (Rückgabewert)

Die Anwendung ist intern auf Objekte (Pfade) des Dateisystems begrenzt. Wird InitDir nicht (oder nicht funktionskompatibel) definiert, so ist das Root-Objekt des Dateisystems voreingestellt (also »Arbeitsplatz« oder »Mein Computer« o.ä.).
Error erhält zwei mögliche Werte: 1 wenn die Shell-Funktion kein Ergebnis liefert (typischerweise bei Abbruch durch den Benutzer), 2 wenn die Verzeichnisauswahl intern nicht ausgewertet werden kann (theoretischer Fall).


Lizenz/Hinweise

FILEDLG.DLL wird als Freeware und »so wie es ist« zur Verfügung gestellt. Die Überlassung erfolgt also unentgeltlich und für beliebige Verwendungszwecke, aber auch ohne jede Gewährleistung oder Haftung. Verbesserungsvorschläge sind natürlich willkommen.


Download

Die Datei  filedlg.zip enthält FILEDLG.DLL zusammen mit einer beschreibenden Textdatei.

Zur Installation wird FILEDLG.DLL in einem prinzipiell beliebigen Verzeichnis gespeichert und einmalig als COM-Modul registriert.

FILEDLG.DLL kann auch mit dem Setup-Programm zum oben erwähnten Windows-Utility  Dateien vergleichen installiert werden.
 

http://eriedel.info/files/fdlg/filedlg.html


ERCC (http://eriedel.info)  03/2011   © Erhard Riedel Computer Consulting (ERCC)

 

Link zur ERCC-Hauptseite   Link zur Info-Übersicht