Funktionreferenz


_ChooseColor

Beschreibung anzeigen in

Erzeugt eine Dialogbox, die es dem Benutzer ermöglicht, eine Farbe auszuwählen

#include <Misc.au3>
_ChooseColor ( [$vReturnType = 0 [, $iColorRef = 0 [, $iRefType = 0 [, $hWndOwnder = 0]]]] )

Parameter

$vReturnType [optional] Bestimmt den Rückgabetyp, gültige Werte sind: siehe Bemerkungen für andere Werte.
0 - COLORREF RGB Farbe (Standard)
1 - BGR hex
2 - RGB hex
$iColorRef [optional] vorausgewählte Farbe
$iRefType [optional] von $iColorRef eingelesener Typ, gültige Werte sind: siehe Bemerkungen für andere Werte.
0 - COLORREF RGB Farbe (Standard)
1 - BGR hex
2 - RGB hex
$hWndOwnder [optional] Handle des Fensters, zu dem die Dialogbox gehört

Rückgabewert

Erfolg: Hex-Wert der ausgewählten Farbe oder ein Array, das auch die benutzerdefinierten Farben enthält
Fehler: setzt @error
    -3 : vom Benutzer abgebrochene oder ungültige dll struct.
    -4 : ungültiger $vReturnType Wert.
    -5 : ungültiges $vReturnType Array.
    andere : Fehler zurückgegeben vom Dll-Aufruf.

Bemerkungen

$vReturnType kann 0 (RGB COLORREF), 1 (Hex BGR), 2 (Hex RGB) sein,
    -9 (gibt gespeicherte benutzerdefinierte Farben zurück),
    -10 (gibt gespeicherte benutzerdefinierte Farben zurück und löscht/entfernt gespeicherte benutzerdefinierte Farben),
    oder ein Array (siehe Anmerkung unten).

$iRefType kann 0 (ColorRef), 1 (BGR Hex), oder 2 (RGB Hex) sein.

$vReturnType kann ein Array[17] sein, wobei:
    Index 0 enthält einen Wert von:
        0: COLORREF rgbcolor
        1: BGR hex
        2: RGB hex
        -9: gibt die aktuell gespeicherten benutzerdefinierten Farben als Array[17] zurück,
            und ist übrigens der Ort, an dem der Rückgabewert bei der Rückgabe platziert wird (wenn er als Array verwendet wird).

        index 1 bis 16 sind die Farben, die in Benutzerdefinierte Farben in RGB verwendet werden sollen.

Wenn $vReturnType ein Array ist, wird das geänderte Array zurückgegeben (nicht die Farbe als Integer).
    mit der ausgewählten Farbe in Array[0], es sei denn, es wird abgebrochen, wodurch keine Aktualisierung erfolgt.

    Das Hinzufügen von int(10) zu $vReturnType, wenn es als Integer verwendet wird, wird auch die gespeicherten benutzerdefinierten Farben löschen.

Beispiel

#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    Local $hGUI, $idCOLORREF, $idBGR, $idRGB, $idMemo, $idRGBwA1, $idRGBwA2, $idClear

    $hGUI = GUICreate("_ChooseColor() Beispiel", 400, 300)
    $idMemo = GUICtrlCreateEdit("", 2, 55, 396, 200, BitOR($WS_VSCROLL, $WS_HSCROLL))
    GUICtrlSetFont($idMemo, 10, 400, 0, "Courier New")
    $idCOLORREF = GUICtrlCreateButton("COLORREF", 40, 10, 80, 40)
    $idBGR = GUICtrlCreateButton("BGR", 130, 10, 80, 40)
    $idRGB = GUICtrlCreateButton("RGB", 220, 10, 80, 40)
    $idClear = GUICtrlCreateButton("Leeren", 310, 10, 60, 40)
    $idRGBwA1 = GUICtrlCreateButton("RGB + benutzerdefiniert #1", 60, 260, 140, 40)
    $idRGBwA2 = GUICtrlCreateButton("RGB + benutzerdefiniert #2", 230, 260, 140, 40)
    GUISetState(@SW_SHOW)

    Local $aCustColors1[17]
    $aCustColors1[0] = -9  ; Initialisierung der benutzerdefinierten Farben
    $aCustColors1[3] = 0xFF0000 ; wenn man nicht möchte,
    $aCustColors1[16] = 0x0000FF ; die Schnittstelle zu laden.
    _ChooseColor($aCustColors1)

    Local $aCustColors2[17]
    $aCustColors2[2] = 0x0000FF
    $aCustColors2[15] = 0xFF0000

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                GUIDelete()
                ExitLoop
            Case $idClear
                GUICtrlSetState($idClear, $GUI_DISABLE)
                _ChooseColor(-10)
                Sleep(200) ; etwas Feedback, um zu zeigen, dass etwas getan wurde =)
                GUICtrlSetState($idClear, $GUI_ENABLE)
            Case $idCOLORREF
                _ShowChoice($hGUI, $idMemo, 0, _ChooseColor(0, 255, 0, $hGUI), "Gewählte COLORREF-Farbe: ")
            Case $idBGR
                _ShowChoice($hGUI, $idMemo, 2, _ChooseColor(2, 0x808000, 1, $hGUI), "Gewählte BGR-Farbe: ")
            Case $idRGB
                _ShowChoice($hGUI, $idMemo, 2, _ChooseColor(2, 0x0080C0, 2, $hGUI), "Gewählte RGB-Farbe: ")
            Case $idRGBwA1
                $aCustColors1[0] = 2 ; dies ist der "ReturnType"
                $aCustColors1 = _ChooseColor($aCustColors1, 0x0080C0, 2, $hGUI) ; um die gespeicherten benutzerdefinierten Farben zurück in das Array zu aktualisieren
                _ShowChoice($hGUI, $idMemo, 2, $aCustColors1[0], "RGB-Hex-Farbe deiner Wahl ( #1 ): ")
            Case $idRGBwA2
                $aCustColors2[0] = 2
                _ShowChoice($hGUI, $idMemo, 2, _ChooseColor($aCustColors2, 0x0080C0, 2, $hGUI)[0], "RGB-Hex-Farbe deiner Wahl ( #2 ): ")

        EndSwitch
    WEnd
EndFunc   ;==>Example

Func _ShowChoice($hGUI, $idMemo, $Type, $Choose, $sMessage)
    Local $sCr
    If $Choose <> -1 Then

        If $Type = 0 Then ; Konvertiere COLORREF in RGB für dieses Beispiel
            $sCr = Hex($Choose, 6)
            GUISetBkColor('0x' & StringMid($sCr, 5, 2) & StringMid($sCr, 3, 2) & StringMid($sCr, 1, 2), $hGUI)
        Else
            GUISetBkColor($Choose, $hGUI)
        EndIf

        GUICtrlSetData($idMemo, $sMessage & $Choose & @CRLF, 1)

    Else
        GUICtrlSetData($idMemo, "Farbauswahl vom Benutzer abgebrochen!" & @CRLF, 1)
    EndIf
EndFunc   ;==>_ShowChoice