Function in GUI mit schleife über Button in Gui beenden ?

  • Hi, habe mal ne Frage zur GUI.

    Also ich habe eine Gui, mit einem Button rufe ich eine Funktion auf die dann eine schleife durchläuft.
    Jetzt hätte ich gerne das durch drücken eines beliebigen Buttons diese schleife beendet wird.

    Ich habe bis jetzt folgendes gemacht.
    HotKeySet("{ESC}", "Beenden")
    In diesem habe ich die schleife unterbrochen.
    Wie könnte man sowas regeln ?
    Kann mir da jemand einen Gedankenanstoss geben ?

    Durch setzen eines Flags ist schlecht, da mit dem gedrückten Button dann die nächste schleife loslaufen soll unter umständen.

    Und das ganze soll ja global funktionieren.

    Danke schon mal im voraus.

    MfG

  • probiers mal mit

    [autoit]


    ExitLoop

    [/autoit]

    einfach bei der Beenden Funktion rein also:

    [autoit]


    Func Beenden()
    ExitLoop
    EndFunc

    [/autoit]

    Edit:
    nur versteh ich net wie du des per button regeln willst? ruf doch einfach ne pause funktion auf wenn da sonst nix passieren soll

    [autoit]


    Do
    ;befehle wie HotKeySet
    Sleep(10)
    Until ""

    [/autoit]

    Padmak

  • Das Problem bei dieser Sache ist, dass AutoIt kein multithreading unterstützt. Da muss man ab und an eben ein wenig tricksen.
    Schau dir mal AdlibEnable an damit kann man zumindest zwei Schleifen gleichzeitig laufen lassen.
    GUICtrlSetOnEvent finde ich ebenfalls als sehr sinnvoll.

  • hast du die schleife schon unterbrochen?
    sollen 2 schleifen gleichzeitig laufen? -> wenn ja dann schau dir den vorschlag von prizma an^^
    wenn nicht dann versuch meins irgendwie einzubauen
    es ist nämlich absolut sinnlos eine schleife per Button zu beenden da dazu ja ne neue schleife gestartet werden muss^^
    wenn du nur 1 schleife brauchst und die erste per ESC beenden willst dann hau einfach da ein Hotkeyset für ESC rein in dem du dann die neue schleife aufrufst

    Zitat

    Durch setzen eines Flags ist schlecht, da mit dem gedrückten Button dann die nächste schleife loslaufen soll unter umständen.

    da du das hier schreibst vermute ich du willst per hotkeyset eine neue aufrufen?
    du könntest natürlich auch (extrem umständlich^^) das ganze so machen:

    [autoit]


    HotKeySet("{ESC}", "Beenden")
    Func Beenden()
    $var = 1
    call ("[deine zu unterbrechende funktion]")
    Endfunc

    [/autoit]


    Und in die schreibst du dann

    [autoit]


    Func [deine zu unterbrechende funktion]()
    ;quelltext
    If $var = 1 Then
    ExitLoop
    EndIf
    EndFunc

    [/autoit]

    @Profis:
    bitte nicht die haare ausreissen wegen dem da is halt ne holzhammermethode^^
    aba sie haut^^(Edit: NICHT)

    Padmak

    Edit:
    bei mir haut irgendwas nicht^^
    ich schau gleich ich ess jez erst

  • Hi erstmal thx für die Antworten.
    Ja ist so die Schleife soll unterbrochen werden.
    Das mit dem Hotkey habe ich mit Exitloop bewerkstelligt.
    So wie du das oben beschrieben hast habe ich mir das schon gebaut gehabt :)

    Also nochmal kurz zur erläuterung.

    Es sollte eigentlich die GUI weiterlaufen, also die schleife die die GUI am leben hält läuft ja.
    Dann eben die andere schleife die durch das drücken eines Buttons beendet werden soll.
    Dann soll eine neue Function aufgerufen werden.
    Es liegt ja hinter jedem Button eine Function.

    Ich werde mir mal die sache mit dem Adlibenable da ansehen, hoffe das ich das verstehe :)

    Mich würde ja Int. wie das mit der GUI von Bugfix funzt, aber dfa steige ich gar nicht durch :(

    Danke nochmal.

    MfG

  • ähm

    Zitat

    1.Es sollte eigentlich die GUI weiterlaufen, also die schleife die die GUI am leben hält läuft ja.
    2.Dann eben die andere schleife die durch das drücken eines Buttons beendet werden soll.
    3.Dann soll eine neue Function aufgerufen werden.
    4.Es liegt ja hinter jedem Button eine Function.

    1. ja die läuft^^ du kannst sie zur not in jede funktion die die gui auch braucht reinhaun
    verlängert aba den code ungemein
    2. welche andere schleife?? im moment läuft nur eine du kannst aba über den button ne andere, ähnliche func ohne die schleife aufrufen
    3. siehe 2.
    4. ja des sollte so sein^^

    vielleicht kannst du zu 2 und 3 noch was sagen^^

    Padmak

  • Hi, ich hatte heute das gleiche Problem.

    Habs relativ einfach gelößt:

    Gruß
    Wolke