TabControl Steuerung

  • Guten Morgen zusammen,

    die Tabs machen mir sorgen:
    2 Fragen hierzu
    Weiß jemand wie man die Steuern kann?

    1. Per Tastatur

    Ich meine z.B. Focus auf Tab 3

    2. Wie kann man Tabs ausblenden

    Mein Code

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Tab1 = GUICtrlCreateTab(32, 56, 537, 337)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Seite")
    $Button1 = GUICtrlCreateButton("Zeigen", 440, 304, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("ausblenden", 440, 336, 75, 25, $WS_GROUP)
    $TabSheet2 = GUICtrlCreateTabItem("1")
    $TabSheet3 = GUICtrlCreateTabItem("2")
    $TabSheet4 = GUICtrlCreateTabItem("3")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/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][/autoit]

    ;) Ilse

  • Hallo,

    habe jetzt das hier gefunden.
    Aber der Fokus wird nicht gesetzt.

    Spoiler anzeigen
    [autoit]


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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Tab1 = GUICtrlCreateTab(32, 56, 537, 337)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $hTab = GUICtrlCreateTabItem("Seite")
    $Button1 = GUICtrlCreateButton("Zeigen", 440, 304, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("ausblenden", 440, 336, 75, 25, $WS_GROUP)
    $Tab1 = GUICtrlCreateTabItem("1")
    $Tab2 = GUICtrlCreateTabItem("2")
    $Tab3 = GUICtrlCreateTabItem("3")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlTab_SetCurFocus($hTab, 3)
    MsgBox(4160, "Information", "Aktueller Fokus: " & _GUICtrlTab_GetCurFocus($hTab))
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    hm, das Beispiel in der Hilfe funkfioniert mit dem Fokus
    ABER: hier werden insert Tabs verwendet.
    d.h. mit GUICtrlCreateTabItem geht das nicht?

    :( Ilse

    Einmal editiert, zuletzt von Ilse (3. März 2012 um 09:59)

  • Hallo Greenhorn,

    ja, das weiß ich!
    Habe jetzt den Fehler gefunden!

    $hTab = GUICtrlCreateTab
    verwechselt mit
    $hTab= GUICtrlCreateTabItem("Seite")


    ABER:

    weiß jemand wie man TABS ausblenden kann?
    Visible = true or false?

    Liebe Grüße
    Ilse ;)

  • Sorry, habe nicht richtig geguckt ... ;)

    Änderungen habe ich mit Ausrufezeichen markiert !!!

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $hTab = GUICtrlCreateTab(32, 56, 537, 337) ; !!!
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSeite = GUICtrlCreateTabItem("Seite") ; !!!
    $Button1 = GUICtrlCreateButton("Zeigen", 440, 304, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("ausblenden", 440, 336, 75, 25, $WS_GROUP)
    $Tab1 = GUICtrlCreateTabItem("1")
    $Tab2 = GUICtrlCreateTabItem("2")
    $Tab3 = GUICtrlCreateTabItem("3")
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlTab_SetCurFocus($hTab, 2)
    MsgBox(4160, "Information", "Aktueller Fokus: " & _GUICtrlTab_GetCurFocus($hTab))
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    Gruß
    Greenhorn


    • Offizieller Beitrag

    Mit einem Trick funktioniert auch das ausblenden eines Tabs.
    Einfach mit _GUICtrlTab_DeleteItem das Tab löschen, die auf diesem Tab enthaltenen Controls bleiben erhalten.
    Um den Tab wieder sichtbar zu machen, einfach einen neuen Tab mit _GUICtrlTab_InsertItem erstellen.
    !!!!Wichtig!!! das funktioniert nur mit dem letzten Tab einwandfrei.

    Spoiler anzeigen
    [autoit]

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

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $hTab = GUICtrlCreateTab(32, 56, 537, 337) ; !!!
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSeite = GUICtrlCreateTabItem("Seite") ; !!!
    $Button1 = GUICtrlCreateButton("Tab 3 zeigen", 440, 304, 100, 25, $WS_GROUP)
    GUICtrlSetState($Button1,$GUI_DISABLE)
    $Button2 = GUICtrlCreateButton("Tab 3 ausblenden", 440, 336, 100, 25, $WS_GROUP)
    $Tab1 = GUICtrlCreateTabItem("1")
    $Button3 = GUICtrlCreateButton("Botton Tab 1", 440, 336, 75, 25, $WS_GROUP)
    $Tab2 = GUICtrlCreateTabItem("2")
    $Button4 = GUICtrlCreateButton("Botton Tab 2", 440, 336, 75, 25, $WS_GROUP)
    $Tab3 = GUICtrlCreateTabItem("3")
    $Button5 = GUICtrlCreateButton("Botton Tab 3", 440, 336, 75, 25, $WS_GROUP)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    _GUICtrlTab_SetCurFocus($hTab,0 )
    MsgBox(4160, "Information", "Aktueller Fokus: " & _GUICtrlTab_GetCurFocus($hTab))
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _GUICtrlTab_InsertItem($hTab, 3, "3");Dies fügt das 3. Tab wieder ein, die Controls die am Anfang erstellt wurden sind wieder da
    GUICtrlSetState($Button1,$GUI_DISABLE)
    GUICtrlSetState($Button2,$GUI_ENABLE)
    case $Button2
    _GUICtrlTab_DeleteItem($hTab, 3); Dies löscht das 2. Tab, aber nicht die Conrols auf ihm
    GUICtrlSetState($Button1,$GUI_ENABLE)
    GUICtrlSetState($Button2,$GUI_DISABLE)
    EndSwitch
    WEnd

    [/autoit]

    Um zu veranschaulichen, wo das Problem liegt, hier mal ein falsches Beispiel:

    Spoiler anzeigen
    [autoit]

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

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $hTab = GUICtrlCreateTab(32, 56, 537, 337) ; !!!
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $TabSeite = GUICtrlCreateTabItem("Seite") ; !!!
    $Button1 = GUICtrlCreateButton("Tab 1 zeigen", 440, 304, 100, 25, $WS_GROUP)
    GUICtrlSetState($Button1,$GUI_DISABLE)
    $Button2 = GUICtrlCreateButton("Tab 1 ausblenden", 440, 336, 100, 25, $WS_GROUP)
    $Tab1 = GUICtrlCreateTabItem("1")
    $Button3 = GUICtrlCreateButton("Botton Tab 1", 440, 336, 75, 25, $WS_GROUP)
    $Tab2 = GUICtrlCreateTabItem("2")
    $Button4 = GUICtrlCreateButton("Botton Tab 2", 440, 336, 75, 25, $WS_GROUP)
    $Tab3 = GUICtrlCreateTabItem("3")
    $Button5 = GUICtrlCreateButton("Botton Tab 3", 440, 336, 75, 25, $WS_GROUP)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    _GUICtrlTab_SetCurFocus($hTab,0 )
    MsgBox(4160, "Information", "Aktueller Fokus: " & _GUICtrlTab_GetCurFocus($hTab))
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _GUICtrlTab_InsertItem($hTab, 1, "1");Dies fügt das 3. Tab wieder ein, die Controls die am Anfang erstellt wurden sind wieder da
    GUICtrlSetState($Button1,$GUI_DISABLE)
    GUICtrlSetState($Button2,$GUI_ENABLE)
    case $Button2
    _GUICtrlTab_DeleteItem($hTab, 1); Dies löscht das 2. Tab, aber nicht die Conrols auf ihm
    GUICtrlSetState($Button1,$GUI_ENABLE)
    GUICtrlSetState($Button2,$GUI_DISABLE)
    EndSwitch
    WEnd

    [/autoit]


    Auf dem Tab "Seite" kann das 1. Tab gelöscht werden. Funktioniert soweit einwandfrei, nur die Controls werden um 1 Tab verschoben.
    D.H. der Button des 1. Tab ist auf dem 2, der des 2. Tab auf dem 3.
    Beim wiedereinfügen des Tabs auf Index 1, also dem 2. Tab im Tabcontrol ist alles wieder vorhanden.

  • Hallo
    und nochmal Dank für die Tipps!

    Leider gibt es noch ein Problem mit den TABS!

    Spoiler anzeigen


    _GUICtrlTab_SetCurFocus($Tab,1)
    oder
    _GUICtrlTab_SetCurFocus($Tab,5)

    das Setzen des Focus geht.
    Leider sehe ich aber nicht den Inhalt des Tabs.

    Frage:
    Gibt es noch einen Befehl, der anschließend
    für den TAB (mit Focus) ein Return ausführt!

    Wenn ich von Hand klicke geht das.
    Ich sehe Fokus & Inhalt.
    Mouseclick(left) geht hier auch nicht.

    Eine Idee?

    Grüße
    Ilse :(

    • Offizieller Beitrag

    Wo ist dein Script?
    Ich versteh nicht warum man jeden drauf stoßen muß.
    Helfen wird ungemein leichter, wenn man sieht was überhaupt gemacht oder nicht gemacht wurde.
    Eigentlich sollte _GUICtrlTab_SetCurFocus funktionieren, aber ohne dein Script ist alles nur Vermutung.

  • Hallo Raupi,
    ja ich weiß...

    ich hatte da in meinem Haupt-Script vieles durcheinander
    habe alles nochmal neu aufgebaut und da ging es komischweise.

    Fokus zeigt alles
    und in dem anderen nicht. Wollte nur fragen ob
    der Fokus auch den Inhalt zeigt. Weiß ich nun.

    Kämpf mich noch eine Weile durch...


    Grüße
    Ilse