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 LongPrivate 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 StringEnd Type' Ein paar gebräuchliche Konstanten für den Color PickerPrivate Const CC_ANYCOLOR = &H100Private Const CC_ENABLEHOOK = &H10Private Const CC_ENABLETEMPLATE = &H20Private Const CC_ENABLETEMPLATEHANDLE = &H40Private Const CC_FULLOPEN = &H2Private Const CC_PREVENTFULLOPEN = &H4Private Const CC_RGBINIT = &H1Private Const CC_SHOWHELP = &H8Private Const CC_SOLIDCOLOR = &H80Hier 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 IfEnd Sub#msaccess
Kommentare
Kommentar veröffentlichen