Что нового

[Окна, Диалоги] Разный цвет отключаемых элементов. Почему?

gora

Знающий
Сообщения
315
Репутация
19
Почему разные элементы (label и checkbox) в отключенном состоянии (GUI_DISABLE) имеют разные оттенки серого цвета?
color.PNG


Причем, это проявляется на Win7 и не проявляется на Win XP.

Код:
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)

Example()

Func Example()
	Local $msg, $label, $checkbox, $buttonE, $buttonD
	GUICreate("My GUI state")

	$label = GUICtrlCreateLabel("my label", 10, 20)
	GUICtrlSetState(-1, $GUI_DISABLE)
	$checkbox = GUICtrlCreateCheckbox("my checkbox", 10, 40)
	GUICtrlSetState(-1, $GUI_DISABLE)
	$buttonE = GUICtrlCreateButton("ENABLE", 10, 70)
	GUICtrlSetState(-1, $GUI_FOCUS)
	$buttonD = GUICtrlCreateButton("DISABLE", 80, 70)
	GUICtrlSetState(-1, $GUI_ENABLE)

	GUISetState()

	While 1
		$msg = GUIGetMsg()
		If $msg = $buttonD Then
				GUICtrlSetState($label, $GUI_DISABLE)
				GUICtrlSetState($checkbox, $GUI_DISABLE)
		EndIf
		If $msg = $buttonE Then
				GUICtrlSetState($label, $GUI_ENABLE)
				GUICtrlSetState($checkbox, $GUI_ENABLE)
		EndIf
		If $msg = $GUI_EVENT_CLOSE Then ExitLoop
	WEnd
EndFunc   ;==>Example
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
gora,
Может быть, от стилей по умолчанию зависит?
Так будут одинаковые. :smile:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Opt('MustDeclareVars', 1)
Global $fEnable

Example()

Func Example()
	Local $nLabel_1, $nLabel_2, $nCheckbox, $nButton, $iState
	GUICreate('My GUI state', 200, 120)

	$nLabel_1 = GUICtrlCreateLabel('my label', 10, 20, 180, 20, $SS_CENTER)
	$nCheckbox = GUICtrlCreateCheckbox('', 40, 40, 18, 18)
	$nLabel_2 = GUICtrlCreateLabel('my checkbox', 60, 40, 130, 18)
	For $i = $nLabel_1 To $nLabel_2
		GUICtrlSetState($i, $GUI_DISABLE)
	Next
	$nButton = GUICtrlCreateButton('ENABLE', 50, 70, 100, 35)
	GUISetState()

	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				Exit
			Case $nButton
				$fEnable = Not $fEnable
				If $fEnable Then
					$iState = $GUI_ENABLE
					GUICtrlSetData($nButton, 'DISABLE')
				Else
					$iState = $GUI_DISABLE
					GUICtrlSetData($nButton, 'ENABLE')
				EndIf
				For $i = $nLabel_1 To $nLabel_2
					GUICtrlSetState($i, $iState)
				Next
		EndSwitch
	WEnd
EndFunc   ;==>Example
 
Автор
G

gora

Знающий
Сообщения
315
Репутация
19
madmasles [?]
Может быть, от стилей по умолчанию зависит?
Можно подробнее?
Так будут одинаковые.
Спасибо конечно, но строго говоря не будут, ибо это два Label, а не Label + Checkbox. :(
Причем придется каждый Checkbox дублировать еще и Label-ом, а у меня их много, да еще и взаимосвязаны они, значит GUICtrlSetState нужно будет менять не отдельному элементу, а сразу парами.
А нельзя стиль Checkbox сделать аналогичным Label или наоборот, дабы они не отличались в отключенном состоянии?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
gora [?]
Можно подробнее?
Попробуйте так.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 200, 100, 192, 114)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 24, 24, 97, 17)
GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel("Label1", 24, 56, 36, 17)
GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
			Exit

EndSwitch
WEnd
 
Автор
G

gora

Знающий
Сообщения
315
Репутация
19
Garrett
Не помогает! Как было разного цвета (стиля) так и осталось.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это зависит от стилей Windows, и, как правило, вы с этим ничего уже не сделаете. Самое простое - использовать 2 label.
 
Верх