Sign in to follow this  
Followers 0
chachew

Better/Easier way to do this?

6 posts in this topic

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

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

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

It would help if the full script was posted.

Edited by vfear

Share this post


Link to post
Share on other sites

#3 ·  Posted (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 by Zedna

Share this post


Link to post
Share on other sites

Why not use GUICtrlRead() instead of _GUICtrlButton_GetText(), unless you're using _GUICtrlButton_Create()?


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

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

#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)

Share this post


Link to post
Share on other sites

Thanks for the suggestions guys. I'll try some of these out when i get a chance too.

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