Schalter für ein Ja/Nein-Feld verwenden
Zeigen Sie ein Ja/Nein-Feld als Schalter mit sofortiger Wirkung an, wie es die Windows-Einstellungen tun – auf einem
Formular mit WklToggleSwitch, in einer Liste als Spalte eines WklGrid oder einer WklTreeList.
Voraussetzungen: WKL Forms Object Library 1.32 oder höher.
Lösungsüberblick
- Auf einem Formular: Fügen Sie WKL Toggle Switch (ein ActiveX-Steuerelement) ein, und setzen Sie seinen Steuerelementinhalt (
ControlSource) wie bei einem Kontrollkästchen auf das Ja/Nein-Feld.Caption,OnTextundOffTextlegen Sie auf der Designerseite Schalter oder im Eigenschaftenblatt fest. - Sofortige Wirkung: Das Umschalten durch den Benutzer ändert den Datensatz wie jede Bearbeitung; speichern Sie ihn im Ereignis
ChangemitMe.Dirty = False. - Nicht bearbeitbar: Gesperrt (
Locked) = Ja am Steuerelement oder Bearbeitungen zulassen (AllowEdits) = Nein am Formular – der Schalter lässt sich dann nicht umschalten. - In einer Liste: Eine Spalte mit
Editor = wedTogglezeichnet denselben Schalter;OnTextundOffTextder Spalte fügen einen Zustandstext hinzu (standardmäßig leer, weil eine Liste wenig Platz hat). Ein Klick oder die Leertaste schaltet um und speichert wie jede Zellbearbeitung der Liste.
Umsetzung
Ein Formular frmUser ist an tblUser gebunden und enthält einen Schalter tglAktiv, der an das Feld Aktiv
gebunden ist:
' Once, in design view (or on the designer's pages); saved with the form.
With Forms!frmUser!tglAktiv
.ControlSource = "Aktiv"
.Object.Caption = "Konto"
.Object.OnText = "Aktiv"
.Object.OffText = "Gesperrt"
End With
' Form module of frmUser: every switch is saved at once.
Private Sub tglAktiv_Change()
Me.Dirty = False
End Sub
Eine Benutzerliste mit demselben Schalter als Spalte:
With Me!lstUser.Object
.RecordSource = "tblUser"
.KeyField = "UserID"
With .Columns.Add("Aktiv", "Konto")
.Editor = wedToggle
.OnText = "Aktiv"
.OffText = "Gesperrt"
End With
End With
Hinweise
- Verlassen Sie sich vor dem Speichern nicht auf das Feld. Access markiert den Datensatz als geändert, wenn der Benutzer umschaltet, und schreibt den Wert des Schalters spätestens beim Speichern des Datensatzes in das Feld. In
Changeund bis zum Speichern kann das Feld (Me!Aktiv) noch den alten oder schon den neuen Wert liefern. Lesen Sie inChangeden neuen Zustand am Steuerelement (Me!tglAktiv), oder speichern Sie zuerst. - Rückgängig (Esc,
Me.Undo) setzt den Schalter mit dem Datensatz zurück. - Per Code gesetztes
Valuezeigt nur einen Zustand an und schreibt nichts; ändern Sie stattdessen das Feld (Me!Aktiv = True). - Null – ein Feld ohne Wert, zum Beispiel eine Bit-Spalte von SQL Server, die Null zulässt – zeigt einen grauen Schalter mit dem Knopf in der Mitte und ohne Zustandstext; das erste Umschalten schaltet ihn ein.
- Bildschirmsprachausgaben hören eine Schaltfläche mit dem Muster Toggle: die Beschriftung (oder den Namen des Steuerelements) und den Zustand ein, aus oder unbestimmt.
- Auf UserForms in Excel und Word arbeitet der Schalter ungebunden: Setzen Sie
Valueper Code, und lesen Sie den Wert inChange. - Nicht im Detailbereich eines Endlosformulars: Access legt dort eine einzige Instanz eines ActiveX-Steuerelements an, die nur den aktuellen Datensatz zeigt, und mit einem Steuerelementinhalt im Detailbereich öffnet Access das Formular nicht vollständig. Für einen Schalter je Datensatz verwenden Sie die Listenspalte.
Verwandte Themen
de/wiki/msaccess/comctl/how-to/use-a-toggle-switch.txt · Zuletzt geändert: von Wolfgang van der Stille