_GuiCtrlComboBoxEx - Problem mit Anzeige der Dropdownliste

    • Offizieller Beitrag

    Hi,

    ich muß für eine Anwendung leider auf die Erstellung einer Combobox über die Funktion _GuiCtrlComboBoxEx_Create() zurückgreifen. Nur damit kann eine Combo auf einer Rebar angezeigt werden (und verschwindet nicht nach minimieren/wiederherstellen).
    Leider ist es mir nicht möglich mehrere Item in der Box anzuzeigen. Standardstyle ist $CBS_DROPDOWN + $WS_VSCROLL. Obwohl die Funktion ..._AddString() die Indizes der neu erstellten Item zurückgibt sind diese nicht sichtbar. Die Liste der ComboBox lässt sich nicht ausklappen. Die Funktion _GUICtrlComboBoxEx_SetCurSel() wählt den gewünschten Wert aus, was beweist, dass die Werte in der Liste sind.
    Wo liegt da der Hund begraben? 8|

    [autoit]

    #include <Constants.au3>
    #include <GuiComboBoxEx.au3>

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

    $Gui = GUICreate("Test")
    $hCombo = _GUICtrlComboBoxEx_Create($Gui, '', 0, 0, 200, 20)

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

    $sCombo = "01.02.2012|02.02.2012|03.02.2012|05.02.2012|06.02.2012|08.02.2012|09.02.2012"
    _GuiComboSetData($hCombo, $sCombo, "08.02.2012")

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

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

    Func _GuiComboSetData($_hCombo, $_sItemString, $_sVisibleItem)
    If StringLeft($_sItemString, 1) = '|' Then
    _GUICtrlComboBoxEx_ResetContent($_hCombo)
    $_sItemString = StringTrimLeft($_sItemString, 1)
    EndIf
    Local $aItem = StringSplit($_sItemString, '|'), $index, $iTop = -1
    For $i = 1 To $aItem[0]
    $index = _GUICtrlComboBoxEx_AddString($_hCombo, $aItem[$i])
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $index = ' & $index & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $iTop <> -1 Then ContinueLoop
    If $aItem[$i] = $_sVisibleItem Then $iTop = $index
    Next
    _GUICtrlComboBoxEx_SetCurSel($_hCombo, $iTop)
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Ganz Einfach, du erstellst eine Combo mit der Höhe von 20, wie soll sich da was ausklappen, wenn die Standardhöhe des Inputs schon 17 ist? ;)

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <GuiComboBoxEx.au3>
    #include <WindowsConstants.au3>
    #Region - Timestamp
    ; 2013-03-23 20:04:21
    #EndRegion

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

    $Gui = GUICreate("Test")
    $hCombo = _GUICtrlComboBoxEx_Create($Gui, '', 0, 0, 200, 100)

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

    $sCombo = "01.02.2012|02.02.2012|03.02.2012|05.02.2012|06.02.2012|08.02.2012|09.02.2012"
    _GuiComboSetData($hCombo, $sCombo, "08.02.2012")

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

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

    Func _GuiComboSetData($_hCombo, $_sItemString, $_sVisibleItem)
    If StringLeft($_sItemString, 1) = '|' Then
    _GUICtrlComboBoxEx_ResetContent($_hCombo)
    $_sItemString = StringTrimLeft($_sItemString, 1)
    EndIf
    Local $aItem = StringSplit($_sItemString, '|'), $index, $iTop = -1
    For $i = 1 To $aItem[0]
    $index = _GUICtrlComboBoxEx_AddString($_hCombo, $aItem[$i])
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $index = ' & $index & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If $iTop <> -1 Then ContinueLoop
    If $aItem[$i] = $_sVisibleItem Then $iTop = $index
    Next
    _GUICtrlComboBoxEx_SetCurSel($_hCombo, $iTop)
    EndFunc

    [/autoit]