Jump to content

Recommended Posts

Posted (edited)

Group,

I'm still trying to understand some of the process flow of the GUI controls. I have a simple (least I think it should be simple) script that I'm working on below. It has 2 radio buttons, 1 input line, and 3 standard buttons. What I'm looking for is as follows: Only 1 radio button pressed at a time (this becomes a variable), the input becomes a variable, and then this information is passed to a function based on the 1 of the 3 standard buttons that is pressed. What I'm having problems with is how to have only one radio button able to be pressed in the group, and how to insure that a radio button has been selected and that input has been entered when one of the 3 standard buttons are pressed.

#include <GuiConstants.au3>

If Not IsDeclared('WS_CLIPSIBLINGS') Then Global $WS_CLIPSIBLINGS = 0x04000000

GuiCreate("MyGUI", 392, 448,(@DesktopWidth-392)/2, (@DesktopHeight-448)/2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)

$Group_1 = GuiCtrlCreateGroup("Group1", 60, 90, 270, 50)
$Radio_2 = GuiCtrlCreateRadio("Desktop", 90, 110, 80, 20)
$Radio_3 = GuiCtrlCreateRadio("Laptop", 210, 110, 90, 20)
$Input_4 = GuiCtrlCreateInput("", 130, 170, 140, 20)
$Button_5 = GuiCtrlCreateButton("Division 1", 70, 250, 90, 30)
$Button_6 = GuiCtrlCreateButton("Division 2", 230, 250, 90, 30)
$Button_7 = GuiCtrlCreateButton("Division 3", 150, 310, 90, 30)
$Close = GuiCtrlCreateButton("Exit", 150, 380, 90, 30)

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = ($Button_5)
         _Division1($Input_4)
    Case $msg = ($Button_6)
         _Division2($Input_4)
    Case $msg = ($Button_7)
         _Division3($Input_4)
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Close
         MsgBox(0, "EXIT", "Exiting Pre-Stage Application", 2)
         Exit
   EndSelect
WEnd;;;
Exit

Func _Division1($Input_4)
    MsgBox(0,"Divsion 1", "Division 1 Button Pressed " & $Input_4,5)
EndFunc

Func _Division2($Input_4)
    MsgBox(0,"Division 2", "Division 2 Button Pressed " & $Input_4,5)
EndFunc

Func _Division3($Input_4)
    MsgBox(0,"Division 3", "Division 3 Button Pressed " & $Input_4,5)
EndFunc

So if the user selects the 'Desktop' radio button, and then inputs '1234567' as the input (asset tag), this is passed to the function when 1 of the standard buttons is pressed. But there is no action unless a radio button is pressed AND there is input information.

Any help would be appreciated as always.

Thanks,

ZK

Edited by ZenKensei
Posted (edited)

  ZenKensei said:

So if the user selects the 'Desktop' radio button, and then inputs '1234567' as the input (asset tag), this is passed to the function when 1 of the standard buttons is pressed. But there is no action unless a radio button is pressed AND there is input information.

maybe something like this?

#include <GuiConstants.au3>

If Not IsDeclared('WS_CLIPSIBLINGS') Then Global $WS_CLIPSIBLINGS = 0x04000000

GuiCreate("MyGUI", 392, 448,(@DesktopWidth-392)/2, (@DesktopHeight-448)/2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)

$Group_1 = GuiCtrlCreateGroup("Group1", 60, 90, 270, 50)
$Radio_2 = GuiCtrlCreateRadio("Desktop", 90, 110, 80, 20)
$Radio_3 = GuiCtrlCreateRadio("Laptop", 210, 110, 90, 20)
$Input_4 = GuiCtrlCreateInput("", 130, 170, 140, 20)
$Button_5 = GuiCtrlCreateButton("Division 1", 70, 250, 90, 30)
$Button_6 = GuiCtrlCreateButton("Division 2", 230, 250, 90, 30)
$Button_7 = GuiCtrlCreateButton("Division 3", 150, 310, 90, 30)
$Close = GuiCtrlCreateButton("Exit", 150, 380, 90, 30)

GuiSetState()
While 1
    $msg = GuiGetMsg()
    $input = ""
    $radio = ""

    Select
    Case $msg = ($Button_5)
         $input = CheckInput()
         $radio = CheckRadio()
         if $radio <> "" AND $input <> "" then
            _Division1($input,$radio)
         else
            msgbox(4096, "Error", "Sorry: Please enter some data")
         endif
    Case $msg = ($Button_6)
         $input = CheckInput()
         $radio = CheckRadio()
         if $radio <> "" AND $input <> "" then
            _Division2($input,$radio)
         else
            msgbox(4096, "Error", "Sorry: Please enter some data")
         endif
    Case $msg = ($Button_7)
         $input = CheckInput()
         $radio = CheckRadio()
         if $radio <> "" AND $input <> "" then
            _Division3($input,$radio)
         else
            msgbox(4096, "Error", "Sorry: Please enter some data")
         endif
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Close
         MsgBox(0, "EXIT", "Exiting Pre-Stage Application", 2)
         Exit
   EndSelect
WEnd;;;
Exit

Func CheckRadio()
    if GUICtrlRead($Radio_2) = $GUI_CHECKED then
       $radio = "Desktop"
    elseif GUICtrlRead($Radio_3) = $GUI_CHECKED then
       $radio = "Laptop"
    else
       $radio = ""
    endif
    return $radio
    
EndFunc

Func CheckInput()
    $input = GUICtrlRead($Input_4)
    return $input
EndFunc

Func _Division1($Input,$Radio)
    MsgBox(0,"Divsion 1", "Division 1 Button Pressed " & $Input & " " & $Radio,5)
EndFunc

Func _Division2($Input,$Radio)
    MsgBox(0,"Divsion 2", "Division 2 Button Pressed " & $Input & " " & $Radio,5)
EndFunc

Func _Division3($Input,$Radio)
    MsgBox(0,"Divsion 3", "Division 3 Button Pressed " & $Input & " " & $Radio,5)
EndFunc

Cheers

Kurt

Edited by /dev/null

__________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *

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
  • Recently Browsing   0 members

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