chachew Posted October 31, 2011 Share Posted October 31, 2011 Just wanting an opinion or suggestions if there is an easier or better way to perform this Case. It essentially toggles 1 button as a start and stop button and performs actions based on the state of the button at the time of being clicked. Thanks for any additions/suggestions. Case $btnStart If _GUICtrlButton_GetText($btnStart) = "Start" And FileExists("C:\logdir") Then GUICtrlSetState($btnUpload, $GUI_DISABLE) GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) EndIf DirCreate("C:\logdir") If _GUICtrlButton_GetText($btnStart) = "Start" Then GUICtrlSetData($btnStart, "Stop") GUICtrlSetData($lblDesc, $descRun) GUICtrlSetState($lblDir, $GUI_SHOW) GUICtrlSetState($btnScan, $GUI_ENABLE) Else GUICtrlSetData($btnStart, "Start") GUICtrlSetState($btnUpload, $GUI_ENABLE) GUICtrlSetData($lblDesc, $descStop) If $count = 0 Then GUICtrlSetState($btnUpload, $GUI_DISABLE) GUICtrlSetState($btnScan, $GUI_DISABLE) GUICtrlSetData($lblDesc, @CR & "No templates have been collected, please press the Start button and try again") Else GUICtrlSetState($btnScan, $GUI_DISABLE) GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) EndIf Attachment() EndIf Link to comment Share on other sites More sharing options...
vfear Posted October 31, 2011 Share Posted October 31, 2011 (edited) It would help if the full script was posted. Edited October 31, 2011 by vfear Link to comment Share on other sites More sharing options...
Zedna Posted October 31, 2011 Share Posted October 31, 2011 (edited) It seems OK to me, just one smaal optimize Case $btnStart $btn_text = _GUICtrlButton_GetText($btnStart) If $btn_text = "Start" And FileExists("C:\logdir") Then GUICtrlSetState($btnUpload, $GUI_DISABLE) GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) EndIf DirCreate("C:\logdir") If $btn_text = "Start" Then GUICtrlSetData($btnStart, "Stop") GUICtrlSetData($lblDesc, $descRun) GUICtrlSetState($lblDir, $GUI_SHOW) GUICtrlSetState($btnScan, $GUI_ENABLE) Else GUICtrlSetData($btnStart, "Start") GUICtrlSetState($btnUpload, $GUI_ENABLE) GUICtrlSetData($lblDesc, $descStop) If $count = 0 Then GUICtrlSetState($btnUpload, $GUI_DISABLE) GUICtrlSetState($btnScan, $GUI_DISABLE) GUICtrlSetData($lblDesc, @CR & "No templates have been collected, please press the Start button and try again") Else GUICtrlSetState($btnScan, $GUI_DISABLE) GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) EndIf Attachment() EndIf Edited October 31, 2011 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
guinness Posted October 31, 2011 Share Posted October 31, 2011 Why not use GUICtrlRead() instead of _GUICtrlButton_GetText(), unless you're using _GUICtrlButton_Create()? 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...
Spiff59 Posted October 31, 2011 Share Posted October 31, 2011 If you want to get a little fancier, you could employ more subscripted variables (arrays) and use a "state" flag, rather than actually reading the text off the button each time... expandcollapse popup#include <GUIConstants.au3> Global $aStateText[2] = ["Start", "Stop"], $iState = 0 ; 0 = stopped, 1= started Global $aDescText[2] = ["The process is currently stopped", "The process is currently started"] Global $count GUICreate("", 400, 200) $btnStart = GUICtrlCreateButton($aStateText[$iState], 20,20,60,20) $lblDesc = GUICtrlCreateLabel($aDescText[$iState], 120,20,200,20) $btnUpload = GUICtrlCreateButton("", 20,50,60,20) $lblDir = GUICtrlCreateLabel("", 120,50,200,20) $btnScan = GUICtrlCreateButton("", 20,80,60,20) GUISetState() While 1 Switch GUIGetMsg() Case $btnStart If $iState = 0 And FileExists("C:\logdir") Then ; currently stopped GUICtrlSetState($btnUpload, $GUI_DISABLE) ; GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) Else DirCreate("C:\logdir") EndIf If $iState = 0 Then ; currently stopped - do your start stuff here GUICtrlSetState($lblDir, $GUI_SHOW) GUICtrlSetState($btnScan, $GUI_ENABLE) Else ; currently started - do your stop stuff here GUICtrlSetState($btnScan, $GUI_DISABLE) If $count = 0 Then GUICtrlSetState($btnUpload, $GUI_DISABLE) GUICtrlSetData($lblDesc, @CR & "No templates have been collected, please press the Start button and try again") Else GUICtrlSetState($btnUpload, $GUI_ENABLE) ; GUICtrlSetData($lblDir, "Templates: " & $count[1] - 1) EndIf ; Attachment() EndIf $iState = Not $iState ; toggle state GUICtrlSetData($btnStart, $aStateText[$iState]) ; update label GUICtrlSetData($lblDesc, $aDescText[$iState]) ; update desc Case -3 ExitLoop EndSwitch WEnd (I started with the example posted by Zedna) Link to comment Share on other sites More sharing options...
chachew Posted October 31, 2011 Author Share Posted October 31, 2011 Thanks for the suggestions guys. I'll try some of these out when i get a chance too. 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