Benutzer-Werkzeuge

Webseiten-Werkzeuge


k12:k12.4:k12.4.3:start

12.4.3 Klasse Dialog – Mehrfachauswahl

Die Methode OpenFile( [ Multi ] ) hat ein optionales Argument 'Multi' vom Daten-Typ 'Boolean'. Wenn das Argument 'Multi' den Wert True hat, so kann der Benutzer mehrere Dateien auswählen. Die Methode selbst gibt True zurück, wenn der Benutzer den Abbruch-Button gedrückt hat oder False, wenn der Benutzer auf den OK-Button gedrückt hat. Die Pfade der ausgewählten Dateien werden in diesem Fall in der Eigenschaft Dialog.Paths in einem String-Array gespeichert.

Im folgenden Projekt wird die Mehrfachauswahl (MultiSelect) genutzt, um mehrere Bild-Dateien aus einem Verzeichnis auszuwählen. Die ausgewählten Bilder werden dann in einem Bildbetrachter angezeigt. Eine einfache Navigation ist vorhanden.

B1

Abbildung 12.4.3.1: Bild-Betrachter (GUI)

Mit dem Druck auf den Button 'Bilder auswählen' wird der Datei-Auswahl-Dialog gestartet und die folgende Dialog-Box geöffnet:

B2

Abbildung 12.4.3.2: Datei-Öffnen-Dialog-Box (Multi-Select)

Anschliessend können Sie durch die Bild-Liste – im Beispiel enthält diese 5 Bilder – navigieren:

B3

Abbildung 12.4.3.3: Bild-Betrachter

Wenn Sie die geöffnete Dialog-Box über 'Abbrechen' schliessen, so bleibt die Datei-Liste leer, da dann die Eigenschaft Dialog.Paths den Wert Null hat.

B4

Abbildung 12.4.3.4: Dialog-Box wird abgebrochen

Es wird nur ein Quelltext-Ausschnitt dargestellt und mit ergänzenden Kommentaren versehen:

[1] Public Sub btnOpenFileImage_Click()  
[2]   Dim sMessage1, sMessage2 As String
[3]   
[4]   SetEnabled() 
[5]   Dialog.Title = "Wählen Sie Bild-Dateien aus (Bilder-Liste)..."
[6] ' Dialog.Filter = ["*.jpg", "JPG-Bilddatei", "*.png", "PNG-Bilddatei", "*", "Alle Dateien"]
[7]   Dialog.Filter = ["*.png;*.jpg;*.jpeg;*.gif", "Bild-Dateien", "*", "Alle Dateien"]
[8]   Dialog.ShowHidden = False
[9]   Dialog.Path = Application.Path &/ "Images"  
[10]   
[11] ' Bilder auswählen (True -> Multiselect aktiviert)
[12]   If Dialog.Openfile(True) Then 
[13]      FMain.Text = "Dialog.OpenFile(True) mit Multi-Select"
[14]      PictureBoxD.Picture = Picture["Symbols/intro.jpg"] 
[15]      Return 
[16]   Endif
[17]   
[18]   sImagePaths = New String[] ' Neue Bild-Liste
[19]   sImagePaths = Dialog.Paths ' Bild-Liste sichern → Navigation
[20]   iPictureIndex = 0
[21]   
[22] ' Zur Kontrolle:
[23] ' For Each sPathName In Dialog.Paths
[24] '   Print sPathName
[25] ' Next
[26]   
[27]   PictureBoxD.Picture = Picture.Load(Dialog.Paths[0]) ' Anzeige des ersten Bildes
[28]   
[29]   sMessage1 = "Die Bild-Liste enthält genau " & Dialog.Paths.Count & " Bild"
[30]   sMessage2 = "Die Bild-Liste enthält " & Dialog.Paths.Count & " Bilder"
[31]   FMain.Text = IIf(Dialog.Paths.Count = 1, sMessage1, sMessage2)
[32]   
[33] ' Einschalten der Bild-Navigation, wenn die Bild-Liste mehr als ein Bild enthält
[34]   If Dialog.Paths.Count > 1 Then 
[35]      btnNext.Enabled = True
[36]   Else
[37]      btnNext.Enabled = False
[38]   Endif
[39]   
[40]   Catch
[41]     Message.Info(Error.Text)
[42] End ' btnOpenFileImage_Click()

Kommentar:

  • Der Text im Dialog-Titel – Zeile 5 – deutet schon auf die Möglichkeit hin, mehrere Bild-Dateien auswählen zu können.
  • Der Filter aus Zeile 6 wurde nicht gesetzt, weil durch den 1. Teil-Filter zuerst nur Bilder mit der Extension 'jpg' angezeigt werden. Sie können aber durch die zwei Teil-Filter gezielt nach bestimmten Bildern Ausschau halten.
  • Mit dem Filter in der Zeile 7 werden Ihnen sofort alle Bilder angezeigt, die auf das Muster im Filter passen.
  • Die Zeile 8 ist entbehrlich – es sei denn, es handelt sich um sehr geheime Geheim-Fotos.
  • Auf die Vorgabe eines bestimmten Verzeichnisses in der Zeile 9, mit dem die Dialog-Box startet, sollten Sie nicht verzichten, weil sonst als Standard-Pfad das Home-Verzeichnis des Benutzers verwendet wird oder das zuletzt benutzte Verzeichnis.
  • Im Normalfall steht in der Zeile 12 die Anweisung 'If Dialog.Openfile(True) Then Return'. Wenn der Nutzer den Dialog mit 'Abbrechen' → Abbildung 12.4.3.4 abgebrochen hat, dann wird die Prozedur sofort verlassen. Im Beispiel dagegen wird vor dem Verlassen der Fenstertitel geändert und das Startbild gesetzt.
  • Wenn der Benutzer mindestens ein Bild ausgewählt hat, dann wird in der Zeile 18 ein neues String-Array erzeugt. Um die Bildliste zu speichern – sie wird für die Navigation durch die Bild-Anzeige benötigt – wird dem String-Array sImagePaths eine Kopie der Dialog-Bild-Liste zugewiesen.
  • In den Zeilen 22 bis 25 können Sie zur Kontrolle bei der Erprobung durch die Bild-Liste iterieren und sich die einzelnen Datei-Pfade anzeigen lassen.
  • Da mindestens ein Bild ausgewählt wurde, wird das erste Bild über die Anweisung in der Zeile 27 sofort angezeigt.
  • Um dem (formalen) Satz 'Die Bild-Liste enthält 1 Bilder' zu entgehen, werden in den Zeilen 29 und 30 zwei Mitteilungen erzeugt, so dass korrekte Sätze – in Abhängigkeit von der Anzahl der Bilder – angezeigt werden.
  • Präventiv verwenden Sie die Gambas-Instruktion CATCH, um Fehler abzufangen und anzuzeigen.

Den kompletten Quelltext finden Sie im Download-Bereich im Projekt-Archiv.

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k12/k12.4/k12.4.3/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge