Um in Microsoft Access den Farbauswahl-Dialog des Betriebssystems zu nutzen, muß der entsprechende Windows-API-Aufruf deklariert werden, hier gleich ergänzt um ein paar Konstanten:
Private Declare Function ChooseColor_Dlg Lib "comdlg32.dll" _ Alias "ChooseColorA" ( _ lpcc As CHOOSECOLOR_TYPE) As Long
Private Type CHOOSECOLOR_TYPE
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long lpCustColors As Long
flags As Long lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
' Ein paar gebräuchliche Konstanten für den Color Picker
Private Const CC_ANYCOLOR = &H100
Private Const CC_ENABLEHOOK = &H10
Private Const CC_ENABLETEMPLATE = &H20
Private Const CC_ENABLETEMPLATEHANDLE = &H40
Private Const CC_FULLOPEN = &H2
Private Const CC_PREVENTFULLOPEN = &H4
Private Const CC_RGBINIT = &H1
Private Const CC_SHOWHELP = &H8
Private Const CC_SOLIDCOLOR = &H80
Hier etwas Beispielcode, bei dem ein Anwender über einen Button FarbeAuswählen den Dialog aufruft und die ausgewählte Farbe dann als Vordergrundfarbe für das Dialogelement Beispiel gesetzt wird:
Private Sub FarbeAuswählen_Click()
Dim CC_T As CHOOSECOLOR_TYPE
Dim Retval As Long
Static BDF(16) As Long
' Einige Farben vorgeben (Benutzerdefinierte Farben)
BDF(0) = RGB(255, 0, 255)
BDF(1) = RGB(125, 125, 125)
BDF(2) = RGB(90, 90, 90)
With CC_T
.lStructSize = Len(CC_T)
.hInstance = 0
.hwndOwner = Me.hwnd
.flags = CC_RGBINIT OR CC_ANYCOLOR OR CC_FULLOPEN OR
CC_PREVENTFULLOPEN
.rgbResult = RGB(0, 255, 0)
.lpCustColors = VarPtr(BDF(0))
End
With
Retval = ChooseColor_Dlg(CC_T)
If Retval <> 0 Then
Beispiel.ForeColor = CC_T.rgbResult
Else
MsgBox "Sie haben keine Farbe ausgewählt!"
End If
End Sub
#msaccess
Kommentare
Kommentar veröffentlichen