Nachträglich einem Tab ein Element hinzufügen

  • Hi Leute,

    Ich hab wieder mal eine Frage,
    Ist es Irgendwie möglich diesem Tab noch ein Element hinzuzufügen? Denn so wie ich es da gemacht hab wird es ja nicht im Tab registiriert, das ist ja auch klar, nur wie kann man das machen?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    $Form2 = GUICreate("Form2", 405, 294, 302, 218)
    $Tab1 = GUICtrlCreateTab(2, 2, 399, 193)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
    $TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
    GUICtrlCreateTabItem("")
    $Button1 = GUICtrlCreateButton("neune Text einfügen", 150, 198, 117, 25, $WS_GROUP)
    $Combo1 = GUICtrlCreateCombo("", 2, 200, 145, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "TabSheet1|TabSheet2")
    $Input1 = GUICtrlCreateInput("Input1", 2, 226, 397, 21)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlCreateLabel (GUICtrlRead ($Input1),20,100)
    EndSwitch
    WEnd

    [/autoit]

    Danke im voraus

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (8. Dezember 2009 um 16:51)

  • Hallo Jam00,

    schau dir einmal dieses Skript an:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <guitab.au3>
    #include <guitreeview.au3>

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

    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)

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

    Global $hGui, $hTab, $hbtnInsTab, $hbtnNewTabItem, $hbtnOK, $hTabGui[10], $hnewTree[10], $nextTabID = 0, $aktTabID = -1

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

    $hGui = GUICreate("Multiple TABs mit Icons", 520, 250, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX));BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hTab = GUICtrlCreateTab(5, 5, 510, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '_SwitchTab')
    $hbtnInsTab = GUICtrlCreateButton("Neuer Tab", 40, 200, 70, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)
    GUICtrlSetOnEvent(-1, 'InsertTab')
    $hbtnNewTabItem = GUICtrlCreateButton("&Neues TabItem", 150, 200, 70, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)
    GUICtrlSetOnEvent(-1, 'NewItem')
    ;GUICtrlSetState(-1,$GUI_HIDE)
    $hbtnOK = GUICtrlCreateButton("Be&enden", 350, 200, 70, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)
    GUICtrlSetOnEvent(-1, '_End')
    GUISetState()
    GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
    GUISetState()
    While 1
    Sleep(125)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _SwitchTab()
    Local $i = _GUICtrlTab_GetCurSel($hTab)
    If $aktTabID = -1 Then $aktTabID = 0
    ConsoleWrite($i & @CRLF)
    GUISetState(@SW_HIDE, $hTabGui[$aktTabID])
    GUISetState(@SW_SHOW, $hTabGui[$i])
    $aktTabID = $i
    EndFunc ;==>_SwitchTab

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

    Func InsertTab()
    ConsoleWrite($nextTabID & @CRLF)
    _GUICtrlTab_InsertItem($hTab, $nextTabID, "Tab " & $nextTabID) ;<===================
    GUICtrlSetImage(-1,"C:\Dokumente und Einstellungen\Bert\Eigene Dateien\Beetle7.ico")
    $hTabGui[$nextTabID] = GUICreate("", 500, 150, 10, 25, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hGui)
    GUISetBkColor(0xff0000)
    Size_TabGui($nextTabID)
    GUISetState()
    GUISwitch($hTabGui[$nextTabID])
    GUICtrlSetImage($hTabGui[$nextTabID],"C:\Dokumente und Einstellungen\Bert\Eigene Dateien\Beetle7.ico")
    $hnewTree[$nextTabID] = GUICtrlCreateTreeView(5, 5, 490, 140)
    ;GUICtrlSetResizing(-1, $GUI_DOCKLeft + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    GUICtrlCreateTreeViewItem("Tree" & $nextTabID & " Item 1", $hnewTree[$nextTabID])
    GUICtrlCreateTreeViewItem("Tree" & $nextTabID & " Item 2", $hnewTree[$nextTabID])
    If $aktTabID > -1 Then GUISetState(@SW_HIDE, $hTabGui[$aktTabID])
    _GUICtrlTab_SetCurFocus($hTab, $nextTabID)
    GUISetState($GUI_SHOW, $hTabGui[$nextTabID])
    $aktTabID = $nextTabID
    $nextTabID = $nextTabID + 1
    ;GUICtrlSetState($hbtnInsTab,$GUI_SHOW)
    EndFunc ;==>InsertTab

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

    Func NewItem()
    GUICtrlCreateTreeViewItem("Tree" & $aktTabID & " Item " & random(3,20,1), $hnewTree[$aktTabID])
    EndFunc

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

    Func WM_SIZE($hWnd, $iMsg, $iWParam, $iLParam)
    Local $i
    For $i = 0 To $nextTabID - 1
    Size_TabGui($i)
    Next
    EndFunc ;==>WM_SIZE

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

    Func Size_TabGui($i)
    Local $aMGPos
    $aMGPos = WinGetClientSize($hGui)
    WinMove($hTabGui[$i], "", 5, 25, $aMGPos[0] - 10, $aMGPos[1] - 60)
    GUICtrlSetPos($hnewTree[$i],5, 5, $aMGPos[0]-20, $aMGPos[1] - 70)
    EndFunc ;==>Size_TabGui

    [/autoit]

    mfg (Auto)Bert

  • Hallo gixx,

    einfach in Zeile 9:

    Spoiler anzeigen

    Global $hGui, $hTab, $hbtnInsTab, $hbtnNewTabItem, $hbtnOK, $hTabGui[10], $hnewTree[10], $nextTabID = 0, $aktTabID = -1

    die Arrays für $hTabGui und $hNewTree auf die gewünschte Anzahl erhöhen,

    mfg (Auto)Bert

    • Offizieller Beitrag

    Wenn du mehr TabItems erstellen willst mußt du in Zeile 9 die Dimensionierung von $hTabGui abändern.

    [autoit]

    Global $hGui, $hTab, $hbtnInsTab, $hbtnNewTabItem, $hbtnOK, $hTabGui[10], $hnewTree[10], $nextTabID = 0, $aktTabID = -1

    [/autoit]


    Einfach den Wert von [10] auf den gewünschten Wert abändern.

    Edit wieder mal zu langsam und hatte auch $hNewTree vergessen. :thumbdown: