Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Modale Dialoge automatisch schließen

Formulare lassen sich mit dem Wert acDialog für den Parameter WindowMode modal öffnen, und Meldungsfenster sind von Haus aus modal. Wenn Sie einen solchen modalen Dialog automatisch wieder schließen möchten, finden Sie hier die richtigen Mittel.

Kommt Zeit, geht Dialog

Es gibt viele Einsatzzwecke für modal geöffnete Formulare - beispielsweise, wenn die Eingabe in ein solches Formular den Inhalt des aufrufenden Formulars beeinflusst, wenn Sie dem Benutzer damit einen Startscreen präsentieren wollen, der vor dem eigentlichen Start der Anwendung zu schließen ist und vieles mehr.

Vielleicht möchten Sie einen Dialog auch mal wieder automatisch schließen - etwa, wenn es sich dabei um einen Startscreen handelt und der Benutzer diesen nicht direkt schließen, sondern erst einmal ausgiebig den Inhalt studieren soll.

Zum automatischen Schließen können Sie einfach das OnTimer-Ereignis und die TimerInterval-Eigenschaft eines Formulars verwenden. Mit TimerInterval geben Sie an, in welchem Intervall vom Starten des Formulars an das Ereignis OnTimer ausgeführt werden soll.

Für das OnTimer-Ereignis legen Sie eine Prozedur an, die zum Schließen des Formulars führt:

Private Sub Form_Timer()

    DoCmd.Close acForm, Me.Name

    Me.TimerInterval = 0

End Sub

Der Clou bei der Vorgehensweise ist, dass man dabei auch andere Formulare automatisch schließen oder auch unsichtbar machen kann - etwa um noch Informationen aus dem Formular auszulesen.

Wenn Sie mit der obigen Prozedur ein anderes Formular schließen möchten, geben Sie statt Me.Name einfach den Namen des zu schließenden Formulars an. Beachten Sie außerdem, dass Sie den Zeitgeber vor dem modalen Öffnen des Formulars anwerfen.

Weg mit dem Meldungsfenster

Ein wenig aufwendiger ist das automatische Schließen von Meldungsfenstern.

Dies ist ebenfalls nur über die OnTimer-Prozedur eines Formulars möglich, bei dem der Timer vor dem Anzeigen des Meldungsfensters aktiviert wurde.

Um ein Meldungsfenster zu schließen, müssen Sie allerdings den SendKeys-Befehl verwenden - das ist nicht ganz ungefährlich, da der Anwender immer zu einer anderen Anwendung wechseln kann.

Um ein Meldungsfenster automatisch zu schließen, benötigen Sie zwei Prozeduren, die Sie testhalber in einem leeren Formular anlegen können.

Die erste wird durch eine Schaltfläche namens cmdMsgBoxOeffnen ausgelöst:

Private Sub cmdMsgBoxOeffnen_Click()

    Me.TimerInterval = 1000

    MsgBox "Diese Meldung wird automatisch geschlossen.", vbOKOnly

End Sub

Die zweite ist die OnTimer-Ereignisprozedur:

Private Sub Form_Timer()

    SendKeys " "

    Me.TimerInterval = 0

End Sub

Die Prozedur simuliert nach 1000 Millisekunden die Betätigung der Leertaste, die sich in dem Fall auf die Ok-Schaltfläche des Meldungsfensters auswirkt. Anschließend muss die Eigenschaft TimerIntervall unbedingt wieder auf den Wert 0 gestellt werden, damit das Formular nicht unkontrolliert Leertasten-Anschläge auslöst.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.