Jump to content
Sign in to follow this  
Jester009

For loop problem...

Recommended Posts

Jester009

Hi,

I'm trying to do the following but I can't get it working

There are three buttons in my gui. When the 1st button is pressed I want to start a loop. Inside the loop when the 2nd button is pressed I want to execute a certain piece of code and when the 3rd button is pressed I need to execute another piece of code.

But I'm unable to get this working :) Can anybody help me with this? Example would be really helpful.. I'm kinda new to Autoit

Thanks

Jester009

Share this post


Link to post
Share on other sites
DjDeep00

For trouble shooting....Post your existing code.

Share this post


Link to post
Share on other sites
Achilles

This is a messy way of doing it.

GuiCreate('Testing', 300, 100) 

$buttonOne = GuiCtrlCreateButton('First', 0, 0, 100, 30) 
$buttonTwo = GuiCtrlCreateButton('Second', 100, 0, 100, 30) 
$buttonThree = GuiCtrlCreateButton('Third', 200, 0, 100, 30) 

GuiSetState() 

While 1 
    Switch GuiGetMsg() 
        Case $buttonOne 
            GuiCtrlCreateLabel('Here', 0, 35)
            
            While 1 
                Switch GuiGetMsg() 
                    Case $buttonTwo 
                        GuiCtrlCreateLabel('Here', 100, 35)
                        
                        While 1 
                            Switch GuiGetMsg() 
                                Case $buttonThree 
                                    GuiCtrlCreateLabel('Here', 200, 35) 
                                    Sleep(1000) 
                                    Exit
                                Case -3 
                                    Exit
                            EndSwitch 
                        WEnd 
                    Case -3 
                        Exit
                EndSwitch 
            WEnd 
        Case -3 
            Exit
    EndSwitch 
WEnd

This is how I would to it

#include <GUIConstants.au3>

GuiCreate('Testing', 300, 100) 

$buttonOne = GuiCtrlCreateButton('First', 0, 0, 100, 30) 
$buttonTwo = GuiCtrlCreateButton('Second', 100, 0, 100, 30) 
    GuiCtrlSetState($buttonTwo, $GUI_DISABLE)
$buttonThree = GuiCtrlCreateButton('Third', 200, 0, 100, 30) 
    GuiCtrlSetState($buttonThree, $GUI_DISABLE)

GuiSetState() 

While 1 
    Switch GuiGetMsg() 
        Case $buttonOne 
            GuiCtrlCreateLabel('Here', 0, 35)
            GuiCtrlSetState($buttonTwo, $GUI_ENABLE)
            GuiCtrlSetState($buttonOne, $GUI_DISABLE)
        Case $buttonTwo 
            GuiCtrlCreateLabel('Here', 100, 35)
            GuiCtrlSetState($buttonTwo, $GUI_DISABLE)
            GuiCtrlSetState($buttonThree, $GUI_ENABLE)
        Case $buttonThree 
            GuiCtrlCreateLabel('Here', 200, 35) 
            GuiCtrlSetState($buttonThree, $GUI_DISABLE)
            Sleep(1000) 
            Exit
        Case $GUI_EVENT_CLOSE 
            Exit
    EndSwitch 
WEnd

My Programs[list][*]Knight Media Player[*]Multiple Desktops[*]Daily Comics[*]Journal[/list]

Share this post


Link to post
Share on other sites
Jester009

This the code...

#include <GUIConstants.au3>

$Form1 = GUICreate("Form1", 392, 132, 193, 120)
$Button1 = GUICtrlCreateButton("Button1", 48, 48, 57, 25, 0)
$Button2 = GUICtrlCreateButton("Button2", 160, 48, 65, 25, 0)
    GUICtrlSetState($Button2, $GUI_DISABLE)
$Button3 = GUICtrlCreateButton("Button3", 280, 48, 65, 25, 0)
    GUICtrlSetState($Button3, $GUI_DISABLE)
GUISetState(@SW_SHOW)

