Farben per Farbauswahldialog auswählen

Anders als in Visual Basic, wo Sie einfach per ActiveX-Komponente über das CommonDialog-Control einen Farbauswahldialog realisieren können, steht diese Kompontente für Access nicht zur Verfügung. Aber es gibt dennoch eine komfortable Möglichkeit, dem Benutzer einen Dialog zur Farbauswahl anzubieten. Die Lösung ist, wie so oft, die Windows API.

Die Windows API stellt einen Farbauswahldialog zur Verfügung, der die Standardfarben zur Auswahl anzeigt, aber auch in einer erweiterten Version (Bild 1) verfügbar ist, in der der Benutzer auch eigene Farben mischen und auswählen kann. Der Dialog gibt die Farbe dann als Long- Wert zurück.

Notwendige Deklarationen

Da Sie dazu die API-Funktion ChooseColorA nutzen müssen, ist es erforderlich, diese zunächst zu deklarieren, und zwar auf Modulebene innerhalb eines Standardmoduls (Listing 1).

Option Compare Database
'API-Deklarationen
Declare Function ChooseColor Lib "comdlg32.dll" _
Alias "ChooseColorA" (pChoosecolor As LPCHOOSECOLOR) As Long
'Notwendige Typ-Deklaration
Type LPCHOOSECOLOR
lStructSize As Long
hWnd As Long
hInstance As Long
rgbResult As Long
lpCustColors As String
Flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
'Erforderliche Konstanten
Const CC_SOLIDCOLOR = &H80
Const CC_FULLOPEN = &H2

Sie benötigen außerdem einen Datentyp, den Sie ebenfalls mit der type-Anweisung auf Modulebene deklarieren, sowie zwei Konstanten CC_FULLOPEN und CC_SOLIDCOLOR. Sie legen zwei hexadezimale Werte fest, die bestimmen, ob die erweiterte Version des Dialogs oder nur die Standardfarben angezeigt werden sollen.