Frage zu Tabitems

  • Hab mich heut das erstemal mit Tabs beschäftigt, da ich ein bestehendes Programm erweitern möchte und dies mit einem Tab realisiert werden soll. Nun ergibt sich allerdings ein kleines Problem, denn ich möchte bestehende Elemente von der Startseite, welche zukünftig Tab1 sein wird auch in Tab2 verwenden ohne diese neu zu erstellen. Da nicht alle Elemente benötigt werden und in Tab2 noch andere hinzukommen müsste ich also wissen wie und ob es möglich ist einzelne Objekte wie z.B. Dropdowns zwei oder mehreren Tabs zuzuweisen.

    Hier mal ein kleines Beispiel das ich zum testen verwende. Die Progressbar soll in beiden Tabs zusehen sein und auch in beiden aktualisiert werden, der Button soll nur in Tab2 zu sehen sein.
    Im Beispiel habe ich die Progressbar mit selbem Variablenname nach der Erstellung des 2. Tabs neu erstellt, dies hat jedoch zur Folge dass nur die 2. Progressbar aktualisiert wird:


    Einmal editiert, zuletzt von misterspeed (12. November 2010 um 15:57)

  • Hallo Misterspeed,

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=

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

    $prozent = 0

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Tab1 = GUICtrlCreateTab(32, 24, 553, 393)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Progress1 = GUICtrlCreateProgress(96, 112, 281, 129)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")

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

    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    $Button1 = GUICtrlCreateButton("Button1", 152, 300, 129, 89, $WS_GROUP)
    GUICtrlCreateTabItem(""); Beendet die Tab Definition

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

    GUICtrlSetState(-1,$GUI_SHOW)

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

    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    progress()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    func progress()
    if $prozent < 100 Then
    $prozent = $prozent + 1
    GUICtrlSetData($Progress1, $prozent)
    Sleep(100)
    EndIf

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

    EndFunc

    [/autoit]

    PS.: Hilfe lesen bildet

    mfg autoBert

  • Dank dir, aber so kann ich das leider im eigentlichen Programm nicht umsetzen, dafür müsste dann die Rehenfolge der einzelnen Elemente im Quellcode verändert werden, was zwar in der Theorie machbar sein dürfte, dann aber Probleme aufwirft was die Übersicht anbelangt. Auch befinden sich bei der GUI Erstellung mehrer Funktionsaufrufe die den Inhalt der erzeugten Elemente liefern und sich auf Elemente auswirken die einige Zeilen später erstellt werden. Wäre einfach zu aufwendig da nachträglich Änderungen an der Reihenfolge vorzunehmen.

    Hab das ganze nun statt mit Tabs über einen Modus-Button gelöst der nichtbenötigte Elemente ausblendet und die des anderen Modus einblendet bzw umgekehrt. Dadurch musste ich auch das Design nicht grossartig ändern um Platz für die Tabs zu schaffen.

    Werde mir das Thema Tabs aber im nächsten Programm dann nochmals genauer anschauen und von Anfang an einbauen. ;)