LetsAuto Posted November 7, 2012 Posted November 7, 2012 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?
Moderators Melba23 Posted November 7, 2012 Moderators Posted November 7, 2012 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 Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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...
BrewManNH Posted November 7, 2012 Posted November 7, 2012 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 GudeHow 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
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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
Moderators Melba23 Posted November 7, 2012 Moderators Posted November 7, 2012 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 Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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?
BrewManNH Posted November 7, 2012 Posted November 7, 2012 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 GudeHow 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
Moderators Melba23 Posted November 7, 2012 Moderators Posted November 7, 2012 LetsAuto,Much easier than that - let Windows do the work: $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) EndSwitchAll clear? M23 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 (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 November 7, 2012 by LetsAuto
Moderators Melba23 Posted November 7, 2012 Moderators Posted November 7, 2012 LetsAuto,Slow down a minute - why would you want to check the state of the radios immediately after you created them? 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 Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 never mind, i got it.. i forgot to write part of the iniWrite()...
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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
Moderators Melba23 Posted November 7, 2012 Moderators Posted November 7, 2012 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 Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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!
LetsAuto Posted November 7, 2012 Author Posted November 7, 2012 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)
DicatoroftheUSA Posted November 7, 2012 Posted November 7, 2012 (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 November 7, 2012 by DicatoroftheUSA Statism is violence, Taxation is theft. Autoit Wiki
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now