Kleine Hilfe für Tabs

  • Hallo, ich Grüße euch.

    Ich habe vielleicht nur ein kleines Problem mit dem Tabs.

    1. Mein Beispiel-Script

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>

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

    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration

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

    Global $wGUI, $tf, $tab, $sys1, $sys2, $box, $info, $t

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

    $wGUI = GUICreate("Test-GUI", 388, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'Beenden', $wGUI)

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

    $tab = GUICtrlCreateTab(5, 2, 380, 485)
    $sys1 = GUICtrlCreateTabItem("Tab 1")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)

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

    $box = GUICtrlCreateCheckbox("Test1", 68, 55, 200, 24)

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

    $sys2 = GUICtrlCreateTabItem("Tab 2")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)
    GUICtrlCreateTabItem("") ; Beendet die Tab Definition
    GUICtrlSetState($sys1, $GUI_SHOW) ; erstes Tab Anzeigen
    GUISetState(@SW_SHOW, $wGUI)
    While 1
    If $tf = 1 Then ExitLoop
    Boxckeck()
    WEnd
    GUIDelete($wGUI)
    Exit ; Programmende

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

    Func Beenden()
    $tf = 1
    EndFunc ;==>Raus_hier

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

    Func BoxCkeck()
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 1 And $t = 0 Then
    $info = GUICtrlCreateButton("Info", 17, 58, 47, 15)
    GUICtrlSetOnEvent(-1, "Info")
    $t = 1
    Else
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 0 And $t = 1 Then
    _GUICtrlButton_Destroy($info)
    $t = 0
    EndIf
    EndIf
    EndFunc

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

    Func info()
    GUICtrlSetState($box, $GUI_FOCUS)
    MsgBox(0, "Info-Box", "Box 1")
    EndFunc

    [/autoit]

    2. Ich möchte wenn die Ckeckbox an ist, nicht das der Button auf Tab 2 erscheint.

    3. Wie kann man Feststellen welcher Tab aktiviert ist (Beispiel oder Link bitte)


    Danke für eure Hilfe

    MFG
    tv_freeze

    Einmal editiert, zuletzt von tv_freeze (20. Juni 2010 um 20:36)

  • So?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>

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

    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration

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

    Global $wGUI, $tf, $tab, $sys1, $sys2, $box, $info, $t

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

    $wGUI = GUICreate("Test-GUI", 388, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'Beenden', $wGUI)

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

    $tab = GUICtrlCreateTab(5, 2, 380, 485)
    $sys1 = GUICtrlCreateTabItem("Tab 1")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)

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

    $box = GUICtrlCreateCheckbox("Test1", 68, 55, 200, 24)

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

    $sys2 = GUICtrlCreateTabItem("Tab 2")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)
    GUICtrlCreateTabItem("") ; Beendet die Tab Definition
    GUICtrlSetState($sys1, $GUI_SHOW) ; erstes Tab Anzeigen
    GUISetState(@SW_SHOW, $wGUI)
    While 1
    If $tf = 1 Then ExitLoop
    Boxckeck()
    WEnd
    GUIDelete($wGUI)
    Exit ; Programmende

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

    Func Beenden()
    $tf = 1
    EndFunc ;==>Raus_hier

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

    Func BoxCkeck()
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 1 And $t = 0 Then
    GUISwitch($wGUI, $sys2)
    $info = GUICtrlCreateButton("Info", 17, 58, 47, 15)
    GUICtrlSetOnEvent(-1, "Info")
    $t = 1
    Else
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 0 And $t = 1 Then
    _GUICtrlButton_Destroy($info)
    $t = 0
    EndIf
    EndIf
    EndFunc

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

    Func info()
    GUICtrlSetState($box, $GUI_FOCUS)
    MsgBox(0, "Info-Box", "Box 1")
    EndFunc

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Cartan12

    Haste das Script mal getestet ?

    Funktioniert nicht so ganz... ???

    Wenn ich GUISwitch($wGUI, $sys2) anwende, wird der Button auf Tab2 dargestellt.
    Wenn Du die Tabs 1 und Tab 2 anklicks wird alles nicht mehr richtig dargestellt. (Bei mir...)

    Danke

    2 Mal editiert, zuletzt von tv_freeze (20. Juni 2010 um 20:21)

  • Hallo tv_freeze,

    zu

    • abgeändertes Skript

      Spoiler anzeigen
      [autoit]

      #include <GUIConstantsEx.au3>
      #include <GuiButton.au3>

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

      Opt('GUIOnEventMode', 1)
      Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration

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

      Global $wGUI, $tf, $tab, $sys1, $sys2, $box, $info, $t

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

      $wGUI = GUICreate("Test-GUI", 388, 550)
      GUISetOnEvent($GUI_EVENT_CLOSE, 'Beenden', $wGUI)

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

      Global $info2 = GUICtrlCreateButton("Info2", 17, 508, 47, 15) ;wieder löschen
      GUICtrlSetOnEvent(-1, "Info2")

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

      $tab = GUICtrlCreateTab(5, 2, 380, 485)
      $sys1 = GUICtrlCreateTabItem("Tab 1")
      GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)

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

      $box = GUICtrlCreateCheckbox("Test1", 68, 55, 200, 24)

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

      $sys2 = GUICtrlCreateTabItem("Tab 2")
      GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)
      $info = GUICtrlCreateButton("Info", 17, 58, 47, 15) ;verschieben dahin wo du ihn benötigst
      GUICtrlSetOnEvent(-1, "Info")
      GUICtrlCreateTabItem("") ; Beendet die Tab Definition
      GUICtrlSetState($sys1, $GUI_SHOW) ; erstes Tab Anzeigen
      GUISetState(@SW_SHOW, $wGUI)
      While 1
      If $tf = 1 Then ExitLoop
      Boxckeck()
      WEnd
      GUIDelete($wGUI)
      Exit ; Programmende

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

      Func Beenden()
      $tf = 1
      EndFunc ;==>Beenden

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

      Func BoxCkeck()
      If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 1 And $t = 0 Then
      GUICtrlSetState($info, $GUI_SHOW)
      $t = 1
      Else
      GUICtrlSetState($info, $GUI_HIDE)
      _GUICtrlButton_Destroy($info)
      $t = 0
      EndIf
      EndFunc ;==>BoxCkeck

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

      Func info()
      GUICtrlSetState($box, $GUI_FOCUS)
      MsgBox(0, "Info-Box", "Box 1")
      EndFunc ;==>info
      Func info2()
      Local $msg, $i= GUICtrlRead($tab,1)
      Switch $i
      case $sys1
      $msg = "SYS 1"
      case $sys2
      $msg = "SYS 2"
      EndSwitch
      MsgBox(0,"Aktiver Tab-Index: " & GUICtrlRead($tab),$msg)
      EndFunc ;==>info

      [/autoit]
    • habe ich so interpretiert dass der Button $info2 eigentlich auf Tab2 sein soll


    • Zitat von Hilfe


      Tab Die Nummer oder Control-ID des ausgewählten Tabs in Abhängigkeit von dem erweiterten Parameterwert

      dafür habe ich einen 2. Info-Button unterhalb der TabItems eingefügt. Es werden beide Möglichkeiten im Skript verwendet

    mfg (Auto)Bert

  • Ich habe gerade eine Lösung gefunden.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>

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

    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration

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

    Global $wGUI, $tf, $tab, $sys1, $sys2, $box, $info, $t

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

    $wGUI = GUICreate("Test-GUI", 388, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'Beenden', $wGUI)

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

    $tab = GUICtrlCreateTab(5, 2, 380, 485)
    $sys1 = GUICtrlCreateTabItem("Tab 1")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)

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

    $box = GUICtrlCreateCheckbox("Test1", 68, 55, 200, 24)

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

    $sys2 = GUICtrlCreateTabItem("Tab 2")
    GUICtrlCreateGroup("Allgemein", 10, 30, 368, 443)
    GUICtrlCreateTabItem("") ; Beendet die Tab Definition
    GUICtrlSetState($sys1, $GUI_SHOW) ; erstes Tab Anzeigen
    GUISetState(@SW_SHOW, $wGUI)
    While 1
    If $tf = 1 Then ExitLoop
    Boxckeck()
    WEnd
    GUIDelete($wGUI)
    Exit ; Programmende

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

    Func Beenden()
    $tf = 1
    EndFunc ;==>Raus_hier

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

    Func BoxCkeck()
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 1 And $t = 0 Then
    GUISwitch($wGUI, $sys1) ; NEU
    $info = GUICtrlCreateButton("Info", 17, 58, 47, 15)
    GUICtrlSetOnEvent(-1, "Info")
    GUICtrlCreateTabItem("") ; NEU gelesen, alles was danach kommt ist auf allen Tabs sichtbar !!!
    $t = 1
    Else
    If BitAND(GUICtrlRead($box), $GUI_CHECKED) = 0 And $t = 1 Then
    _GUICtrlButton_Destroy($info)
    $t = 0
    EndIf
    EndIf
    EndFunc

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

    Func info()
    GUICtrlSetState($box, $GUI_FOCUS)
    MsgBox(0, "Info-Box", "Box 1")
    EndFunc

    [/autoit]

    autoBert
    1. Script ist OK
    Danke, jetzt weiss ich wie ich die Tabs auslesen kann....
    2. Nein, Button sollte nur auf Tab1 (macht nix)
    3. Keine Hilfe mehr nötig....

    Greetings an: Cartan12 & autoBert

    Big MFG

    tv_freeze