Die Umschaltfläche

Neben der normalen Schaltfläche fristet die Umschaltfläche bei den meisten Entwicklern das Dasein eines Stiefkindes. Oder sollte man eher sagen, neben dem Kontrollkästchen und der Optionsgruppe samt Optionsfeldern Denn eigentlich ist die Aufgabe dieses Steuerelements eher die zur Auswahl einer von zwei oder mehr Optionen. Dazu gehört natürlich auch das An- oder Ausschalten bestimmter Zustände.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1208_Umschaltflaeche.mdb.

Umschaltfläche als Einzelgänger

Im einfachsten Fall verwenden Sie die Umschaltfläche als einfaches, ungebundenes Steuerelement. Ein Beispiel zeigt Bild 1. Die dortige Umschaltfläche im Formular frmToggleButton der Beispieldatenbank heißt schlicht tblAnAus. In diesem ersten Beispiel wollen wir uns zunächst ansehen, welche Werte die Umschaltfläche abhängig von ihrem Zustand annimmt.

Eine einfache Umschaltfläche

Bild 1: Eine einfache Umschaltfläche

Dazu geben Sie einfach im Direktfenster des VBA-Editors (Strg + G, am besten platzieren Sie beide Fenster nebeneinander) die folgende Anweisung ein:

  Forms!frmToggleButton!tglAnAus.Value
    Null

Dies war der Zustand direkt nach dem öffnen des Formulars für eine ungebundene Umschaltfläche – die Eigenschaft Value liefert den Wert Null. Sie können die Angabe der Eigenschaft Value auch weglassen, da dies die Standardeigenschaft dieses Steuerelements ist. Klicken Sie nun einmalig auf die Umschaltfläche und führen die Abfrage für den gedrückten Status aus, sieht das Ergebnis so aus:

  Forms!frmToggleButton!tglAnAus
    -1 

Der gedrückte Zustand liefert also den Wert -1 beziehungsweise True. Ein erneutes Anklicken liefert schließlich den Wert 0, also False.

Ereignisse der Umschaltfläche

Anschließend prüfen wir, wie wir auf das Anklicken der Umschaltfläche reagieren und den aktuellen Wert verarbeiten können. Ein Blick auf die Registerseite Ereignis des Eigenschaftsfensters liefert alle zur Verfügung stehenden Ereigniseigenschaften (siehe Bild 2). Davon sind drei interessant: Beim Klicken, Vor Aktualisierung und Nach Aktualisierung.

Ereigniseigenschaften der Umschaltfläche

Bild 2: Ereigniseigenschaften der Umschaltfläche

Beim Anklicken der Umschaltfläche werden alle drei Eigenschaften in der folgenden Reihenfolge ausgelöst:

  • Vor Aktualisierung
  • Nach Aktualisierung
  • Beim Klicken

Dies können Sie ganz einfach testen, indem Sie für alle drei Eigenschaften je eine Ereignisprozedur anlegen und diesen einen Haltepunkt hinzufügen. Die Ereigniseigenschaft fügen Sie am schnellsten hinzu, indem Sie den Wert [Ereigniseigenschaft] für die jeweilige Eigenschaft auswählen und auf die Schaltfläche mit den drei Punkten klicken. Einmal im VBA-Editor angelangt, können Sie weitere Ereignisprozeduren über die beiden Kombinationsfelder oben im Code-Fenster mit dem Klassenmodul Form_frmToggleButton des Beispielformulars hinzufügen. Dort klicken Sie dann links auf den grauen Rand neben dem Prozedurkopf, um Haltepunkte hinzuzufügen (siehe Bild 3).

Wichtige Ereignisprozeduren einer Umschaltfläche

Bild 3: Wichtige Ereignisprozeduren einer Umschaltfläche

Schauen wir, ob es Unterschiede zwischen den Prozeduren gibt – gegebenenfalls wird ja das Ereignis Vor Aktualisierung so früh ausgelöst, dass Value noch nicht den geänderten Wert liefert, dies aber bei den übrigen Ereignissen der Fall ist. Dazu lassen wir bei jedem Ereignis den Wert der Umschaltfläche ausgeben:

