Hintergrundfarbe von Eingabefeldern ändern

Sie wollen in einem Formular die Hintergrundfarbe eines Textfeldes wechseln. Jeweils das Feld soll die Farbe ändern, für das Access 97 gerade eine Eingabe erwartet. Nach dem Verlassen des Feldes soll Access die Standardfarbe wiederherstellen.

Access identifiziert die verschiedenen Farben durch einen numerischen Ausdruck des Datentyps »long«. Zuerst müssen Sie die Nummern der Farben, die Sie verwenden wollen, herausfinden.

Öffnen Sie die Entwurfansicht eines Formulars. Klicken Sie mit der rechten Maustaste auf ein beliebiges Textfeld und rufen Sie den Kontextbefehl »Eigenschaften | Format« auf. Im Feld »Hintergrundfarbe« können Sie die Nummer der aktuellen Hintergrundfarbe ablesen. Um die Nummern der anderen Farben zu ermitteln, klicken Sie neben der Eigenschaft auf die Schaltfläche »...«. Wählen Sie eine neue Farbe und klicken Sie auf »OK«. Jetzt ist die Hintergrundfarbe mit der neuen Nummer belegt.

Ermitteln Sie auf die gleiche Weise die Nummern der Hintergrundfarben von Feldern mit und ohne Fokus. Achten Sie darauf, die ursprüngliche Belegung für ein Feld ohne Fokus anschließend wiederherzustellen. In unserem Beispiel ist »16711808« die Nummer der normalen Hintergrundfarbe, »65280« gehört zu einem aktivierten Textfeld.

Im nächsten Schritt müssen Sie den Ereignissen »Bei Fokuserhalt« und »Bei Fokusverlust« für jedes Textfeld eine Ereignisprozedur hinterlegen: Öffnen Sie das Kontextmenü der Textfelder und klicken Sie neben den Eigenschaften auf die Schaltfläche »...«. Wählen Sie nun im Dialog »Generator auswählen« den Eintrag »Code-Generator« und bestätigen Sie mit »OK«. Die Namen der Ereignisprozeduren setzen sich zusammen aus dem Namen des Textfeldes und den Zeichen »_GotFocus« oder »_LostFocus«.

Innerhalb dieser Prozeduren definieren Sie mit einem VBA-Befehl die aktuelle Hintergrundfarbe. Für das Textfeld »Text1« sehen die entsprechenden Prozeduren in unserem Beispiel wie folgt aus:



Private Sub Text1_GotFocus()
Me![Text1].BackColor = activateColor
End Sub
Private Sub Text1_LostFocus()
Me![Text1].BackColor = normalColor
End Sub



Das Beispiel geht davon aus, dass Sie die zuvor ermittelten numerischen Werte am Anfang des Moduls als Konstanten »normalColor« und »activateColor« definieren. Gehen Sie dazu an den Anfang des Moduls und fügen Sie hinter »Option Compare Database« und »Option Explicit« die folgenden Zeilen ein:



Const normalColor As Long = 16711808
Const activateColor As Long = 65280



Eine Beispieldatei – jeweils für Access 97 und 2000 – finden Sie auf der Heft-CD CHIP-Code FARBMDB.