[gelöst] Mit Button einen Tab ansprechen

  • Hey Leute,

    ich bin gerade dabei eine Sache auszuprobieren und komme nicht weiter.
    Mein vorhaben ist es in einer Gui einen Tab über das Drücken eines Button zu öffnen.
    Ich komme leider nicht weiter.

    Mein Code sieht bisher so aus (Alles nur zum Testen):

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 623, 449, 192, 114)
    $button =GUICtrlCreateButton("Tab aktivieren", 10,10, 100, 20)

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

    $Tab1 = GUICtrlCreateTab(16, 48, 569, 353)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 72, 168, 121, 25)
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $Label1 = GUICtrlCreateLabel("Label1", 72, 8, 36, 17)
    $Label2 = GUICtrlCreateLabel("Label2", 40, 88, 36, 17)
    $Input1 = GUICtrlCreateInput("Input1", 96, 80, 73, 21)
    $Label3 = GUICtrlCreateLabel("Label3", 40, 112, 36, 17)
    $Input2 = GUICtrlCreateInput("Input2", 96, 112, 73, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $button
    Send("^{TAB}")
    Send("^{TAB}")
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Danke schon mal für eure Hilfe!

    Gruß

    0cool

    Gut das fragen nichts kostet :)

    2 Mal editiert, zuletzt von 0cool (7. Juli 2012 um 19:41)

  • Hallo 0cool,

    dafür gibt es eine UDF, ich hab dir die Funktion darau in dein Skript eingebaut:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3> ;die benötigte UDF

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

    $Form1 = GUICreate("Form1", 623, 449, 192, 114)
    $button = GUICtrlCreateButton("Tab aktivieren", 10, 10, 100, 20)

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

    $Tab1 = GUICtrlCreateTab(16, 48, 569, 353)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 72, 168, 121, 25)
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $Label1 = GUICtrlCreateLabel("Label1", 72, 8, 36, 17)
    $Label2 = GUICtrlCreateLabel("Label2", 40, 88, 36, 17)
    $Input1 = GUICtrlCreateInput("Input1", 96, 80, 73, 21)
    $Label3 = GUICtrlCreateLabel("Label3", 40, 112, 36, 17)
    $Input2 = GUICtrlCreateInput("Input2", 96, 112, 73, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $button
    _GUICtrlTab_SetCurSel($Tab1, 1) ; Wählt denTab mit Index 1 (0..n) aus
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Hi, oder so ... ;)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    GUICreate("Form1", 623, 449)
    $button =GUICtrlCreateButton("Tab2 aktivieren", 10,10, 100, 22)
    $Tab1 = GUICtrlCreateTab(16, 48, 569, 353)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $Button1 = GUICtrlCreateButton("Button1", 72, 168, 121, 22)
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $Label2 = GUICtrlCreateLabel("Label2", 40, 88, 36, 17)
    $Input1 = GUICtrlCreateInput("Input1", 96, 80, 73, 21)
    $Label3 = GUICtrlCreateLabel("Label3", 40, 112, 36, 17)
    $Input2 = GUICtrlCreateInput("Input2", 96, 112, 73, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    ExitLoop
    Case $button
    GUICtrlSetState($TabSheet2, $GUI_SHOW) ;i das Tabitem anzeigen
    EndSwitch
    WEnd
    ; Ende

    [/autoit]
  • Hallo, mit dieser Lösung kannst Du hin und her schalten,
    weiterhin hat der Button immer eine korrekte Beschriftung! ;)

    [autoit]


    $title = "Tab - Switch 2 "
    Global $tate = 0, $TabSheet[2]
    GUICreate($title, 600, 450)
    $button = GUICtrlCreateButton($title, 10, 10, 200, 25)
    $bnClose = GUICtrlCreateButton($title & "Beenden", 390, 10, 200, 25)
    $Tab = GUICtrlCreateTab(10, 50, 580, 390)
    $TabSheet[0] = GUICtrlCreateTabItem("TabItem 1")
    GUICtrlCreateButton("Button 1", 72, 168, 121, 22)
    $TabSheet[1] = GUICtrlCreateTabItem("TabItem 2")
    GUICtrlCreateLabel("Label 1", 40, 88, 36, 17)
    GUICtrlCreateInput("Input 1", 96, 80, 73, 21)
    GUICtrlCreateLabel("Label 2", 40, 112, 36, 17)
    GUICtrlCreateInput("Input 2", 96, 112, 73, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3, $bnClose
    MsgBox(64, $title, "Viel Spaß wünscht RR04 !" & @TAB, 3)
    ExitLoop
    Case $button
    $tate = BitXOR($tate, 0, 1)
    For $k = 0 To 1 ;i statisch kein Ubound
    GUICtrlSetState($TabSheet[$tate], 16)
    GUICtrlSetData($button, "Wechseln zu TabItem " & BitXOR($tate, 0, 1) + 1)
    Next
    EndSwitch
    WEnd
    ; Ende

    [/autoit]
  • @all: Danke für eure Hilfe ich bin begeistert. Ihr habt mir sehr weiter geholfen.

    Die Lösung von RR04 hat für mich am besten gepasst.

    Gruß

    0cool

    Gut das fragen nichts kostet :)