GUICtrlSetOnEvent und Tabs

  • Hallo Zusammen,

    nach meinen bisherigen Versuchen ist es nicht möglich, auch ein Klick auf ein tabitem abzufangen bzw wie bei einem Button eine Funktion aufzurufen, wenn man mit GUICtrlSetOnEvent arbeitet.

    Gibt es dennoch eine Methode, um bei GUICtrlSetOnEvent bleiben zukönnen, wenn man bei Auswahl eines tabitem eine Aktion ausführen möchte?


    Gruß
    vurman

  • Eine relativ simple Variante.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>

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

    Opt("GUIOnEventMode", 1)

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 623, 446, 227, 148)
    $Tab1 = GUICtrlCreateTab(32, 24, 289, 193)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    GUICtrlSetState(-1, $GUI_SHOW)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    $x = 0
    While 1
    If $x = 0 And _GUICtrlTab_GetCurSel($Tab1) = 0 Then
    MsgBox(0, 0, "TabSheet0 gewählt")
    $x = 1
    ElseIf $x = 1 And _GUICtrlTab_GetCurSel($Tab1) <> 0 Then
    $x = 0
    EndIf
    Sleep(100)
    WEnd

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

    Func _tabsheet1()
    MsgBox(0, 0, "Tab1")
    EndFunc ;==>_tabsheet1

    [/autoit]
  • Hallo i2c,

    und Danke für Deine schnelle Antwort :)

    Eine ähnlicheVariante hatte ich schonmal, aber die funktniert halt eher nach dem "Prinzip" von GUIGetMsg und ich hatte gehofft, es gibt noch eine Funktion, die ich noch nicht kenne und genau nach dem Schema des SetOnEvent funktoniert.


    Gruß
    vurman

  • Ich she grad, so geht's auch.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 623, 446, 227, 148)
    $Tab1 = GUICtrlCreateTab(32, 24, 289, 193)
    GUICtrlSetOnEvent(-1, '_GetTab')
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
    GUICtrlSetState(-1, $GUI_SHOW)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    ;GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    While 1
    Sleep(100)
    WEnd

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

    Func _GetTab()
    MsgBox(0, 0, "Tabsheet"&GUICtrlRead($Tab1))
    EndFunc ;==>_GetTab

    [/autoit]

    Über WM_NOTIFY will's bei mir grad nicht klappen.

  • Aaaahh, das wars...

    Spoiler anzeigen
    [autoit]

    $Tab1 = GUICtrlCreateTab(32, 24, 289, 193)
    GUICtrlSetOnEvent(-1, '_GetTab')

    [/autoit]

    Ich hatte das GUICtrlSetOnEvent immer ans Item gehangen und nicht ans Control, wo es ja eigentlich auch hingehört. :whistling:

    Vielen Dank an dieser Stelle.. :thumbup:


    Gruß
    vurman