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

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k12/k12.4/k12.4.3/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge