Jump to content
Sign in to follow this  

[solved] how to change the color of $GUI_DISABLE

Recommended Posts


I have some inputs that I am setting the background color to be something other than white.

I've noticed that if I use GuiCtrlSetState($control, $GUI_DISABLE) it does in fact disable the inputs, but it does not "gray out" the input as it would if the background color were default.

Is there a way to either specify the color that $GUI_DISABLE uses to signify a disabled input, or some way I can manually change the color in a second GuiSetBkColor statement?

Func _CreateInput($sText = "", $iLeft = 0, $iTop = 0, $iWidth = 120, $iHeight = 20)
Local $oControl = GUICtrlCreateInput($sText, $iLeft, $iTop, $iWidth, $iHeight, BitOR($SS_CENTERIMAGE, $ES_AUTOHSCROLL))
GUICtrlSetBkColor($oControl, 0xE5F5E5)
Return $oControl
EndFunc ;==>_CreateInput

Func _Control($sState, $c0 = 0, $c1 = 0, $c2 = 0, $c3 = 0, $c4 = 0, $c5 = 0, $c6 = 0, $c7 = 0, $c8 = 0, $c9 = 0)
If $sState = "Enable" Then $sState = $GUI_ENABLE + $GUI_SHOW
If $sState = "Disable" Then $sState = $GUI_DISABLE + $GUI_SHOW
If $c0 <> 0 Then GUICtrlSetState($c0, $sState)
If $c1 <> 0 Then GUICtrlSetState($c1, $sState)
If $c2 <> 0 Then GUICtrlSetState($c2, $sState)
If $c3 <> 0 Then GUICtrlSetState($c3, $sState)
If $c4 <> 0 Then GUICtrlSetState($c4, $sState)
If $c5 <> 0 Then GUICtrlSetState($c5, $sState)
If $c6 <> 0 Then GUICtrlSetState($c6, $sState)
If $c7 <> 0 Then GUICtrlSetState($c7, $sState)
If $c8 <> 0 Then GUICtrlSetState($c8, $sState)
If $c9 <> 0 Then GUICtrlSetState($c9, $sState)
EndFunc ;==>_ControlEnable
Edited by kor

Share this post

Link to post
Share on other sites


Do you ever try to solve these simple problems yourself before posting :huh:

You actually suggest the very thing you need to do: ;)

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 500, 500)

$cInput = GUICtrlCreateInput("", 10, 10, 200, 20)
GUICtrlSetBkColor(-1, 0x00FF00)

$cButton = GUICtrlCreateButton("Disable", 10, 50, 80, 30)


While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
        Case $cButton
            If BitAnd(GUICtrlGetState($cInput), $GUI_ENABLE) Then
                GUICtrlSetBkColor($cInput, 0xFF0000)
                GUICtrlSetState($cInput, $GUI_DISABLE)
                GUICtrlSetBkColor($cInput, 0x00FF00)
                GUICtrlSetState($cInput, $GUI_ENABLE)

All clear? :)


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:


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


Share this post

Link to post
Share on other sites

Why of course :)

But thank you.

Here is my solution.

Func _Control($sState, $aInput)
Local $sColor
If $sState = "Enable" Then
$sColor = 0xE5F5E5
ElseIf $sState = "Disable" Then
$sColor = 0xD6D3CE
For $i = 0 To UBound($aInput) - 1
GUICtrlSetState($aControls[$aInput[$i]], $sState)
GUICtrlSetBkColor($aControls[$aInput[$i]], $sColor)
GUICtrlSetData($aControls[$aInput[$i]], "")
EndFunc   ;==>_Control

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