_GUICtrlComboBoxex_Create wird immer angezeigt

  • hallo ich habe ein Problem mit Comboboxen
    und zwar bei der normalen Combobox kann man wohl nicht mehrere auswahlmöglichkeiten bestimmen ??!! (wenn doch dann sagt mir bitte wie^^)
    und bei _GUICtrlComboBoxex_Create wird zwar eine gewünschte combobox erzeugt aber diese ist in allen Tabs sichtbar -.- dieso sollte aber nur in dem Tab zu sehen sein in dem sie auch steht
    Code:

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GUIComboBoxEx.au3>

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

    $Form1 = GUICreate("", 578, 381, 192, 124)
    GUISetBkColor(0xFFFF15)
    $tab = GUICtrlCreateTab(0, 0, 578, 20)
    $tab_server = GUICtrlCreateTabItem("hallo")
    _GUICtrlComboBoxex_Create($Form1,"1|2|3|4",30,30)
    $tab_server2 = GUICtrlCreateTabItem("hallo2")

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

    guisetstate(@SW_SHOW)
    while 1
    sleep(1)
    WEnd

    [/autoit]
  • Hallo Silvester,

    das kannst du mit einer ChildGui lösen:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GUIComboBoxEx.au3>

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

    $hGui = GUICreate("", 578, 381, 192, 124)
    GUISetBkColor(0xFFFF15)
    $tab = GUICtrlCreateTab(0, 0, 578, 20)
    $tab_server = GUICtrlCreateTabItem("hallo")
    $hGuiCombo = GUICreate("Cimbo", 150, 21, 30, 30, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
    _GUICtrlComboBoxEx_Create($hGuiCombo, "1|2|3|4", 2, 0, 146)
    GUISwitch($hGui)
    $tab_server2 = GUICtrlCreateTabItem("hallo2")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW, $hGui)
    GUISetState(@SW_SHOW, $hGuiCombo)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab
    $iTab = GUICtrlRead($tab)
    If $iTab = 0 Then
    GUISetState(@SW_SHOW, $hGuiCombo)
    WinActivate($hGui)
    Else
    GUISetState(@SW_HIDE, $hGuiCombo)
    WinActivate($hGui)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #region - Timestamp
    ; 2012-02-27 22:43:46
    #endregion - Timestamp
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIComboBoxEx.au3>
    #include <GuiTab.au3>

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

    $Form1 = GUICreate("", 578, 381, 192, 124)
    GUISetBkColor(0xFFFF15)
    $tab = GUICtrlCreateTab(0, 0, 578, 20)
    $tab_server = GUICtrlCreateTabItem("hallo")
    Global $hCombo = _GUICtrlComboBoxEx_Create($Form1, "1|2|3|4", 30, 30)
    $tab_server2 = GUICtrlCreateTabItem("hallo2")
    GUICtrlCreateTabItem("")

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

    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab
    $hWndTab = GUICtrlGetHandle($tab)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

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

    Switch $hWndFrom

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

    Case $hWndTab
    Switch $iCode
    Case $NM_CLICK ; The user has clicked the left mouse button within the control
    If _GUICtrlTab_GetCurSel($hWndTab) = 0 Then; 1. Tab wurde angeklickt
    _WinAPI_ShowWindow($hCombo, @SW_SHOW)
    Else
    _WinAPI_ShowWindow($hCombo, @SW_HIDE)
    EndIf

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

    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Edit: autobert dein Beispiel ist net so sehr um die Ecke gedacht wie meins. :D
    Es geht aber auch ohne eine Childgui.

    Spoiler anzeigen
    [autoit]

    #region - Timestamp
    ; 2012-02-27 22:48:10
    #endregion - Timestamp

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

    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIComboBoxEx.au3>

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

    $hGui = GUICreate("", 578, 381, 192, 124)
    GUISetBkColor(0xFFFF15)
    $tab = GUICtrlCreateTab(0, 0, 578, 20)
    $tab_server = GUICtrlCreateTabItem("hallo")
    $hCombo = _GUICtrlComboBoxEx_Create($hGui, "1|2|3|4", 2, 30, 146)
    GUISwitch($hGui)
    $tab_server2 = GUICtrlCreateTabItem("hallo2")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW, $hGui)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab
    $iTab = GUICtrlRead($tab)
    If $iTab = 0 Then
    _WinAPI_ShowWindow($hCombo, @SW_SHOW)
    Else
    _WinAPI_ShowWindow($hCombo, @SW_HIDE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Edit: autobert dein Beispiel ist net so sehr um die Ecke gedacht wie meins. :D
    Es geht aber auch ohne eine Childgui.


    Bei meinem Beispiel muss er noch herausfinden wie die Haupt-Gui den Focus nicht verliert. Ich weiss dass es geht dass die Titelleiste nicht inaktiv wird, meine grauen Gehirnzellen weigern sich aber das Ergebnis zu finden.

    Beide Lösungen zu einer und dann ist es kurz und passt:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GUIComboBoxEx.au3>

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

    $hGui = GUICreate("", 578, 381, 192, 124)
    GUISetBkColor(0xFFFF15)
    $tab = GUICtrlCreateTab(0, 0, 578, 20)
    $tab_server = GUICtrlCreateTabItem("hallo")
    $hCombo = _GUICtrlComboBoxEx_Create($hGui, "1|2|3|4", 30, 30)
    GUISwitch($hGui)
    $tab_server2 = GUICtrlCreateTabItem("hallo2")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW, $hGui)
    GUISetState(@SW_SHOW, $hCombo)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $tab
    $iTab = GUICtrlRead($tab)
    If $iTab = 0 Then
    _WinAPI_ShowWindow($hCombo, @SW_SHOW)
    Else
    _WinAPI_ShowWindow($hCombo, @SW_HIDE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Was mich wundert ist dass bei _GUICtrlComboBoxEx_Create mehrere Einträge auswählbar sein sollen ich es aber weder über die Shift oder STRG-Taste hinbekomme mehrere zu wählen.

    mfg autoBert