Access kennt keine Themes â also baue ich sie selbst
Wenn Du Light/Dark-Modus in Access willst, musst Du Hand anlegen.
Kein native Theme-Engine. Keine CSS.
Aber: Mit sauberer VBA-Logik gehtâs trotzdem.
Ich zeig Dir, wie ich es mache.
Farbdefinitionen zentral verwalten
Ich lege alle Farbwerte in einer Tabelle ab.
Beispiel: Tabelle tblDesign
Theme | Element | FarbeHex |
---|---|---|
light | Hintergrund | #FFFFFF |
light | Text | #000000 |
dark | Hintergrund | #1E1E1E |
dark | Text | #DADADA |
Das kann man erweitern: Button-Farben, Rahmen, Hover, etc.
Farbe aus Tabelle laden
Function HoleFarbe(theme As String, element As String) As Long
Dim hex As String
hex = Nz(DLookup("FarbeHex", "tblDesign", "Theme='" & theme & "' AND Element='" & element & "'"), "#FFFFFF")
HoleFarbe = RGB(CInt("&H" & Mid(hex, 2, 2)), _
CInt("&H" & Mid(hex, 4, 2)), _
CInt("&H" & Mid(hex, 6, 2)))
End Function
Theme beim Ăffnen anwenden
Ich speichere das aktuelle Theme z.âŻB. in einer Konfig-Tabelle oder als globale Variable.
Anwendung auf Formular:
Sub AnwendenDesign(frm As Form, theme As String)
On Error Resume Next
frm.Detail.BackColor = HoleFarbe(theme, "Hintergrund")
Dim ctl As Control
For Each ctl In frm.Controls
Select Case ctl.ControlType
Case acLabel, acTextBox
ctl.ForeColor = HoleFarbe(theme, "Text")
Case acCommandButton
ctl.BackColor = HoleFarbe(theme, "ButtonHintergrund")
ctl.ForeColor = HoleFarbe(theme, "ButtonText")
End Select
Next
End Sub
Theme bei Formularstart setzen
Im Form_Load
-Ereignis:
Private Sub Form_Load()
Call AnwendenDesign(Me, AktuellesTheme)
End Sub
AktuellesTheme
kann z.âŻB. eine globale Variable sein:
Public AktuellesTheme As String
Oder aus Tabelle geladen:
Function LadeAktuellesTheme() As String
LadeAktuellesTheme = Nz(DLookup("Wert", "tblEinstellungen", "SchlĂŒssel='Theme'"), "light")
End Function
Theme umschalten per Button
Private Sub btnThemeWechseln_Click()
If AktuellesTheme = "light" Then
AktuellesTheme = "dark"
Else
AktuellesTheme = "light"
End If
Call AnwendenDesign(Me, AktuellesTheme)
End Sub
Optional: Theme in Tabelle speichern.
Sub SpeichereTheme(theme As String)
CurrentDb.Execute "UPDATE tblEinstellungen SET Wert='" & theme & "' WHERE SchlĂŒssel='Theme'", dbFailOnError
End Sub
Buttons mit Hover-Farbe
Access kennt kein Hover.
Aber per Timer-Event kann manâs nachbauen.
Oder mit Drittanbieter-Steuerelementen.
Ich machâs pragmatisch: Kein Hover, aber deutliche Farben.
Farbige Icons dynamisch einbinden
Du kannst je nach Theme andere Bildpfade laden:
If AktuellesTheme = "dark" Then
Me.imgLogo.Picture = CurrentProject.Path & "\images\logo_dark.png"
Else
Me.imgLogo.Picture = CurrentProject.Path & "\images\logo_light.png"
End If
Design auf alle Formulare anwenden
Sub DesignAufAlleFormulare(theme As String)
Dim frm As Form
Dim i As Integer
For i = 0 To Forms.Count - 1
Set frm = Forms(i)
Call AnwendenDesign(frm, theme)
Next
End Sub
Oder beim Ăffnen zentral steuern.
Mein Fazit
Light/Dark-Modus in Access ist kein Haken in den Optionen.
Du baust ihn Dir selbst â mit Farben, Logik und VBA.
Ist Aufwand. Aber sieht professionell aus.
No responses yet