Problemstellung:
Nur für 32Bit Office Versionen
Das Checkbox-Control in MS-Access hat einen Nachteil.
Es ist nicht möglich das Control zu vergrößern bzw. farbig zu gestalten.
Mit ein paar Tricks ist das doch möglich.
Die Originalidee stammt von Günther Ritter und und wurde von mir erweitert und angepasst.
Voraussetzungen:
Das Bsp ist ab A00 lauffähig
Erstmal kennen wir alle die Standardansicht der Checkbox.
Aber irgendwie ist das immer etwas eintönig.
Manchmal wäre doch es besser so:
Aber wie macht man das nun?
Zuerst benötigt man für die beiden linken Bsp. den TT-Font "Marlett" und für die beiden rechten "Wingdings2"
Die Schriftgröße und Farbe ist in den Eigenschaftseinstellungen frei definierbar.
Im Steuerelementinhalt der großen Boxen schreibt man dann z.B.:
=Wenn([chk_1]=-1;"b")
Wobei der Bezug auf die richtige Checkbox gesetzt wird und das gewünschte Symbol der gewählten Schriftart.
Die echte Checkbox wird auf nicht sichtbar gesetzt und ist nur zur Demonstration hier im Bsp sichtbar.
Jetzt muss noch etwas Code eingefügt werden.
Im Modul "mod_Check" sind 2 API-Funktionen und eine Sub enthalten.
Diese dienen dazu das der TextCursor nicht in unserer Checkbox angezeigt wird.
Public Declare Function HideCaret Lib "user32" (ByVal hWnd As Long) As Long Public Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long Public Sub SetMark(objCheck As CheckBox) If objCheck = True Then objCheck = False Else objCheck = True End If End Sub
Der Sub "SetMark" wird dann im Formular der der Name der veränderten Checkbox übergeben.
Im Formular selbst ist dann folgender Code erforderlich:
In den Ereignissen "Beim Hineingehen" und "Bei Focuserhalt" der vergrößter Checkbox.
Ausschalten des Textcursors:
Private Sub chkG_1_Enter() HideCaret apiGetFocus End Sub Private Sub chkG_1_GotFocus() HideCaret apiGetFocus End Sub
Im Ereignis "Beim Klicken"
Ausschaten des Textcursors und setzen des Wertes:
Private Sub chkG_1_Click() HideCaret apiGetFocus 'Cursor bei Focus abschalten SetMark Me.chk_1 End Sub
Im Ereignis "Bei Taste" wird der Wert unserer Checkbox bei der Entertaste geändert:
Private Sub chkG_1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SetMark Me.chk_1 End If End Sub
Das Ergebnis sieht dann so aus:
In der Bsp-DB sind die Codes nur im oberen linken Textfeld hinterlegt.
Bei den anderen würde es genauso funktionieren.
Auch in Berichten ist diese Darstellung möglich.
Nur für 32Bit Office Versionen
Bsp-DB für die Anzeige von großen und farbigen Checkboxen
ab A00
Die Zip-Datei enthält ein Version ab A00
Ähnliche Artikel
Weiterlesen...