Sign in to follow this  
Followers 0
LetsAuto

Save radio button input?

17 posts in this topic

how would I go about saving user selection (a radio button) as a variable that says what the radio button said? and im carrying this across multiple au3 files.. a run step1, then i tell it Run(C:\\...) step2.. and i need to carry the radio button data all the way to step 3. anyone help?

Share this post


Link to post
Share on other sites



LetsAuto,

- Easy solution - write to a file which can be read by all the scripts.

- More complicated but more elegant solution - pass the variable between the scripts. There are multiple "interscript communication" threads if you search - trancexx's MailSlot is my personal favourite.

Guess which I would suggest you try first. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

thank you, and im guessing youd suggest the easy solution? lol. but, i still dont know how to get the FileReadLine method to read only a single line in the middle of a document...

Share this post


Link to post
Share on other sites

I use ini files when I need to record the setting of a checkbox or radio button, then I can recall it without having to find it in the file using IniRead and IniWrite.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

okay, is there still a way to display just the single line though? because i was trying to use the FileRead/Line methods earlier, and I was having a difficult time getting it to only display either 1 line or part of a line

Share this post


Link to post
Share on other sites

LetsAuto,

Ini files are an excellent way to store data like this as Windows does all the work. You just need to set up a suitable format within the file - something like this woudl be a good idea:

[Radios]
Radio 1=1 ; (or whatever else you wish to set it to)

And then you can get the value with a simple:

$sValue = IniRead("ini_file_path", "Radios", "Radio 1", "Error")

which will return 1 - or "Error" if the value was not set. No need to search the file at all. ;)

Does that help with your other problem as well? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

will that

$sValue = IniRead("ini_file_path", "Radios", "Radio 1", "Error")

create my .INI file for me? or do i need to use something like a

FileDelete("C:IanLogTestbuiildTest.log")
$logdir = "C:RadioLogTest"
$logfile = $logdir & "radioInfo.log"
$screenshot = 0
$module = "Initial"
$file = FileOpen($logfile, 9)
;;;;works and saves variable to log;;;;
FileWriteLine($file, $text)
FileWriteLine($file, @CRLF)
FileClose($file)

type of thing? except with .INI and not .log*

.....and later on to retrieve the data and put it in an if statement (decalring whether or not it was brand 1 then do a window, brand 2 do a different window, else disable the button), how would i go about doing that?

Share this post


Link to post
Share on other sites

What part of IniRead would suggest that it would write to a file?

Don't use FileWriteLine, use IniWrite to create and write to the ini file, use IniRead to read from that file. Look in the help file.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

LetsAuto,

Much easier than that - let Windows do the work: :D

$iRadio_State = GUICtrlRead($Radio)
IniWrite("ini_file_path", "Radios", "Radio 1", $iRadio_State)

And your ini file is created or amended. Go and look at the Ini* functions in the Help file - there are good examples to learn how they all work. ;)

As to the second question, just use some form of selection structure like this: ;)

; Read the value from the ini file
$sValue = IniRead("ini_file_path", "Radios", "Radio 1", "Error")
; And depending on what it is, do different things
Switch $sValue
    Case "1"
        ; Open this window
        GUI_1()
    Case "2"
        ; Open another window
        GUI_2()
    Case Else
       ; Disable a button
       GUICtrlSetState($cButton, $GUI_DISABLE)
EndSwitch

All clear? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

almost.... where do i put the IniWrite()? because this

For $i = 0 To 5
; And now we can use the array we declared earlier to hold the ControlIDs <<<<<<<<<<<<<<<<<<<<<<<<<<
$brandButton[$i] = GUICtrlCreateRadio($brandArr[$i], 12, 30 + (20 * $i), $radWidth)
;;writes my INI for step3

Next

<p>

is where my buttons come into the GUI... and im not sure where i should put the IniWrite() because if i put it inside the For... Next it wont work, and right after the For...Next it still does nothing

Edited by LetsAuto

Share this post


Link to post
Share on other sites

LetsAuto,

Slow down a minute - why would you want to check the state of the radios immediately after you created them? :huh:

What you need to do is pick a suitable moment (when the user presses a "Save" or "Go" button for instance) and then read and save the selection. ;)

Does that make sense? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

never mind, i got it.. i forgot to write part of the iniWrite()... :oops:

Share this post


Link to post
Share on other sites

wait.... so what you said makes much more sense.. but if i have 6 buttons.. and i want the return to be 1 for the button selected... how would i do that? do i need a loop structure?

and i would put it here.....

Case $cButton_Next
;;writes my INI for step3
$iRadio_State = GUICtrlRead($brandArr[$i])
IniWrite("C:IanLogTestradioButton.ini", "Radio", "Radio1", $iRadio_State)
IniWrite("C:IanLogTestradioButton.ini", "Radio", "Radio2", $iRadio_State)

For $i = 0 To 5
If GUICtrlRead($brandButton[$i]) = 1 Then
ExitLoop
EndIf
Next

