Direkt zum Hauptbereich

Microsoft Access: Nutzung eines Farbauswahl-Dialogs (Color Picker)

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