ComboBox manuelle Eingabe verhindern

  • Je nach dem wie viele Items die ComboBox haben soll solltest du als Style stattdessen eher BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL) benutzen, sonst werden dir eventuell nicht alle Items angezeigt.

  • Kleine Hilfe zum Testen, ob in der Combo ne Taste gedrückt wurde.. wie du das dann behandelst sei mal dahingestellt..

    Spoiler anzeigen
    [autoit]


    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND");
    Global $Form1 = GUICreate("Form1", 214, 91, 192, 124)
    Global $Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    Global $Editel = GUICtrlCreateInput("Test", 8, 32, 81, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

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

    Switch _WinAPI_LoWord($wParam)
    Case $Combo1
    Switch _WinAPI_HiWord($wParam)
    Case $CBN_EDITCHANGE
    MsgBox(0,"","Taste im Combo gedrückt")
    EndSwitch
    EndSwitch
    EndFunc ;==>WM_COMMAND

    [/autoit]
    • Offizieller Beitrag

    Hier ein Beispiel, wie misterspeed und James es gemeint haben:

    Spoiler anzeigen
    [autoit]


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

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

    Global $hGui = GUICreate('Test', 240, 100)
    Global $idCombo = GUICtrlCreateCombo('', 10, 10, 220, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
    GUICtrlSetData(-1, 'Test1|Test2|Test3|Test4|Test5|Test6|Test7', 'Test4')
    Global $idEdit = GUICtrlCreateInput('', 10, 60, 220, 20)
    GUICtrlSetData(-1, GUICtrlRead($idCombo))
    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idCombo
    GUICtrlSetData($idEdit, GUICtrlRead($idCombo))
    EndSwitch
    WEnd

    [/autoit]
  • Perfekt!
    Genau so hatte ich mir das gedacht :D
    Vielen vielen Dank Euch allen
    LG
    Captain09