Standarddialoge

Öffnen | Speichern (unter) | Farbauswahldialog
Schrift | Druckerauswahl / Drucken | Hilfe

Standardialoge wie "Öffnen", "Speichern", "Speichern unter", "Drucken" etc. stehen in Windows auch zur Nutzung durch den Programmierer zur Verfügung. Sie sind über das Steuerelement "CommonDialog" erreichbar. Allerdings sind sie nicht völlig frei manipulierbar. Man kann aus Visual Basic z.B. keinen Einfluß auf die Lage oder Größe des Fensters nehmen. Vollen Zugriff bekommt man erst über die Windows API. Der Nachteil ist aber in der Praxis kaum von Bedeutung. Dieses sehr mächtige Steuerelement kommt leider in der VB-Hilfe so gut wie gar nicht vor.
Name der KonstantenWertBedeutung
cdlOFNAllowMultiselect &H200& Erlaubt Mehrfachauswahl von Dateien. Die FileName-Eigenschaft enthält in diesem Fall alle Namen getrennt durch Leerzeichen
cdlOFNCreate Prompt &H2000& Bei Eingabe einer nicht existierenden Datei erhält der Benutzer Gelegenheit, diese zu erstellen
cdlOFNExplorer &H8000& Es wird das Dialogfeld zum Öffnen einer Datei des Explorers verwendet
cdlOFNExtensionDifferent &H400& Der eingegebene Dateiname besitzt eine Erweiterung, die von der angegebenen Standarderweiterung abweicht.
cdlOFNFileMustExist &H1000& Es dürfen nur existierende Dateinamen in das Textfeld des Dialogfeldes eingegeben werden.
cdlOFNHelpButton &H10& Es wird eineHilfe-Schaltflächeangezeigt.
cdlOFNHideReadOnly &H4& Die Option »Schreibgeschützt« wird nicht angezeigt.
cdlOFNNoValidate &H100& Ungültige Zeichen im Dateinamen werden zugelassen
cdlOFNOverwrite Prompt &H2& Gibt beim Speichern eine Meldung mit Überschreiboption aus, falls die Datei bereits existiert.
cdlOFNpathMustExist &H800& Es wird nur die Eingabe eines gültigen Pfades zugelassen
cdlOFNReadOnly &H1& Setzt oder ermittelt den Zustand der Option »Schreibgeschützt«.
cdlOFNShareAware &H4000& Eine Zugriffsverletzung auf die Datei wird ignoriert
cdlOFNLongNames &H200000& Es dürfen lange Dateinamen verwendet werden

Öffnen

Ein Beispielaufruf, das CommonDialog-Steuerelement heiße (Name-Eigenschaft) CmDialog1.

Sub mnuÖffnen_Click()  
On Error GoTo ErrHandler
mögliche Fehler (wozu bequemerweise auch der Abbruch gehört) auffangen
CmDialog1.Filter = "Potentiale(*.pot)|*.pot"
Voreinstellung der Dateiart
CmDialog1.Flags = &H1000&
vgl. obige Flag-Tabelle
CmDialog1.Action = 1
Aufruf des Dialogfensters. Es ist nur noch dieses ansprechbar, bis es mit Abbruch oder OK geschlossen wird.
Pot_Filename = CmDialog1.Filename
Das Fenster ist wieder geschlossen, die ausgewählte Datei wird an eine Variable übergeben
Open Pot_Filename For Input As 100
Öffnen der ausgewählten Datei, es folgt die selbst zu gestaltende Leseroutine
Input #100, tZeile
hier nur eine Textzeile, die in die Variable des Namens tZeile eingelesen wird.
Close #100
Datei schließen
Nixwieweg:Marke für Ansprung Resume
Exit Sub
Unterprogramm verlassen
ErrHandler:Sprungmarke Fehlerbehandlung
MsgBox ("Abbruch oder Laden mißlungen, Daten überprüfen")
Messagebox wartet auf OK
Resume Nixwieweg
Fehler ist erledigt, springe zur Marke und beende die Routine
End Sub 
 

Das mit dem obigen Code aufgerufene Fenster :


Speichern (unter)

