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
Steuerelement | Hintergrund (Dunkel) | Schriftfarbe (Dunkel) |
---|---|---|
Formular | RGB(30,30,30) | RGB(230,230,230) |
Textfeld | RGB(50,50,50) | RGB(230,230,230) |
Kombi-Feld | RGB(50,50,50) | RGB(230,230,230) |
Label | transparent | RGB(200,200,200) |
Mein Setup in der Praxis
Bereich | Lösung |
---|---|
Farbmodus speichern | Tabelle Benutzer oder Registry |
Design anwenden | zentral per Prozedur WendeFarbModusAn |
Formularfarben | per VBA gesteuert, keine festen Designs |
Umschaltung | Button im Menü + Shortcut |
Benutzerführung | Hinweis 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.
No responses yet