Jump to content

Recommended Posts

Posted

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
Posted

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Posted

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...

Posted

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

Posted

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
Posted

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Posted

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?

Posted

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

  • Moderators
Posted

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

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
  • Moderators
Posted

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Posted

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
Posted

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Posted

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!

Posted

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)

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

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
×
×
  • Create New...