cheeseandcereal Posted March 16, 2013 Share Posted March 16, 2013 So I was writing this program and I wanted my input box to be enabled when I checked a checkbox and disabled when the checkbox is unchecked. I replicated the problem with this code: #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 131, 103, 192, 124) $Checkbox1 = GUICtrlCreateCheckbox("Enable", 8, 8, 97, 17) $Input1 = GUICtrlCreateInput("", 24, 48, 57, 21) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then GUICtrlSetState($Input1, $GUI_ENABLE) ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then GUICtrlSetState($Input1, $GUI_DISABLE) EndIf WEnd When running this code, the program functions properly but the input box flickers inbetween the enabled and disabled state. Does anyone know how I might go about fixing this problem? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 16, 2013 Moderators Share Posted March 16, 2013 cheeseandcereal, Use a flag to indicate the current state of the input and only enable/disable it when the checkbox and flag disagree: #include <GUIConstantsEx.au3> $fEnabled = False $Form1 = GUICreate("Form1", 131, 103, 192, 124) $Checkbox1 = GUICtrlCreateCheckbox("Enable", 8, 8, 97, 17) $Input1 = GUICtrlCreateInput("", 24, 48, 57, 21) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch If GUICtrlRead($Checkbox1) = $GUI_CHECKED And $fEnabled = False Then GUICtrlSetState($Input1, $GUI_ENABLE) $fEnabled = True ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED And $fEnabled = True Then GUICtrlSetState($Input1, $GUI_DISABLE) $fEnabled = False EndIf WEnd 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 Link to comment Share on other sites More sharing options...
wakillon Posted March 16, 2013 Share Posted March 16, 2013 You can do this way without flag... #include <GUIConstantsEx.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 131, 103, 192, 124) $Checkbox1 = GUICtrlCreateCheckbox("Enable", 8, 8, 97, 17) $Input1 = GUICtrlCreateInput("", 24, 48, 57, 21) GUICtrlSetState(-1, $GUI_DISABLE) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Checkbox1 If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then GUICtrlSetState($Input1, $GUI_ENABLE) ElseIf GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then GUICtrlSetState($Input1, $GUI_DISABLE) EndIf EndSwitch WEnd AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 16, 2013 Moderators Share Posted March 16, 2013 wakillon, Quite right - and much more elegant. 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 Link to comment Share on other sites More sharing options...
wakillon Posted March 16, 2013 Share Posted March 16, 2013 wakillon,Quite right - and much more elegant. M23Thanks Boss ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
cheeseandcereal Posted March 16, 2013 Author Share Posted March 16, 2013 Thanks for the help guys! 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