GUICtrlCreateGraphic, Tabs und der Refresh

  • Hallo Zusammen,

    ich such jetzt schon seit 2 Stunden nach einer Lösung, aber irgendwie hab ich bisher nicht den richtigen Befehl oder Option zum Refreshen gefunden.

    In einem normalen Fenster ohne Tabs funktioniert das GUICtrlCreateGraphic und GUICtrlDelete per Knopfdruck. Sobald ich aber mit Tabs arbeite, klappt es nicht mehr. Oft reicht ein Umschalten der Tabs oder ein Minimieren mit anschließendem Maximieren. Ich hätte das aber gerne ohne diesen Workaround :)

    Was ist die entscheidende Option oder Befehl?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    TestOhneTab()
    TestMitTabs()

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

    ; Gui ohne Tabs
    Func TestOhneTab()

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

    Local Const $MyGuiWidth = 400
    Local Const $MyGuiHeight = 300
    Local Const $SignSize = 15
    Local $MySign1 = -1
    Local $MySign2 = -1
    Local $msg

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

    Local $MyGui = GUICreate("Test ohne Tab", $MyGuiWidth, $MyGuiHeight)

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)

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

    Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)

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

    GUISetState(@SW_SHOW, $MyGui)

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $MyTestButtonDelete
    If $MySign1 == -1 Then
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
    Else
    GUICtrlDelete($MySign1)
    $MySign1 = -1
    GUICtrlDelete($MySign2)
    $MySign2 = -1
    EndIf

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

    Case $MyTestButtonAdd
    If $MySign1 == -1 Then
    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    Else
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
    EndIf
    EndSwitch
    WEnd

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

    GUIDelete($MyGui)

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

    EndFunc ;==>TestOhneTab

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

    ; Gui mit Tabs
    Func TestMitTabs()

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

    Local Const $MyGuiWidth = 400
    Local Const $MyGuiHeight = 300
    Local Const $SignSize = 15
    Local $MySign1 = -1
    Local $MySign2 = -1
    Local $msg

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

    Local $MyGui = GUICreate("Test mit Tabs", $MyGuiWidth, $MyGuiHeight)

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

    Local $MyTabs = GUICtrlCreateTab(0, 0, $MyGuiWidth - 10, $MyGuiHeight - 10)

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

    Local $MyTabOne = GUICtrlCreateTabItem("Tab 1")

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)

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

    Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)

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

    Local $MyTabTwo = GUICtrlCreateTabItem("Tab 2")

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

    Local $MyTestButtonClose = GUICtrlCreateButton("Close", $MyGuiWidth - 150, $MyGuiHeight - 150, 50, 20)

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

    GUICtrlCreateTabItem("") ; close tabitem creation

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

    GUISetState(@SW_SHOW, $MyGui)

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $GUI_EVENT_CLOSE, $MyTestButtonClose
    ExitLoop

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

    Case $MyTestButtonDelete
    If $MySign1 == -1 Then
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
    Else
    ; GUISwitch($MyGui, $MyTabs)
    GUISwitch($MyGui, $MyTabOne)

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

    GUICtrlDelete($MySign1)
    $MySign1 = -1
    GUICtrlDelete($MySign2)
    $MySign2 = -1
    EndIf

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

    Case $MyTestButtonAdd
    If $MySign1 == -1 Then
    ; GUISwitch($MyGui, $MyTabs)
    GUISwitch($MyGui, $MyTabOne)

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    ; GUISetState(@SW_SHOW, $MyGui)
    Else
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
    EndIf
    EndSwitch
    WEnd

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

    GUIDelete($MyGui)

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

    EndFunc ;==>TestMitTabs

    [/autoit]

    Besten Dank und happy computing!
    R@iner

    Einmal editiert, zuletzt von skyteddy (26. November 2009 um 16:51)

  • GuiCtrlCreateTabItem("") fehlte ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    ;~ TestOhneTab()
    TestMitTabs()

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

    ; Gui ohne Tabs
    Func TestOhneTab()

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

    Local Const $MyGuiWidth = 400
    Local Const $MyGuiHeight = 300
    Local Const $SignSize = 25
    Local $MySign1 = -1
    Local $MySign2 = -1
    Local $msg

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

    Local $MyGui = GUICreate("Test ohne Tab", $MyGuiWidth, $MyGuiHeight)

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)

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

    Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)

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

    GUISetState(@SW_SHOW, $MyGui)

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $MyTestButtonDelete
    If $MySign1 == -1 Then
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
    Else
    GUICtrlDelete($MySign1)
    $MySign1 = -1
    GUICtrlDelete($MySign2)
    $MySign2 = -1
    EndIf

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

    Case $MyTestButtonAdd
    If $MySign1 == -1 Then
    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    Else
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
    EndIf
    EndSwitch
    WEnd

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

    GUIDelete($MyGui)

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

    EndFunc ;==>TestOhneTab

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

    ; Gui mit Tabs
    Func TestMitTabs()

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

    Local Const $MyGuiWidth = 400
    Local Const $MyGuiHeight = 300
    Local Const $SignSize = 15
    Local $MySign1 = -1
    Local $MySign2 = -1
    Local $msg

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

    Local $MyGui = GUICreate("Test mit Tabs", $MyGuiWidth, $MyGuiHeight)

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

    Local $MyTabs = GUICtrlCreateTab(0, 0, $MyGuiWidth - 10, $MyGuiHeight - 10)

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

    Local $MyTabOne = GUICtrlCreateTabItem("Tab 1")

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)

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

    Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)

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

    Local $MyTabTwo = GUICtrlCreateTabItem("Tab 2")

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

    Local $MyTestButtonClose = GUICtrlCreateButton("Close", $MyGuiWidth - 150, $MyGuiHeight - 150, 50, 20)

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

    GUICtrlCreateTabItem("") ; close tabitem creation

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

    GUISetState(@SW_SHOW, $MyGui)

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $GUI_EVENT_CLOSE, $MyTestButtonClose
    ExitLoop

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

    Case $MyTestButtonDelete
    If $MySign1 == -1 Then
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
    Else
    ; GUISwitch($MyGui, $MyTabs)
    GUISwitch($MyGui, $MyTabOne)

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

    GUICtrlDelete($MySign1)
    $MySign1 = -1
    GUICtrlDelete($MySign2)
    $MySign2 = -1
    EndIf

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

    Case $MyTestButtonAdd
    If $MySign1 == -1 Then
    ; GUISwitch($MyGui, $MyTabs)
    GUISwitch($MyGui, $MyTabOne)

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

    $MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

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

    $MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    GUICtrlSetState(-1, $GUI_ONTOP) ; <--

    GuiCtrlCreateTabItem("") ; <--- hier ;)

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

    ; GUISetState(@SW_SHOW, $MyGui)
    Else
    MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
    EndIf
    EndSwitch
    WEnd

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

    GUIDelete($MyGui)

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

    EndFunc ;==>TestMitTabs

    [/autoit]
  • Super, vielen Dank. Oben vor dem GUISetState(@SW_SHOW, $MyGui) hatte ich GUICtrlCreateTabItem("") schon drin, aber unten nicht!

    Merci nochmal für die schnelle Hilfe und weiterhin happy computing!
    R@iner