Endlosschleife in GUI

  • Hallo Leute, das hier ist mein erster Beitrag :)
    Wie die Überschrift schon zu erkennen gibt habe ich ein Problem mit GUI.

    Und zwar, dass sobald GUI in einer Funktion in einer Endlosschleife steckt kann man keine erneute funktion (per Button im GUI-Fenster) aufrufen.

    Beispiel:


    Falls das Script nun in die Endlosschleife bei BlaBla wechselt kann man nichtmehr Funktion BliBli aufrufen.
    Gibt es da eine lösung für mein Problem?
    Wäre euch sehr dankbar, da ich schon in einigen Foren geschaut habe und niemand konnte mir helfen.
    Danke schonmal im vorraus.

    MaddeX

  • Willkommen hier im Forum...
    Kannst Du deinen Code ziegen..
    Also wenn Du von der einen Endlos schleife in die nächste Wechselst, dann werden nur noch die Zeilen ausgeführt die in der "neuen" Endlos Schleife sind. Diese Tatsache lässt sich nicht ändern, aber es lässt sich der Code mit sicherheit so gestalten, dass Dein Vorhaben trotzdem funktioniert!

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • es hört sich jetzt villeicht dumm an, aber ich habe kein spezielles skript dafür. Es ist eher so, dass ich in anderen Scripts so eine Funktion kenne, inder eine while / wend schleife stattfindet und trotzdem andere Buttons (z.B. Exit-Button) funktionieren.

    Zufa: Ich möchte das wissen, da ich mein Grundwissen über Autoit speziell GUI erweitern möchte -> man könnte es ja irgenwann mal brauchen.


    Hier mal ein kleines Beispiel (zur anschauung schnell zusammengebastelt)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 201, 89, 193, 125)
    $Button1 = GUICtrlCreateButton("start", 16, 16, 73, 41, 0)
    $Button2 = GUICtrlCreateButton("ende", 104, 16, 73, 41, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ende ()
    func ende ()
    TrayTip("", "beendet", 1)
    exit
    EndFunc
    Case $Button2
    ende ()
    Case $Button1
    while 1
    TrayTip("", "Läuft", 1)
    sleep (1500)
    wend

    EndSwitch
    WEnd

    [/autoit]

    MaddeX

    Einmal editiert, zuletzt von MaddeX (10. November 2008 um 14:37)

  • wieso willst du die traytip (button1) in eine endlos schleifen setzen? Das macht doch überhaupt keinen Sinn!
    Also der Name ENDLOS Schleife sagt doch schon was die Schleife macht!

    Mach doch mal ein Beispiel von dem Befehl in den anderen Sprachen.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • kein Multithread möglich - dein Programmcode wird prozedural abgearbeitet, das heißt wenn du in einer Endlosschleife bist kann die Funktion GetMsg nicht überprüfen, ob ein Event ausgelöst wurde - ebenso so im OnEvent-Modus (soweit ich weiß), es gibt noch die Funktion AdlibEnable(siehe Hilfedatei) mit der du in einem gewissen Intervall eine Funktion aufrufen kannst

  • wieso willst du die traytip (button1) in eine endlos schleifen setzen? Das macht doch überhaupt keinen Sinn!
    Also der Name ENDLOS Schleife sagt doch schon was die Schleife macht!

    Mach doch mal ein Beispiel von dem Befehl in den anderen Sprachen.

    ich weiss, dass es wenig sinn macht, es ist ja auch nur ein Beispiel. Es sollte einfach nur Zeigen, was ich damit meine ^^

    Hab auch schon den OnEventMode ausprobiert.. ohne erfolg.