Tipp 3.3 - Farbauswahldialog
Wie kann ich einen Farbauswahldialog aufrufen?
Mit dieser Funktion können Sie einen Farbauswahldialog aufrufen. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: GetActiveWindow - CHOOSECOLOR
Beispiel:
Option Explicit Public Enum CHOOSE_COLOR_FLAGS CC_RGBINIT = &H1& CC_FULLOPEN = &H2& CC_PREVENTFULLOPEN = &H4& CC_SHOWHELP = &H8& CC_ENABLEHOOK = &H10& CC_ENABLETEMPLATE = &H20& CC_ENABLETEMPLATEHANDLE = &H40& CC_SOLIDCOLOR = &H80& CC_ANYCOLOR = &H100& End Enum Private Type CHOOSECOLOR lStructSize As Long hwndOwner As Long hInstance As Long rgbResult As Long lpCustColors As Long flags As CHOOSE_COLOR_FLAGS lCustData As Long lpfnHook As Long lpTemplateName As String End Type Private Declare Function GetActiveWindow _ Lib "user32.dll" () As Long Private Declare Function ChooseColor_API _ Lib "comdlg32.dll" Alias _ "ChooseColorA" _ (lpChoosecolor As CHOOSECOLOR) As Long Public Function ColorSelected( _ Optional hWnd As Long = 0, _ Optional lCurrentColor As Long = -1) _ As Long '// ----------------------------------------------------- '// Funktion: |Aufruf des Farbauswahldialoges '// ----------------------------------------------------- '// Parameter: |opt. das Hadnle der aufrufenden Form '// |opt. lCurrentColor als aktuelle Farbe '// |zur Voreinstellung im Auswahldialog '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf aus einer Form heraus: '// BackColor = ColorSelected(hWnd, BackColor) '// ----------------------------------------------------- Dim uChooseColor As CHOOSECOLOR Dim alColorRef(15) As Long If hWnd = 0 Then hWnd = GetActiveWindow() With uChooseColor .lStructSize = Len(uChooseColor) .hwndOwner = hWnd .lpCustColors = VarPtr(alColorRef(0)) .flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT End With If lCurrentColor >= 0 Then uChooseColor.rgbResult = lCurrentColor End If If ChooseColor_API(uChooseColor) Then ColorSelected = uChooseColor.rgbResult End If End Function