Optionsgruppen mit den dazugehörigen Optionen sind praktisch zum Auswählen fest vorgegebener Optionen. Was aber, wenn man auch die Möglichkeit anbieten möchte, keinen der angebotenen Werte zu wählen Und wie bekommt man eine einmal getätigte Auswahl wieder weg Damit beschäftigt sich der vorliegende Artikel!
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2103_OptionAbwaehlen.accdb.
Ausgangssituation
Wenn Sie eine Optionsgruppe anlegen und dieser einige Optionsschaltflächen hinzufügen, können Sie entweder angeben, dass ein Standardwert vorgegeben wird oder auch nicht.
Wenn Sie einen Standardwert vorgegeben haben, wird dieser in der Optionsgruppe markiert, anderenfalls bleibt die Optionsgruppe komplett leer.
Wenn Sie jedoch einmal einen der Werte der Optionsgruppe selektiert haben – wie können Sie diese Auswahl dann wieder zurücknehmen und die Optionsgruppe leeren Diese Möglichkeit finden wir zumindest nicht als eingebaute Option.
Zu Beispielzwecken haben wir zunächst eine Optionsgruppe mit drei Optionen hinzugefügt und für diese die Eigenschaft Standardwert leer gelassen (siehe Bild 1).
Bild 1: Optionsgruppe ohne Standardwert
Wenn Sie nun in die Formularansicht wechseln, zeigt die Optionsgruppe wie gewünscht keinen voreingestellten Wert an (siehe Bild 2). Das bleibt aber auch nur solange so, bis der Benutzer einmal auf eine der Optionen klickt. Von da an ist immer genau ein Element der Optionsgruppe markiert – Sie können die Optionsgruppe nicht mehr leeren.
Bild 2: Optionsgruppe ohne Standardwert in Aktion
Optionsgruppe per Schaltfläche leeren
Die einfachste und offensichtlichste Art, dies zu erledigen, ist eine Schaltlfäche neben der Optionsgruppe, mit der Sie diese leeren können. Diese müsste beispielsweise die folgende Ereignisprozedur auslösen:
Private Sub cmdLeeren_Click() Me!ogrBeispiel = Null End Sub
Damit können Sie eine Optionsgruppe, für die ein Benutzer bereits einen Wert ausgewählt hat, wieder leeren.
Option durch nochmaliges Anklicken leeren
Noch schöner wäre es allerdings, wenn der Benutzer nur nochmals auf den aktuell markierten Eintrag klicken müsste, um die Markierung aufzuheben. Allerdings geschieht beim erneuten Anklicken nichts.
Also hinterlegen wir für die einzelnen Optionen jeweils eine Ereignisprozedur, die dafür sorgt, dass die Optionsgruppe geleert wird, wenn der Benutzer auf eine Option klickt, die bereits gewählt ist.
Dazu vergeben wir zunächst Namen für die drei Optionen unseres Beispiels, nämlich opt1, opt2 und opt3 (siehe Bild 3).
Bild 3: Benennung der Optionen
Nun müssen wir herausfinden, welches Ereignis dasjenige ist, mit dem wir das Aktivieren einer der Optionen nachbilden können. Wir klicken mit der Maus auf den jeweiligen Eintrag, also handelt es sich wohl um eines der Ereignisse, die mit dem Betätigen des Mauszeigers zusammenhängen.
Um zu prüfen, ob die Option beim Herunterdrücken oder Loslassen des Mauszeigers gesetzt wird, führen wir den Schritt einfach einmal aus. Dabei stellen wir fest, dass die Option beim Herunterdrücken der Maustaste zwar bereits aktviert, aber noch nicht gesetzt wird. Das geschieht erst beim Loslassen des Mauszeigers. Unser gesuchtes Ereignis ist also Bei Maustaste auf.
Danach legen wir für die drei Optionen die Ereignisprozeduren aus Listing 1 an. Diese sind ähnlich aufgebaut und unterscheiden sich nur an einer Stelle. Die Prozeduren vergleichen den Wert der Optionsgruppe mit dem Wert der Option, den wir mit der Eigenschaft OptionValue des Optionsfeldes ermitteln, also beispielsweise:
Private Sub opt1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Me!ogrAusUndAbwaehlen = Me!opt1.OptionValue Then Me!ogrAusUndAbwaehlen = Null End If End Sub Private Sub opt2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Me!ogrAusUndAbwaehlen = Me!opt2.OptionValue Then Me!ogrAusUndAbwaehlen = Null End If End Sub Private Sub opt3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Me!ogrAusUndAbwaehlen = Me!opt3.OptionValue Then Me!ogrAusUndAbwaehlen = Null End If End Sub
Listing 1: Ereignisprozeduren beim Loslassen der Maustaste
If Me!ogrAusUndAbwaehlen = Me!opt1.OptionValue Then
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: