Jump to content

Is it possible to stop and restart a while loop?


Recommended Posts

I'm just messing around right now and I can't figure out how to stop the while loop and restart it again. Actually I can't even get it to stop for some reason.

Objective: Make it so when you press start the 2 top buttons flash back and forth and when you press stop it stops them.

Here's the code:

#include <GUIConstantsEx.au3>
$gui = GUICreate("",200,100)

$b1 = GUICtrlCreateButton("Button 1",0,0,100,30)
$b2 = GUICtrlCreateButton("Button 2",100,0,100,30)
$start = GUICtrlCreateButton("Start",0,50,100,30)
$stop = GUICtrlCreateButton("Stop",100,50,100,30)
GUICtrlSetState($b1,$GUI_DISABLE)

GUISetState()

while 1
   $msg = GUIGetMsg(1)
   Switch $msg[1]
   Case $gui
      Switch $msg[0]
      Case -3
         Exit
      Case $start
         while 1
            If  $msg = $stop Then ExitLoop
         GUICtrlSetState($b1,$GUI_DISABLE)
         Sleep(100)
         GUICtrlSetState($b1,$GUI_ENABLE)
         Sleep(100)
         GUICtrlSetState($b2,$GUI_DISABLE)
         Sleep(100)
         GUICtrlSetState($b2,$GUI_ENABLE)
         Sleep(100)
      WEnd
      EndSwitch
   EndSwitch
WEnd
 

Thanks in advance :)

Edited by gottygolly
Link to comment
Share on other sites

  • Moderators

gottygolly,

I presume the idea is to have a random "enabled" button when you stop - so this should work: :)

#include <GUIConstantsEx.au3>
$gui = GUICreate("", 200, 100)

$b1 = GUICtrlCreateButton("Button 1", 0, 0, 100, 30)
$b2 = GUICtrlCreateButton("Button 2", 100, 0, 100, 30)
$start = GUICtrlCreateButton("Start", 0, 50, 100, 30)
$stop = GUICtrlCreateButton("Stop", 100, 50, 100, 30)
GUICtrlSetState($b1, $GUI_DISABLE)

GUISetState()

While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
        Case $gui
            Switch $msg[0]
                Case $GUI_EVENT_CLOSE
                    Exit
                Case $start
                    While 1
                        GUICtrlSetState($b1, $GUI_DISABLE)
                        GUICtrlSetState($b2, $GUI_ENABLE)
                        If _Check(200) Then ExitLoop
                        GUICtrlSetState($b1, $GUI_ENABLE)
                        GUICtrlSetState($b2, $GUI_DISABLE)
                        If _Check(200) Then ExitLoop
                    WEnd
            EndSwitch
    EndSwitch
WEnd

Func _Check($iDelay)
    $nBegin = TimerInit()
    Do
        Switch GUIGetMsg()
            Case $stop
                Return 1
        EndSwitch
    Until TimerDiff($nBegin) > $iDelay
    Return 0
EndFunc
M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...