Farbwerte aus Textdatei

  • Ich habe eine Kombobox mit_GUICtrlComboBoxEx_Create erstellt und will über _GUIImageList_Create eine Liste zur Auswahl der gewünschten Farbe erstellen.
    Kombobox und Liste funktioniert soweit, nur die Darstellung klappt nicht, alles ist Schwarz. Die Werte werden aber korrekt aus der Datei ausgelesen und auch in der Liste als "Beschriftung" dargestellt.

    Ich komm irgendwie nicht dahinter woran das jetzt liegt... ?(

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBoxEx.au3>
    #include <GuiImageList.au3>
    #include <GuiConstantsEx.au3>
    #include <file.au3>
    ;~ #include <debugger.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
    for $i= 1 To $aBuffer[0] Step 1
    $Colour = StringSplit ($aBuffer[$i], ";")
    _GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], 0, 0)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (10)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

    [/autoit] [autoit][/autoit] [autoit]

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    die Textdatei mit den Farbwerten liegt im Anhang.


    Vielleicht kann mir ja jemand einen Tip geben oder einen Hinweis, was ich übersehen bzw falsch gemacht habe... Danke schon mal im Vorraus

  • Hallo,

    ersetze mal Zeile 21 durch:

    [autoit]

    _GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], $i-1, 0)

    [/autoit]


    Mit dem 3. Parameter wird angegeben, welches Bild der ImageList verwendet werden soll. Da die Zählung der Imagelist mit 0 beginnt, dein $i aber mit 1 (siehe Schleife), musst du noch 1 abziehen.

    Anmerkung: Bei mir wird beim Überfahren Eintrages mit der Maus dessen Farbe auf schwarz gesetzt, aber wieso das so ist, weiß ich nicht...
    Edit: Ich habe es mal getestet, beim Überfahren wird die Farbe auf die erste Farbe der Imagelist gesetzt...

    MfG Xenon :)

    Einmal editiert, zuletzt von Xenon (4. Januar 2014 um 18:16)

  • hab es gleich mal geändert und ausprobiert. Und siehe da, es werden beim Aufklappen die jeweiligen Farben angezeigt. Beim Überfahren werden diese aber, wie du schon geschrieben hast, wieder Schwarz.
    Gebe ich den Index bzw. den dazu gesetzten Parameter zum gewählten Control aus, dann stimmt aber die Zuordnung, nur das Bild ist schwarz. 8|

    Edit: So eine Nacht drüber geschlafen, heute nochmal das Script aus der Hilfe angeschaut und den Fehler gefunden. In Zeile 21 war noch ein Paramter-Fehler. Paramter 4 erhielt in der Schleife immer den Wert 0. Dies ist aber falsch, dieser muss gegen $i-1 ersetzt werden, damit beim Überfahren bzw markieren auch das richtige Image angezeigt wird.

    Das korrekte Script sieht dann wie folgt aus:

    Spoiler anzeigen
    [autoit]


    #include <GuiComboBoxEx.au3>
    #include <GuiImageList.au3>
    #include <GuiConstantsEx.au3>
    #include <file.au3>
    ;~ #include <debugger.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
    for $i= 1 To $aBuffer[0] Step 1
    $Colour = StringSplit ($aBuffer[$i], ";")
    _GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], $i-1, $i-1)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (10)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

    [/autoit] [autoit][/autoit] [autoit]

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von Flitzpiepe84 (5. Januar 2014 um 13:49) aus folgendem Grund: Fehler im Script gefunden