gui über func aufrufen verschwindet direkt

  • Hallo,
    ich bin noch ein anfänger und hab für übungszwecke einen sinnlosen script geschrieben
    wenn ich ihn starte öffnet und schließt sich die gui direkt wieder
    wenn ich while1 sleep ( 1000 ) wend in die main einfüge bleibt sie offen aber ich kann keinen button oder exit drücken

    Spoiler anzeigen
    [autoit]


    Dim $Input1, $Input2, $Input3, $Input4, $Input5, $Input6, $GUI, $Label1, $Label2, $Label3, $Label4, $Label5, $Label6, $GUI_EVENT_CLOSE

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

    _Main ()

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

    Func _Main ()
    $GUI = GUICreate("test", 266, 382, 189, 123)
    $Input1 = GUICtrlCreateInput("", 128, 40, 121, 21)
    $Input2 = GUICtrlCreateInput("", 128, 88, 121, 21)
    $Input3 = GUICtrlCreateInput("", 128, 136, 121, 21)
    $Input4 = GUICtrlCreateInput("", 128, 184, 121, 21)
    $Input5 = GUICtrlCreateInput("", 128, 232, 121, 21)
    $Input6 = GUICtrlCreateInput("", 128, 280, 121, 21)
    $Start = GUICtrlCreateButton("Start", 88, 336, 75, 25)
    GUICtrlSetOnEvent($Start, "_Start")
    $Label1 = GUICtrlCreateLabel("Input1", 24, 40, 34, 17)
    $Label2 = GUICtrlCreateLabel("Input2", 24, 88, 34, 17)
    $Label3 = GUICtrlCreateLabel("Input3", 24, 136, 34, 17)
    $Label4 = GUICtrlCreateLabel("Input4", 24, 184, 34, 17)
    $Label5 = GUICtrlCreateLabel("Input5", 24, 232, 34, 17)
    $Label6 = GUICtrlCreateLabel("Input6", 24, 280, 34, 17)
    GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetState(@SW_SHOW)
    While 1
    Sleep ( 1000 )
    WEnd

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

    EndFunc

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _Start()
    GUIDelete()

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

    $Form1 = GUICreate("ausgabe", 267, 217, 192, 124)
    $Edit1 = GUICtrlCreateEdit($Input1 &@CRLF& $Input2 &@CRLF& $Input3 &@CRLF& $Input4 &@CRLF& $Input5 &@CRLF& $Input6, 24, 24, 201, 169)
    GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)

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

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

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

    EndSwitch
    WEnd

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

    Exit
    EndFunc ;==>_Start

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

    Exit

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

    was muss ich ändern?
    mfg Bulli

  • Da fehlt

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/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"

  • Du musst

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]


    einfügen, dann klappt's bei mir.

    //Edit: Da war ich wohl zu langsam ;(

  • danke jetz bleibt die zwar offen aber
    der exit buton funktioniert nicht und das edit fenster schließt jetz auch direkt
    ?(
    cartan bekommt den 1 platz^^ :thumbup:

  • der exit buton funktioniert nicht

    das liegt an der zeile:

    [autoit]

    GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit]


    richtig müsste sie heißen

    [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit]

    da $GUI_EVENT_CLOSE kein control ist ^^

  • Rein theoretisch schon, aber dann bricht das Script ab...

    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"

  • :rofl: :rofl: :rofl:

    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit]

    Fehlt... :D

    edit: Oh, sorry für den doppel Post :pinch:

    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"

  • Hallo Bulli,

    hier mal meine Version:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1) ;ONEvent Mode.

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

    Dim $Input1, $Input2, $Input3, $Input4, $Input5, $Input6, $GUI, $Label1, $Label2, $Label3, $Label4, $Label5, $Label6

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

    _Main()

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

    Func _Main()
    $GUI = GUICreate("test", 266, 382, 189, 123)
    $Input1 = GUICtrlCreateInput("", 128, 40, 121, 21)
    $Input2 = GUICtrlCreateInput("", 128, 88, 121, 21)
    $Input3 = GUICtrlCreateInput("", 128, 136, 121, 21)
    $Input4 = GUICtrlCreateInput("", 128, 184, 121, 21)
    $Input5 = GUICtrlCreateInput("", 128, 232, 121, 21)
    $Input6 = GUICtrlCreateInput("", 128, 280, 121, 21)
    $Start = GUICtrlCreateButton("Start", 88, 336, 75, 25)
    GUICtrlSetOnEvent($Start, "_Start")
    $Label1 = GUICtrlCreateLabel("Input1", 24, 40, 34, 17)
    $Label2 = GUICtrlCreateLabel("Input2", 24, 88, 34, 17)
    $Label3 = GUICtrlCreateLabel("Input3", 24, 136, 34, 17)
    $Label4 = GUICtrlCreateLabel("Input4", 24, 184, 34, 17)
    $Label5 = GUICtrlCreateLabel("Input5", 24, 232, 34, 17)
    $Label6 = GUICtrlCreateLabel("Input6", 24, 280, 34, 17)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetState(@SW_SHOW)
    While 1
    Sleep(1000)
    WEnd

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

    EndFunc ;==>_Main

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _Start()
    Local $onEvent = Opt("GUIOnEventMode", 0) ;ONEvent Mode ausschalten und in Variable Zustand speichern
    ;GUIDelete()

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

    $Form1 = GUICreate("ausgabe", 267, 217, 192, 124)
    $Eingaben = GUICtrlRead($Input1) & @CRLF & GUICtrlRead($Input2) & @CRLF & GUICtrlRead($Input3) & @CRLF & GUICtrlRead($Input4) & @CRLF & GUICtrlRead($Input5) & @CRLF & GUICtrlRead($Input6)
    $Edit1 = GUICtrlCreateEdit($Eingaben, 24, 14, 201, 169)
    $hClose = GUICtrlCreateButton("Schliessen", 24, 190, 201, 25)
    ;GUICtrlSetData(-1, $Eingaben)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $hClose
    ExitLoop

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

    EndSwitch
    WEnd
    GUIDelete($Form1)
    Opt("GUIOnEventMode", $onEvent) ;ONEvent Mode wiederherstellen
    EndFunc ;==>_Start

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

    Exit

    [/autoit]

    da du für die 1. Gui den OnEvent-Modus nehmen wolltest (siehe GuiCtrlSetOnEvent) und für die 2. den MessageLoop-Modus (siehe GuiGetMsg) musst du auch den OnEventModus dementsprechend umschalten. Die Ausgabe im Edit-Feld habe ich auch angepasst (Vorher erschien immer nur Edit1. Üblicherweise skriptet man entweder im OnEvent-Modus oder im MessageLoop-Modus. Es ist aber durhaus möglich beide in einem Skript zu verwenden, im besonderen kommt es öfters bei kleineren Tool-Windows die man universel einbinden will (und deshalb in eine UDF auslagert) praktiziert.
    Das gemeinste an deinem Skript war allerdings, die Deklaration von $GUI_EVENT_CLOSE am Ende der Zeile (so dass ich es übersehen hatte),

    mfg (Auto)Bert

  • Ah ja, wie BugFix AutoBert gesagt hat, hab ich vergessen zu erwähnen, dass man das deklarieren von $GUI_EVENT_CLOSE ausklammern muss... Hab sehr viel geändert, bis ich gemerkt hab, dass das auch falsch war und habs dann vergessen zu posten...

    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"

    Einmal editiert, zuletzt von Cartan12 (15. Februar 2010 um 18:29)