... because that is when the user clicks the next button to continue... but that gives me the 2 buttons ihave so far as Radio1 = 0 and then Radio2 = 0

Share this post


Link to post
Share on other sites

LetsAuto,

Why save all the radios - only one can be clicked at a time. ;)

So I would do something like this:

Case $cButton_Next
    ; Set a default "nothing checked" response
    $iChecked = -1
    For $i = 0 To 5
        If GUICtrlRead($brandButton[$i]) = 1 Then
            ; Found the checked button
            $iChecked = $i
            ; No point in going further
            ExitLoop
        Endif
    Next
    ; Now write the ini file
    IniWrite("C:IanLogTestradioButton.ini", "Radio", "Radio_Pressed", $iChecked)

Now the index number of the checked radio is saved and you can pull it any time you want. ;)

All clear? :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites

AHHHH!!! okay, yes it took some time for me to fiddle with the method to understand it, but now i understand how the one instance of $iChecked works.. awesome!

Share this post


Link to post
Share on other sites

what if i wanted to do this.....

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GUICtrlSetState($palButton, $GUI_DISABLE)

Case $palButton
; Read the value from the ini file
$sValue = IniRead("C:IanLogTestradioButton.ini", "Brand", "Radio Checked", "Error!")
; And depending on what it is, do different things
Switch $sValue
Case "0"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GUICtrlSetState($palButton, $GUI_ENABLE)
; Open this window
Run("C:Program FilesAutoIt3AutoIt3.exe F:AutoIt3testingsautoxPALbutton.au3")
Case "5"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GUICtrlSetState($palButton, $GUI_ENABLE)
; Open another window
Run("C:Program FilesAutoIt3AutoIt3.exe F:AutoIt3testingsautoyPALbutton.au3")
Case Else
; Disable a button
GUICtrlSetState($palButton, $GUI_DISABLE)
EndSwitch

.... and reverse that IF the correct instance of the radio button is checked THEN enable the $palButton...? because if i uncomment the lines with all the ; then it doesnt enable for the correct radio buttons (and of course i comment out the Case Else part)

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

I think you would have to put enable/disable part of your $sValue switch Outside of the $palButton case. Because as it is, the $sValue switch is only analyzed after the button is already clicked. That would mean two $sValue switches for your loop, one for enable/disable, and one for the action to take when the button is pressed.

Edited by DicatoroftheUSA

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

  • Similar Content

    • fatpig
      By fatpig
      Dear AutoIT Community.
      I am currently working on a program that will display lots of images in a scroll down GUI.
      I create the GUI based on the number of images, which works fine.
      But all images I place using GuiCtrlCreatePic above a threshold of around 32000 pixels (cant say exactly) are placed at negative locations and finally will reach 0 again
      and will then populate on top of the images placed there before.
      For $i = 1 To $Images[0] ; Get picture dimensions $hImage = _GDIPlus_ImageLoadFromFile($ImgRep & $Images[$i]) $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetHeight($hImage) _GDIPlus_ImageDispose($hImage) ; Resize & place images in GUI $Pic[$i] = GUICtrlCreatePic($ImgRep & $Images[$i], $Spacer, Round($yPos, 0), $MaxImgWidth, $MaxImgWidth * ($iY / $iX)) $yPos = $yPos + $MaxImgWidth * ($iY / $iX) + $Spacer $log = $log & "|" & $yPos $currentlut = $Images[1] Next I have found a limit at 32767 pixels for some GUI elements when googling around.
      Can someone tell me how to circumvent that?
      thanks!
      cheers
      Felix
    • Shirdish_chakravarthi
      By Shirdish_chakravarthi
      Hello Guys this is my gui and i need the numeric value typed in the highlighted  inputbox. if this value is greater than 1 i need to perform some operations
      \
       
      Here is the summary about that field which i got from wininfo tool

      i tried writing the code as shown below.. but the msgbox is popping up empty value..when the same code is pasted under some button action i am able to access the value present in the field..but when placed alone as written in the attached script i am unable to fetch it... 

      here i am using the valu present in the field

      can you guys tell me what's wrong??? or how can i get that value?
       
      My_GUI.au3

    • Shirdish_chakravarthi
      By Shirdish_chakravarthi
      in need the path/text present int above shown input box to be copied or retrieved into a variable .. how can i do that?
       
      Thanks
       
    • Neonovaz
      By Neonovaz
      Hello
       
      Is there anyway to store word documents in Autoit GUI? For example I have a instruction sheet that I want to bundle up with the exe.

      So a user simply clicks the icon and the stored document will launch  (Something like how you can add objects like excel sheets in word documents )

      (I Know we can launch word files from script directory)

       
    • hemichallenger
      By hemichallenger
      Not sure if this is possible or if someone has already tackled this. Is it possible to embed PowerShell into a GUI? Autoit is great for quick function but sometime I need to run a command thru PowerShell. It be great to have PowerShell console embedded into the gui.