Hilfe bei For Schleife und Button

  • hallo,
    ich bin auf der Suche nach einer Möglichkeit, eine For Schleife durch das Drücken eines Buttons abzubrechen. Aber in einer GUI auch die gesammte Funktion mit dem Teil nach NEXT.

    Also,
    ich rufe durch drücken eines Buttons eine Funktion auf, in der eine For schleife ist... wenn man den Button nochmal Drückt soll die Schleife abbrechen und nomrmal weiter laufen...
    Danke schon mal falls jemand eine lösung weis
    MFg

  • Du kannst in der Schleife mit GuiGetMsg() prüfen ob der Button gedrückt wurde und darauf reagieren. Weitergehende Hilfe kann nur mit dem kompletten Skript erfolgen,

    mfg autoBert

  • schleife abbrechen mit exitloop, wenn ichs richtig verstanden hab, was du willst?!

  • [autoit]

    $do = 0
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $do = $do + 1

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

    EndSwitch

    If $do = 1 Then
    For ....

    Next
    EndIf

    If $do = 2 then
    $do = 0
    ExitLoop
    EndIf
    WEnd

    [/autoit]

    Habs jetzt nicht ausprobiert, ist auch bisschen schlampig, dürfte aber im Ansatz helfen.
    Ist es überhaupt das, was du meinst?

  • Ich hätte es so gemacht :

    Sobald der Button gedrückt wurde, wird ein Func aufgrufen und die alte GUI versteckt. Dann halt eine neue GUI erstellen, die genau auf den selben Stellen ist wie vorher und den Button einen anderen Namen und eine Variable zuweisen.

    Und dann Case $NamedesneuenButtons

    und dann halt mit Exit Loop

    Gibt bestimmt noch platzschonendere Wege als meine, aber egal.

  • ich meinte etwa soetwas hier:

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

    $Form1 = GUICreate("Testform", 217, 135, 193, 168)
    $input1 = GUICTRLCREATEINPUT ("hier Zahl eintragen",120,100)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $do = $do + 1
    IF $do=1 THen
    $input1readet=GUICTRLREAD($input1)
    Start ()
    EndIf
    If $do = 2 THen
    ende ()
    EndIf
    EndSwitch
    WEnd

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

    Func start()
    For $1=1 to $input1readet Step 1
    MsgBoX(0,"hello",$1)
    Next
    MsgBoX(0,"ende","durchgelaufen")
    EndFunc

    [/autoit]


    Nun meine Frage nochmal richtig gestellt. Wie kann ich hier während der FOR schleife den button nochmal abfragen. Dann sollte nicht das nach dem next kommen, sondern die Funktion ENDE().

    hoffe jetzt ist das verständlich

    Einmal editiert, zuletzt von Lol11 (15. Juni 2011 um 16:06)