Func probleme

  • HI
    wenn ich in meinem Programm vom ersten zum zweiten fenster gehe geht alles
    aber wenn ich dann vom 2 zum 3 gehe und das dritte wiederschlies giebt es beim 2 ein problem

    [autoit]

    #include <GUIConstantsEx.au3>
    start()

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

    Func Start()
    GUICreate("1 Fenster")
    $Button_8 = GUICtrlCreateButton("Ändern",1,1,90,25)

    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop
    case $msg_1 = $button_8
    Name()
    EndSelect
    WEnd
    GUIDelete()
    EndFunc

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

    Func name()
    GUICreate("2 Fenster")
    $Button_9 = GUICtrlCreateButton("Ändern",1,1,90,25)

    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop
    case $msg_1 = $button_9
    tele()
    EndSelect
    WEnd
    GUIDelete()
    EndFunc

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

    Func Tele()
    GUICreate("3 Fenster")


    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop

    EndSelect
    WEnd
    GUIDelete()
    EndFunc

    [/autoit]

    bitte helft mir

    • Offizieller Beitrag

    Dein Problem liegt daran, das Du GuiDelete keinen Parameter mitgibst. Versuch mal das :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    start()

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

    Func Start()
    $Gui1 = GUICreate("1 Fenster")
    $Button_8 = GUICtrlCreateButton("Ändern",1,1,90,25)

    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop
    case $msg_1 = $button_8
    Name()
    EndSelect
    WEnd
    GUIDelete($Gui1)
    EndFunc

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

    Func name()
    $Gui2 = GUICreate("2 Fenster")
    $Button_9 = GUICtrlCreateButton("Ändern",1,1,90,25)

    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop
    case $msg_1 = $button_9
    tele()
    EndSelect
    WEnd
    GUIDelete( $Gui2)
    EndFunc

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

    Func Tele()
    $Gui3 = GUICreate("3 Fenster")


    GUISetState()

    While 1
    $msg_1 = GUIGetMsg()


    Select
    Case $msg_1 = $GUI_EVENT_CLOSE
    ExitLoop

    EndSelect
    WEnd
    GUIDelete($Gui3)
    EndFunc

    [/autoit]

    Edit : Zur Erklärung, Aufruf von GuiDelete ohne einen Handel zur Gui löscht immer das zuletzt erstellte Fenster . Wenn du also die Func Tele aufrufst von Func Name aus ,dann wird bei schließen der Gui die Gui gelöscht . Wenn du dann die Schleife der Func Name verlässt wird GuiDelete versuchen die Gui aus Func Tele zu löschen . Wenn du die Schleife von Func Name natürlich verlässt ohne vorher Func Tele aufgerufen zu haben , dann wird mit GuiDelete wieder die richtige Gui gelöscht . Das ist so weil die zu letzt ertellte Gui die von Func Name war. Also in Zukunft immer GuiCreate einer Variable zuordnen. Dann hast du keine Probleme wenn du GuiDelete ( $var) aufrufst. $var einfach mit dem Variablennamen aus Guicreate ersetzen. Noch Fragen ?