ComboBox und GuiOnEvent

  • Servus Leute,

    wieder ein kleines Problem welches mir Kopfschmerzen bereitet.

    Ich habe mehrere Comboboxen in meinem Script, welche ein Event auslösen wenn man etwas daraus auswählt.
    Manuell funktionert es auch sehr gut, nur benötige ich zusätzlich noch eine Funktion welche das Event auslöst.

    Anbei ein angepasstes Beispielskript. Über die Taste ESC wird mit dem Befehl GUICtrlComboBox_SetCurSel ein
    Eintrag ausgewählt, dummerweise triggert dieser nicht das Event! Gibt es da ne andere möglichkeit, evtl. über
    GuiSendMsg?

    Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIComboBox.au3>
    #include <GuiConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    $Debug_CB = False ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work

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

    Global $hCombo

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

    HotKeySet("{ESC}", "event")

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

    _Main()

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

    Func _Main()

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

    ; Create GUI
    GUICreate("ComboBox Set Cur Sel", 400, 296)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    $hCombo = GUICtrlCreateCombo("", 2, 2, 396, 296)
    GUICtrlSetOnEvent(-1, "test")
    GUISetState()

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

    ; Add files
    _GUICtrlComboBox_BeginUpdate($hCombo)
    _GUICtrlComboBox_AddDir($hCombo, @WindowsDir & "\*.exe")
    _GUICtrlComboBox_EndUpdate($hCombo)

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

    ; Select Item
    _GUICtrlComboBox_SetCurSel($hCombo, 2)

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

    ; Loop until user exits

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

    While True

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

    Sleep(50)

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

    WEnd

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

    EndFunc ;==>_Main

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

    Func test()
    MsgBox(0, "...", GUICtrlRead($hCombo))
    EndFunc

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

    Func event()
    _GUICtrlComboBox_SetCurSel($hCombo, 1)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Gruß

    Prajoss

    "Never touch a running System!"

    Einmal editiert, zuletzt von Prajoss (12. August 2011 um 08:57)

  • Mach so dann gehts ;):

    Spoiler anzeigen
    [autoit]

    #include <GUIComboBox.au3>
    #include <GuiConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    $Debug_CB = False ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work

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

    Global $hCombo

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

    HotKeySet("{ESC}", "event")

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

    _Main()

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

    Func _Main()

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

    ; Create GUI
    GUICreate("ComboBox Set Cur Sel", 400, 296)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    $hCombo = GUICtrlCreateCombo("", 2, 2, 396, 296)
    GUICtrlSetOnEvent(-1, "test")
    GUISetState()

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

    ; Add files
    _GUICtrlComboBox_BeginUpdate($hCombo)
    _GUICtrlComboBox_AddDir($hCombo, @WindowsDir & "\*.exe")
    _GUICtrlComboBox_EndUpdate($hCombo)

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

    ; Select Item
    _GUICtrlComboBox_SetCurSel($hCombo, 2)

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

    ; Loop until user exits

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

    While True

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

    Sleep(50)

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

    WEnd

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

    EndFunc ;==>_Main

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

    Func test()
    MsgBox(0, "...", GUICtrlRead($hCombo))
    EndFunc

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

    Func event()
    _GUICtrlComboBox_SetCurSel($hCombo, 1)
    test()
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.