Sign in to follow this  
Followers 0

Starting & Stopping within GUI

6 posts in this topic

Posted

Hi Guys

Building an app in work and need some expert assistance.

I have a GUI with a start/stop button. When I click it, it executes a function. This function reads a log and returns a status. I am using:

case $my_button
MyFunction()
AdlibRegister("My Function here", $interval)

$interval is just a refresh time like 10 secs, 20 secs etc.

If clicked a second time, I want it to STOP doing what it's doing. I'm not sure how to do this. The alternative is to just exit but I'd rather stop and remain in app.

Any help appreciated.

Thanks.

Share this post


Link to post
Share on other sites



Posted

kiffab,

Perhaps like this: ;)

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 500, 500)

$cButton = GUICtrlCreateButton("Run", 10, 10, 80, 30)

GUISetState()

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cButton
            Switch GUICtrlRead($cButton)
                Case "Run"
                    MsgBox(0, "Hi", "Function Running")
                    AdlibRegister("_Run", 1000)
                    GUICtrlSetData($cButton, "Stop")
                Case "Stop"
                    MsgBox(0, "Hi", "Function Ended")
                    AdlibUnRegister("_Run")
                    GUICtrlSetData($cButton, "Run")
            EndSwitch
    EndSwitch

WEnd

Func _Run()
    ConsoleWrite("Running at " & @SEC & @CRLF)
EndFunc

Any help? :)

M23

Share this post


Link to post
Share on other sites

Posted

adlibunregister !!! DOH!!!

Thanks buddy :guitar:

Share this post


Link to post
Share on other sites

Posted (edited)

One complication... I am using an image as my button. :oops:

Can the same thing be achieved?

The button has an initial stop type image (red light). When clicked, it changes to green (on).

Also, I should add it's not technically a "button" - I'm using GUICtrlCreatePic. Sorry.

Edited by kiffab

Share this post


Link to post
Share on other sites

Posted

kiffab,

I am using an image as my button. Can the same thing be achieved?

Very easily: :)

#include <GUIConstantsEx.au3>

Global $iColour = "Red"

$sPath = StringRegExpReplace(@AutoItExe, "(^.*)(.*)", "1")
$sRed = $sPath & "ExamplesGUIAdvancedImagesRed.bmp"
$sGrn = $sPath & "ExamplesGUIAdvancedImagesGreen.bmp"

$hGUI = GUICreate("Test", 500, 500)

$cPic = GUICtrlCreatePic($sRed, 10, 10, 30, 30)

GUISetState()

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cPic
            Switch $iColour
                Case "Red"
                    MsgBox(0, "Hi", "Function Running")
                    AdlibRegister("_Run", 1000)
                    GUICtrlSetImage($cPic, $sGrn)
                    $iColour = "Green"
                Case "Green"
                    MsgBox(0, "Hi", "Function Ended")
                    AdlibUnRegister("_Run")
                    GUICtrlSetImage($cPic, $sRed)
                    $iColour = "Red"
            EndSwitch
    EndSwitch

WEnd

Func _Run()
    ConsoleWrite("Running at " & @SEC & @CRLF)
EndFunc

M23

Share this post


Link to post
Share on other sites

Posted

Perfect! Works a treat and I understand exactly what you've done there. This will be useful for other parts of my app. Thank you :)

Share this post


Link to post
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
Sign in to follow this  
Followers 0