Do
    $msg = GUIGetMsg()
    if $msg = $Button1 Then
        MsgBox(0, "Test", "Button1 pressed")
        GUICtrlSetState($Button2, $GUI_ENABLE)
        GUICtrlSetState($Button1, $GUI_DISABLE)
        For $i = 1 to 5
            MsgBox(0, "Test", "About to press Button2")
            If $msg = $Button2 Then
                MsgBox(0, "Test", "Button2 pressed")
                GUICtrlSetState($Button3, $GUI_ENABLE)
                GUICtrlSetState($Button2, $GUI_DISABLE)
            EndIf
            If $msg = $Button3 Then
                MsgBox(0, "Test", "Button3 pressed")
            EndIf
        Next
        EndIf
Until $msg = $GUI_EVENT_CLOSE
Edited by Jester009

Share this post


Link to post
Share on other sites
Jester009

Can anyone tell me the code to wait for user input inside a FOR loop???

:)

Thanks

Jester009

Share this post


Link to post
Share on other sites
Jester009

Please can somebody help me?? I'm stuck here :)

How to wait inside a FOR loop till the user enters a button?

Please help...

Share this post


Link to post
Share on other sites
DjDeep00

Your really cant use a forloop, you will need to use either while or do loop.

Share this post


Link to post
Share on other sites
DjDeep00

This is the most retarded way of doing it.....try it out...lol...

#include <GUIConstants.au3>

$Form1 = GUICreate("Form1", 392, 132, 193, 120)
$Button1 = GUICtrlCreateButton("Button1", 48, 48, 57, 25, 0)
$Button2 = GUICtrlCreateButton("Button2", 160, 48, 65, 25, 0)
    GUICtrlSetState($Button2, $GUI_DISABLE)
$Button3 = GUICtrlCreateButton("Button3", 280, 48, 65, 25, 0)
    GUICtrlSetState($Button3, $GUI_DISABLE)
GUISetState(@SW_SHOW)

Do
    $msg = GUIGetMsg()
    if $msg = $Button1 Then
      ; MsgBox(0, "Test", "Button1 pressed")
        GUICtrlSetState($Button2, $GUI_ENABLE)
        GUICtrlSetState($Button1, $GUI_DISABLE)
        For $i = 1 to 5000000
          ; MsgBox(0, "Test", "About to press Button2")
          ;ConsoleWrite($i & @CRLF)
           $msg2 = GUIGetMsg()
            If $msg2 = $Button2 Then
               ;MsgBox(0, "Test", "Button2 pressed")
                GUICtrlSetState($Button3, $GUI_ENABLE)
                GUICtrlSetState($Button2, $GUI_DISABLE)
                ExitLoop
                
                
            EndIf
        Next
    EndIf
    
     if $msg = $Button2 Then
        GUICtrlSetState($Button3, $GUI_ENABLE)
                GUICtrlSetState($Button2, $GUI_DISABLE)
                
                For $i = 1 to 5
          ; MsgBox(0, "Test", "About to press Button2")
          ;ConsoleWrite($i & @CRLF)
           $msg3 = GUIGetMsg()
            If $msg3 = $Button3 Then
                MsgBox(0, "Test", "Button2 pressed")
                GUICtrlSetState($Button3, $GUI_DISABLE)
              ; GUICtrlSetState($Button2, $GUI_DISABLE)
            EndIf
        Next
            EndIf


    if $msg = $Button3 Then
      ; MsgBox(0, "Test", "Button1 pressed")
       
        GUICtrlSetState($Button3, $GUI_DISABLE)
        For $i = 1 to 5000000
          ; MsgBox(0, "Test", "About to press Button2")
          ;ConsoleWrite($i & @CRLF)
           $msg4 = GUIGetMsg()
           
           If $msg4=$GUI_EVENT_CLOSE then ExitLoop
        Next
    EndIf
    
         
Until $msg = $GUI_EVENT_CLOSE

Share this post


Link to post
Share on other sites
Jester009

Thanks alot for the reply DjDeep. Seems my method is not working. can you suggest me a method to get user input from a GUI using inputbox and buttons? it should run for a given number of times

Thanks

Jester009

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.