Private Sub tglAnAus_AfterUpdate()
     Debug.Print "AfterUpdate: ", tglAnAus.Value
End Sub
Private Sub tglAnAus_Click()
     Debug.Print "Click: ", tglAnAus.Value
End Sub
Private Sub tglAnAus_BeforeUpdate(Cancel As Integer)
     Debug.Print "BeforeUpdate: ", tglAnAus.Value
End Sub

Nach dem Anklicken der Umschaltfläche liefern jedoch alle drei Ereignisse den gleichen Wert, wie die folgende Ausgabe im Direktfenster bestätigt:

BeforeUpdate:               -1 
AfterUpdate:  -1 
Click:        -1

Der einzige offensichtliche Unterschied ist somit, neben der Reihenfolge, der Parameter Cancel der Prozedur, die durch das Ereignis Vor Aktualisierung ausgelöst wird. Mit diesem können Sie festlegen, dass die Aktualisierung abgebrochen wird. Vorsicht ist hier bei der Abfrage des Wertes in der durch die Eigenschaft Vor Aktualisierung ausgelösten Prozedur geboten: Diese zeigt nämlich immer den Wert an, den die Umschaltfläche annehmen würde, wenn die Prozedur nicht durch Einstellen des Cancel-Parameters auf True abgebrochen wird.

Aktionen beim Umschalten

Das folgende Beispiel soll zeigen, wie Sie in Abhängigkeit vom Zustand der Umschaltfläche weitere Aktionen anstoßen. Dazu fügen wir dem Formular frmToggleButton eine einfache Schaltfläche namens cmdSchaltflaeche hinzu (siehe Bild 4). Ein Klick auf die Umschaltfläche soll die Schaltfläche aktivieren oder deaktivieren, je nachdem, ob die Umschaltfläche den Wert True oder False enthält.

Aktivieren und Deaktivieren weiterer Steuerelemente in Abhängigkeit vom Zustand der Umschaltfläche

Bild 4: Aktivieren und Deaktivieren weiterer Steuerelemente in Abhängigkeit vom Zustand der Umschaltfläche

Da anscheinend alle oben geprüften Ereignisprozeduren den gleichen Zustand liefern, können wir einfach die durch das Beim Klicken-Ereignis ausgelöste Prozedur für unsere Zwecke einsetzen.

Private Sub tglAnAus_Click()
     If Me!tglAnAus = True Then
         Me!cmdSchaltflaeche.Enabled = True
     Else
         Me!cmdSchaltflaeche.Enabled = False
     End If
End Sub

Wenn der Benutzer nun die Umschaltfläche herunterdrückt, wird die Schaltfläche cmdSchaltflaeche aktiviert. Wenn die Umschaltfläche gelöst wird, deaktiviert dies die Umschaltfläche. Die If…Then-Abfrage untersucht dazu den Ausdruck Me!tblAnAus auf den Wert True und weist der Eigenschaft Enabled der Schaltfläche cmdSchaltflaeche gegebenenfalls ebenfalls den Wert True zu, anderenfalls den Wert False.

Das schreit nach einer Vereinfachung: Sollten nicht noch weitere Aktionen innerhalb der If…Then-Bedingung ausgeführt werden, können Sie diese durch eine einzige Anweisung ersetzen:

Private Sub tglAnAus_Click()
     Me!cmdSchaltflaeche.Enabled = Me!tglAnAus
End Sub

Gebundene Umschaltflächen

Umschaltflächen lassen sich anstelle von Kontrollkästchen und Optionsfeldern einsetzen und können somit zur Auswahl des Inhalts von Ja/Nein-Feldern oder auch von Feldern mit mehreren möglichen, aber in der Anzahl eingeschränkten Werten dienen. Dies bezieht sich vor allem auf das Bearbeiten von in Tabellen gespeicherten Werten. Zu Testzwecken enthält die Beispieldatenbank eine Tabelle namens tblBeispiele, die neben einem Textfeld auch ein Ja/Nein-Feld und ein Feld namens Auswahl mit dem Datentyp Zahl enthält (siehe Bild 5).

Beispieldatenbank für Experimente mit der Umschaltfläche

Bild 5: Beispieldatenbank für Experimente mit der Umschaltfläche

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar