Mit dem Steuerelement FileChooser (gb.form) kann der Benutzer eine Datei oder eine Liste von Dateien im gleichen Verzeichnis auswählen.
Abbildung 6.9.5.1: Ausgewählte Dateien in einem FileChooser
Das Steuerelement FileChooser kann erzeugt werden:
Dim hFileChooser As FileChooser hFileChooser = New FileChooser ( Parent As Container ) As "EventName"
Hinweis
Achtung! Die Eigenschaft ShowDetailed ist bei Gambas-Versionen > 3.18.4 nicht mehr verfügbar. Um eine Anzeige im Datailed-Modus zu erhalten, ist für alle Versionen > 3.18.4 die eingebettete Klasse FileView zu verwenden (siehe Kapitel 6.9.4). Beispiel: FileChooser1.FileView = FileView.Detailed
Die Klasse FileChooser verfügt über folgende Eigenschaften:
Eigenschaft | Datentyp | Beschreibung |
---|---|---|
Bookmarks | Collection[ ] | Setzt oder gibt die Liste der privaten Lesezeichen zurück. Jede Bookmark-Collection muss einen Key „Path“ enthalten, der auf den Pfad des Lesezeichens zeigt. Optionale Keys sind „Name“ und „Icon“. Andere Key-Namen werden ignoriert. |
Dir | String | Gibt das aktuelle Verzeichnis zurück oder setzt das Verzeichnis |
DirView | DirView | Gibt das Steuerelement DirView zurück, das intern vom FileChooser genutzt wird. |
Extension | Container | Gibt den internen Container zurück, der zum Einfügen von Erweiterungen innerhalb des FileChooser-Controls verwendet werden kann. |
FileChooser | FileChooser | Gibt das Steuerelement FileChooser zurück, das intern vom FileChooser genutzt wird. |
Filter | String | Gibt die vom Steuer-Element verwendeten Filter zurück oder setzt sie, um nur bestimmte Dateitypen anzuzeigen. Die Filter werden in einer separaten ComboBox angezeigt. Automatisch wird der Filter-Eintrag 'Alle Dateien (*)' eingefügt. Die Filter-Eigenschaft erhält ein String-Array mit der folgenden Struktur: Der erste Filter. Die erste Filterbeschreibung. Der zweite Filter. Die zweite Filterbeschreibung. Und so weiter… . Ein Filterstring ist eine Liste von Dateimustern mit Platzhaltern, die durch ein Semikolon getrennt sind. Eine Filterbeschreibung kann ein beliebiger String sein. Der Filterstring wird automatisch an die Filterbeschreibung angehängt. |
FilterIndex | Integer | Liefert den Index oder setzt den Index des Filters, der vom FileChooser-Steuerelement verwendet wird. Der Index -1 wird für die Anzeige aller Dateien verwendet. |
Multi | Boolean | Gibt den Wahrheitswert zurück oder setzt ihn, ob der Benutzer nur eine oder mehrere Dateien auswählen kann. |
Root | String | Gibt das Root-Verzeichnis zurück oder setzt das Root-Verzeichnis. Wenn diese Eigenschaft nicht gesetzt wird, so wird automatisch das Home-Verzeichnis zum Root-Verzeichnis. |
SelectedPath | String | Gibt den Pfad für die ausgewählte Datei zurück. |
SelectedPaths | String | Gibt die Liste aller Pfade der ausgewählten Dateien zurück, wenn die Multi-Eigenschaft True ist. |
Value | Variant | Wenn die Multi-Eigenschaft False ist, dann ist diese Eigenschaft ein Synonym für die SelectedPath-Eigenschaft (Datentyp String). Wenn die Multi-Eigenschaft True ist, dann ist diese Eigenschaft ein Synonym für die SelectedPaths-Eigenschaft (Datentyp String-Array). |
ShowBookmark | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob das Lesezeichenfeld sichtbar ist oder nicht. |
ShowButton | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob die Standard-Button ('OK' and 'Cancel') sichtbar sind oder nicht. |
ShowDetailed | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob die Dateien in einer Detailansicht oder mit Symbolen angezeigt werden oder nicht. Für Versionen > 3.18.4 nicht mehr verfügbar - siehe Kommentar unter Hinweise. |
ShowFile | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob die Datei-TextBox sichtbar ist oder nicht. Sie ist standardmäßig sichtbar. |
ShowDirectory | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob Verzeichnisse in der FileChooser angezeigt werden oder nicht. |
ShowHidden | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob die versteckten Dateien oder Verzeichnisse angezeigt oder versteckt werden. |
ShowPreview | Boolean | Gibt den Wahrheitswert zurück oder setzt den Wahrheitswert, ob die Miniaturbilder angezeigt werden oder nicht. |
Tabelle 6.9.5.1.1 : Eigenschaften der Klasse FileChooser
Die Klasse FileChooser verfügt über diese ausgewählten Methoden:
Methode | Beschreibung |
---|---|
Delete( ) | Löscht das Steuerelement FileChooser. |
Reload( ) | Lädt den Inhalt der Ansicht neu, als ob Sie auf die Schaltfläche 'Aktualisieren' geklickt hätten. |
Tabelle 6.9.5.2.1 : Ausgewählte Methoden der Klasse FileChooser
Die Klasse FileChooser verfügt über diese ausgewählten Ereignisse:
Ereignis | Beschreibung |
---|---|
Activate( ) | Dieses Ereignis wird ausgelöst, wenn ein Benutzer auf eine Datei doppelt klickt oder wenn der Button 'OK' angeklickt wurde. |
Cancel( ) | Dieses Ereignis wird ausgelöst, wenn ein Benutzer auf den Button 'Cancel' klickte. Die Eigenschaften SelectedPath-Eigenschaft und die SelectedPaths-Eigenschaft sind leer. |
Tabelle 6.9.5.3.1 : Ausgewählte Ereignisse der Klasse FileChooser
Hinweise:
Projektweiten Zugriff auf den Pfad zu einer ausgewählten Datei mit FileChooser.Multi = False bekommen Sie, wenn Sie den Wert der Eigenschaft FileChooser.SelectedPath zum Beispiel in einer (Public-)Variablen sFilePath = FileChooser.SelectedPath speichern.
Abbildung 6.9.5.3.1: Anzeige Datei-Pfad der ausgewählten Datei im FileChooser
Alternativ können Sie auch die Zuweisung sFilePath = FileChooser.Value verwenden, weil der Wert dieser Eigenschaft vom gesetzten Modus abhängig ist und für FileChooser.Multi = False nur einen String liefert.
Zugriff auf die Datei-Pfade für alle im Modus FileChooser.Multi = True ausgewählten Dateien bekommen Sie, wenn Sie die Liste der ausgewählten Dateien – gespeichert in der Eigenschaft FileChooser.SelectedPaths – in einer (Public-)Array-Variablen wie aFilePaths = FileChooser.SelectedPaths speichern.
Sie können alternativ auch die Zuweisung aFilePaths = FileChooser.Value verwenden, weil der Wert dieser Eigenschaft vom gesetzten Modus abhängig ist und für FileChooser.Multi = True jedoch ein String-Array liefert:
Abbildung 6.9.5.3.2: Liste der ausgewählte Dateien in einem FileChooser
Mit der Eigenschaft FileChooser.Filter können Sie alle im Projekt benötigten Datei-Filter setzen und über die Eigenschaft FileChooser.FilterIndex zur Laufzeit sehr flexibel auf einzelne Filter-Gruppen umschalten:
FileChooser1.Filter = ["*.png;*.jp*;*.gif", "Picture files", "*.txt;*.xml;*.conf", "Text files"] FileChooser1.FilterIndex = 0 ' Display images with the extensions png, jp* and gif only ' FileChooser1.FilterIndex = -1 ' Display all files
Das Steuer-Element Filechooser hat ein eigenes Lesezeichen-System. Setzen Sie die Eigenschaft ShowBookmark auf True, um es anzuzeigen. Das Lesezeichen-Menü ist jetzt sichtbar und ein Dropdown-Menü mit Lesezeichen wird angezeigt, wenn Sie auf die Schaltfläche „Lesezeichen“ klicken.
Das Lesezeichen-Menü besitzt ein eigenes Kontext-Menü:
Abbildung 6.9.5.4.1: Lesezeichen-Menü im FileChooser
Das Dropdown-Menü enthält 3 Typen von Lesezeichen:
(Typ 1) Standard-Lesezeichen ①
(Typ 2) Private Lesezeichen ②
(Typ 3) Benutzer-Lesezeichen ③
Die Standard-Lesezeichen zeigen auf Home und System. Beachten Sie: Den Menüeintrag Desktop sehen Sie zusätzlich nur dann, wenn die Komponente gb.desktop geladen ist.
Auf private Lesezeichen wird über die Eigenschaft Bookmarks zugegriffen. Bookmarks ist vom Datentyp ein Array von Collections. Jede Bookmark-Collection muss einen Key „Path“ enthalten, der auf den Pfad des Lesezeichens zeigt. Optionale Keys sind „Name“ und „Icon“. Alle anderen Key-Namen werden ignoriert. Wichtig: Der angegebene Pfad muss existieren!
Dieser Lesezeichen-Typ 2 ist anwendungsspezifisch, wird nicht permanent gespeichert, sondern zur Laufzeit erzeugt. Der relevante Quelltext im Form-Open-Ereignis basiert auf Hinweisen von Tony Morehen (tmorehen@ajm-software.com):
Public Sub Form_Open() Dim cPrivateBookmarks As Collection[] Dim cBookmark As Collection FMain.Resizable = True ... cPrivateBookmarks = New Collection[] cBookmark = New Collection ' Syntax: cBookmark.Add(Value,Key) {Path, [Name, Icon]} cBookmark.Add(User.Home &/ "BildTon/Fractale", "Path") cBookmark.Add("Fractals", "Name") cBookmark.Add("icon:/small/plugin", "Icon") cPrivateBookmarks.Add(cBookmark) cBookmark = New Collection cBookmark.Add(User.Home &/ "ZumPrivaten/Bilder", "Path") cBookmark.Add("Pictures", "Name") cBookmark.Add("icon:/small/image", "Icon") cPrivateBookmarks.Add(cBookmark) Filechooser1.Bookmarks = cPrivateBookmarks ' The alternative uses the inline syntax: ' Filechooser1.Bookmarks = [["Path": User.Home &/ "BildTon/Fractale", "Name": "Fractals", "Icon": "icon:/small/plugin"], ["Path": User.Home &/ "ZumPrivaten/Bilder", "Name": "Pictures", "Icon": "icon:/small/image"]] FileChooser1.ShowBookmark = True ... End
Es ist für die Anzeige von Benutzer-Lesezeichen notwendig, dass die Komponente gb.settings geladen ist. Benutzer-Lesezeichen erzeugen und bearbeiten Sie über die Menü-Einträge „Lesezeichen für aktuelles Verzeichnis erstellen“ und „Lesezeichen bearbeiten“. Die Lesezeichen werden im Dateipfad $HOME/.config/gambas3/gb.form.conf gespeichert. Das ist der Inhalt der Datei gb.form.conf, die im vorgestellten Projekt angelegt wurde:
[Bookmarks] Count=2 Bookmark1=["/home/hans/AirCard_785S","AirCard_785S"] Bookmark2=["/home/hans/V24T","V24T"]
Achtung: Die Liste der Lesezeichen ist benutzerspezifisch. Sie wird von allen Anwendungen verwendet, die Gambas-Steuer-Elemente einsetzen, welche ein Lesezeichen-Menü besitzen – wie zum Beispiel das Steuer-Element DirChooser.