Wieder ein Beispielaufruf, das CommonDialog-Steuerelement heiße (Name-Eigenschaft) CmDialog1.

Private Sub mnuSpeichernUnter_Click()  
On Error GoTo ErrHv
Fehler auffangen
CmDialog1.Flags = &H2&
Flags setzen
CmDialog1.Filter = "Dateien (*.dat)|*.dat"
voreingestellte Dateikennung
CmDialog1.Action = 2
Aufruf des Speicherdialogs, er dient der Vergabe des Dateinamens und der Wahl des Speicherpfades; unter dem Schlüsselwort "FileName" wird Pfad und Name zurückgegeben
Daten_Speichern (CmDialog1.Filename)
eigentliche Speicherroutine
Ausgang:Sprungmarke
Exit Sub
reguläres Ende der Routine
ErrH:Fehlerbehandlung
MsgBox "So ein Mist", 33, "evtl. Laufwerk nicht vhd."
Mitteilung über den Fehler
Resume Ausgang
Fehler ist erledigt, raus aus der Routine 
End SubEnde

es öffnet sich dieses Fenster:


Farbe

Wieder ein Beispielaufruf, das CommonDialog-Steuerelement heiße (Name-Eigenschaft) CmDialog1. Der Aufruf erfolgt mit.Action = 3. Mit CmDialog.Color wird eine gewählte Farbe zurückgegeben und kann einem Steuerelement zugewiesen werden.

Farbauswahldialog

Schriftart

Wieder ein Beispielaufruf, das CommonDialog-Steuerelement heiße (Name-Eigenschaft) CmDialog1.
 

Private Sub mnuSchriftwahl_Click() 
On Error GoTo Ente
Fehler auffangen
CmDialog1.Flags = &H8000& Or &H200000 Or &H4000& Or &H3&
Flags setzen
CmDialog1.CancelError = True
Bedienung der Abbruchtaste soll einen Fehler erzeugen, der dann wie sonstige Fehler abgefangen wird
CmDialog1.FontName = Schriftname
vorgewählte Schriftart
CmDialog1.Action = 4
Aufruf des Dialogfensters
Schriftname = CmDialog1.FontName
neu gewählte Schriftart wird übernommen (Name übernommen in die Variable Schriftname)
Schriftgroesse = CInt(stdDialog1.FontSize)
neu eingestellte Schriftgröße wird übernommen
Exit Sub
Alles ist klar!
Ente: 
Resume Raus
Fehler ist zu vergessen, raus aus der Routine
Raus: 
End Sub 

Der bekannte Auswahldialog:

bild

Druckerauswahl / Drucken

Das CommonDialog-Steuerelement heißt hier (Name-Eigenschaft) CmDialog1.

Private Sub mnuDatDruck_Click()  
CmDialog1.Flags = &H80000& Or &H8& Or &H4&
Flags nach Tabelle der Druckerflags setzen
CmDialog1.Copies = 1
ergänzende Voreinstellung: nur ein Exemplar
CmDialog1.CancelError = True
wenn Abbruch, dann melde Fehler
On Error GoTo ErrHandler
Wenn Abbruch oder Druckerwahl schief geht, versuche nicht, zu drucken
CmDialog1.Action = 5
Druckerdialog aufrufen, er regelt die Druckerauswahl, das Fenster wird mit Abbruch oder OK geschlossen.
'Beginn der DruckbefehleDa kein Abbruch oder sonstiger Fehler geschehen ist:
Printer.Print "Dies ist die Überschrift"
Printer.Print .....
Folge der Druckbefehle
Printer.EndDoc
Dokument abschließen und drucken
hierher:Sprungmarke
Exit Sub
Routine verlassen
ErrHandler:Fehlerroutine
Resume hierher
mach gar nichts, melde Fehler als erledigt und setze bei der Marke hierher fort, beende also die Routine
End Sub 

das bekannte Fenster:


Hilfe

Das Dialogfeld wird von den üblicherweise eingesetzten API-Routinen zum Aufruf der Hilfe eigenständig verwaltet. Hilfe-Aufrufe werden im Hilfekapitel beschrieben, das sich in Überarbeitung befindet und deshalb im Moment fehlt.


© R. Hirte * 2000