Rhyono Posted December 25, 2012 Share Posted December 25, 2012 I have a couple dozen checkboxes and their states are saved in a binary string. It looks like eval and execute are only for transferring/computing values, rather than creating a variable name. The checkboxes are numbered, following the format of $chkBox1, $chkBox2, etc. I was hoping to be able to do loop through and be able to take the string "$chkBox" and append the current value the loop is on in, then set if it is checked with GUICtrlSetState. The way I tried it was: GUICtrlSetState(Eval("$chkBox" & $currentID),$GUI_UNCHECKED) Is there a way to do that with Eval/Execute and I'm just doing it incorrectly or is it not possible by that method or any other? Link to comment Share on other sites More sharing options...
kylomas Posted December 25, 2012 Share Posted December 25, 2012 Ryhono, If you want to use "dynamic" variable names it could be done like this. #include <GUIConstantsEx.au3> #AutoIt3Wrapper_Add_Constants=n local $msg local $gui010 = guicreate('Checkbox Controls Using an Array for the Control ID') for $1 = 1 to 15 guictrlcreatelabel('CheckBox #' & stringformat('%02i',$1),10, $1 * 25,90,20) assign('checkbox' & $1,GUICtrlCreateCheckbox('',95, $1 * 25,20,15)) Next guisetstate() while 1 $msg = guigetmsg() switch $msg case $gui_event_close Exit case eval('checkbox' & 1) to eval('checkbox' & 15) for $1 = 1 to 15 if guictrlread(eval('checkbox' & $1)) = $gui_checked then ConsoleWrite('Checkbox #' & stringformat('%02i',$1) & ' checked' & @LF) else ConsoleWrite('Checkbox #' & stringformat('%02i',$1) & ' unchecked' & @LF) endif next EndSwitch wend However, this makes reading and debugging the code more difficult than it need be. You will generally find multiple checkboxes implemented using an array like this. #include <GUIConstantsEx.au3> #AutoIt3Wrapper_Add_Constants=n local $ckb_cntrls[16], $msg ConsoleWrite(ubound($ckb_cntrls) - 1 & @LF) local $gui010 = guicreate('Checkbox Controls Using an Array for the Control ID') for $1 = 1 to 15 guictrlcreatelabel('CheckBox #' & stringformat('%02i',$1),10, $1 * 25,90,20) $ckb_cntrls[$1] = GUICtrlCreateCheckbox('',95, $1 * 25,20,15) Next guisetstate() while 1 $msg = guigetmsg() switch $msg case $gui_event_close Exit case $ckb_cntrls[1] to $ckb_cntrls[ubound($ckb_cntrls) - 1] for $1 = 1 to ubound($ckb_cntrls) - 1 if guictrlread($ckb_cntrls[$1]) = $gui_checked then ConsoleWrite('Checkbox #' & stringformat('%02i',$1) & ' checked' & @LF) else ConsoleWrite('Checkbox #' & stringformat('%02i',$1) & ' unchecked' & @LF) endif next EndSwitch wend Both of these examples list the state of all checkboxes when any checkbox is actioned. kylomas Rhyono 1 Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
Rhyono Posted December 25, 2012 Author Share Posted December 25, 2012 Looking at your example I realized the only mistake I made was including the $So doing GUICtrlSetState(Eval("chkBox" & $currentID),$GUI_UNCHECKED) works perfectly.Thanks for indirectly solving my problem. Link to comment Share on other sites More sharing options...
kylomas Posted December 25, 2012 Share Posted December 25, 2012 Merry Christmas! Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
guinness Posted December 25, 2012 Share Posted December 25, 2012 I would still use the advice of kylomas and use an array, there are only a handful of occasions when you should use Eval/Assign, this isn't one of them. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
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