Wenn’s nicht mehr blendet, denkt’s sich besser

Tageslicht im Büro? Manchmal.
Augen über 40? Oft.

Ein heller Access-Formularhintergrund auf einem 4K-Monitor um 22:30 Uhr ist kein Spaß.
Deshalb baue ich meine Access-Apps auf Wunsch mit Dunkelmodus.
Nicht automatisch. Aber schaltbar. Und nutzerfreundlich.

Warum Dark Mode überhaupt?

  • Weniger Belastung für die Augen
  • Bessere Lesbarkeit bei geringem Umgebungslicht
  • Modernere Optik
  • Höherer Kontrast bei richtigen Farben
  • Erwartungshaltung der Nutzer („alles andere hat’s ja auch…“)

Der Haken: Access hat keinen echten Dark Mode

Es gibt keinen systemweiten Schalter.
Access passt sich nicht automatisch an das Windows-Design an.

Aber:
Du kannst das Design per VBA umstellen.
Dynamisch. Benutzerabhängig.

Mein Ansatz: Dark Mode per Umschaltung

Ich speichere den Modus pro Benutzer oder in den Optionen.
Dann passe ich Farben zentral an.

Public Enum FarbModus
    fmHell = 0
    fmDunkel = 1
End Enum

Public gFarbModus As FarbModus

Beim Start wird geprüft:

Public Sub LeseFarbModus()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT Farbmodus FROM Benutzer WHERE Loginname = '" & Environ("USERNAME") & "'")

    If Not rs.EOF Then
        gFarbModus = rs!Farbmodus
    Else
        gFarbModus = fmHell
    End If
End Sub

Anwendung auf ein Formular

Public Sub WendeFarbModusAn(frm As Form)
    Select Case gFarbModus
        Case fmDunkel
            frm.Detail.BackColor = RGB(30, 30, 30)
            frm.ForeColor = RGB(230, 230, 230)

            Dim ctl As Control
            For Each ctl In frm.Controls
                If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
                    ctl.BackColor = RGB(50, 50, 50)
                    ctl.ForeColor = RGB(230, 230, 230)
                    ctl.BorderColor = RGB(80, 80, 80)
                End If
            Next

        Case fmHell
            frm.Detail.BackColor = RGB(255, 255, 255)
            frm.ForeColor = RGB(0, 0, 0)

            Dim ctl As Control
            For Each ctl In frm.Controls
                If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
                    ctl.BackColor = RGB(255, 255, 255)
                    ctl.ForeColor = RGB(0, 0, 0)
                    ctl.BorderColor = RGB(192, 192, 192)
                End If
            Next
    End Select
End Sub

Aufruf in jedem Formular beim Laden:

Private Sub Form_Load()
    Call WendeFarbModusAn(Me)
End Sub

Umschalten zur Laufzeit

Public Sub UmschaltenFarbModus()
    If gFarbModus = fmHell Then
        gFarbModus = fmDunkel
    Else
        gFarbModus = fmHell
    End If

    DoCmd.Echo False
    Dim frm As Access.Form
    For Each frm In Forms
        Call WendeFarbModusAn(frm)
    Next
    DoCmd.Echo True

    MsgBox "Farbmodus umgeschaltet."
End Sub

Optional: Checkbox im Menü oder Shortcut-Funktionstaste.
Speicherung im Benutzerprofil nicht vergessen.

Tabelle: Steuerungselemente und Farbanpassung

SteuerelementHintergrund (Dunkel)Schriftfarbe (Dunkel)
FormularRGB(30,30,30)RGB(230,230,230)
TextfeldRGB(50,50,50)RGB(230,230,230)
Kombi-FeldRGB(50,50,50)RGB(230,230,230)
LabeltransparentRGB(200,200,200)

Mein Setup in der Praxis

BereichLösung
Farbmodus speichernTabelle Benutzer oder Registry
Design anwendenzentral per Prozedur WendeFarbModusAn
Formularfarbenper VBA gesteuert, keine festen Designs
UmschaltungButton im Menü + Shortcut
BenutzerführungHinweis beim ersten Start

Access ist nicht schön. Aber Du kannst es erträglich machen.

Wenn die Nutzer länger damit arbeiten müssen –
dann schenk ihnen den Dunkelmodus.
Einmal eingerichtet, will den keiner mehr missen.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert