Что нового

Окрашивание элементов GUI

ildar

Осваивающий
Сообщения
252
Репутация
30
C GUI практически не работал, поэтому опыта никакого.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\Autoit\koda_1.7.2.8_b247_2010-04-15\Forms\Kolodka1.kxf
$Form1 = GUICreate("Form1", 1168, 616, 134, 57)
$PK20 = GUICtrlCreateGroup("PK2.0", 24, 16, 209, 65)
$Button1 = GUICtrlCreateButton("0", 32, 32, 35, 17)
$Button2 = GUICtrlCreateButton("1", 72, 32, 35, 17)
$Button3 = GUICtrlCreateButton("2", 112, 32, 35, 17)
$Button4 = GUICtrlCreateButton("3", 152, 32, 35, 17)
$Button5 = GUICtrlCreateButton("4", 192, 32, 35, 17)
$Button6 = GUICtrlCreateButton("5", 32, 56, 35, 17)
$Button7 = GUICtrlCreateButton("6", 72, 56, 35, 17)
$Button8 = GUICtrlCreateButton("7", 112, 56, 35, 17)
$Button9 = GUICtrlCreateButton("8", 152, 56, 35, 17)
$Button10 = GUICtrlCreateButton("9", 192, 56, 35, 17)
$Group11 = GUICtrlCreateGroup("PK3.1", 603, 12, 209, 65)
$Button125 = GUICtrlCreateButton("0", 611, 28, 35, 17)
$Button126 = GUICtrlCreateButton("1", 651, 28, 35, 17)
$Button127 = GUICtrlCreateButton("2", 691, 28, 35, 17)
$Button128 = GUICtrlCreateButton("3", 731, 28, 35, 17)
$Button129 = GUICtrlCreateButton("4", 771, 28, 35, 17)
$Button130 = GUICtrlCreateButton("5", 611, 52, 35, 17)
$Button131 = GUICtrlCreateButton("6", 651, 52, 35, 17)
$Button132 = GUICtrlCreateButton("7", 691, 52, 35, 17)
$Button133 = GUICtrlCreateButton("8", 731, 52, 35, 17)
$Button134 = GUICtrlCreateButton("9", 771, 52, 35, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		 Case $Button1
			GUICtrlCreateButton("0", 32, 32, 35, 17)
			GUICtrlSetBkColor(-1, 0xff0000)
			GUICtrlCreateButton("7", 691, 52, 35, 17)
			GUICtrlSetBkColor(-1, 0xff0000)
		 Case $Button3
			GUICtrlCreateButton("2", 112, 32, 35, 17)
			GUICtrlSetBkColor(-1, 0xff0000)
			GUICtrlCreateButton("4", 771, 28, 35, 17)
			GUICtrlSetBkColor(-1, 0xff0000)
	EndSwitch
WEnd
Что нужно?
При нажатии $Button1 происходит окрашивание двух кнопок, в данном случае $Button1 и $Button132. Цвет не должен изменятся пока не нажму любую другую кнопку.
Что происходит?
При нажатии $Button1 происходит окрашивание двух кнопок, но стоит пошевелить мышкой в области $Button1 цвет пропадает на этой кнопке. На $Button132 цвет остается пока не проведешь мышкой в около этой кнопки.
Понимаю что нужен другой метод, но пока в голову ничего не пришло. Похожих примеров не нашел, возможно плохо искал. Пните меня пожалуйста в нужную сторону.
Спасибо!
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Зачем Вы в обработке нажатия кнопок их снова создаёте ? Меняйте цвет указывая идентификатор (controlID) созданной ранее кнопки.
Цвет не должен изменятся пока не нажму любую другую кнопку.
это тоже нужно прописать в обработке нажатия кнопок

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\Autoit\koda_1.7.2.8_b247_2010-04-15\Forms\Kolodka1.kxf
$Form1 = GUICreate("Form1", 1168, 616, 134, 57)
$PK20 = GUICtrlCreateGroup("PK2.0", 24, 16, 209, 65)
$Button1 = GUICtrlCreateButton("0", 32, 32, 35, 17)
$Button2 = GUICtrlCreateButton("1", 72, 32, 35, 17)
$Button3 = GUICtrlCreateButton("2", 112, 32, 35, 17)
$Button4 = GUICtrlCreateButton("3", 152, 32, 35, 17)
$Button5 = GUICtrlCreateButton("4", 192, 32, 35, 17)
$Button6 = GUICtrlCreateButton("5", 32, 56, 35, 17)
$Button7 = GUICtrlCreateButton("6", 72, 56, 35, 17)
$Button8 = GUICtrlCreateButton("7", 112, 56, 35, 17)
$Button9 = GUICtrlCreateButton("8", 152, 56, 35, 17)
$Button10 = GUICtrlCreateButton("9", 192, 56, 35, 17)
$Group11 = GUICtrlCreateGroup("PK3.1", 603, 12, 209, 65)
$Button125 = GUICtrlCreateButton("0", 611, 28, 35, 17)
$Button126 = GUICtrlCreateButton("1", 651, 28, 35, 17)
$Button127 = GUICtrlCreateButton("2", 691, 28, 35, 17)
$Button128 = GUICtrlCreateButton("3", 731, 28, 35, 17)
$Button129 = GUICtrlCreateButton("4", 771, 28, 35, 17)
$Button130 = GUICtrlCreateButton("5", 611, 52, 35, 17)
$Button131 = GUICtrlCreateButton("6", 651, 52, 35, 17)
$Button132 = GUICtrlCreateButton("7", 691, 52, 35, 17)
$Button133 = GUICtrlCreateButton("8", 731, 52, 35, 17)
$Button134 = GUICtrlCreateButton("9", 771, 52, 35, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
         Case $Button1
            ;GUICtrlCreateButton("0", 32, 32, 35, 17)
            GUICtrlSetBkColor($Button1, 0xff0000)
           ; GUICtrlCreateButton("7", 691, 52, 35, 17)
            GUICtrlSetBkColor($Button132, 0xff0000)
			
           ;Вернуть серый цвет кнопкам 
			GUICtrlSetBkColor($Button3, 0xEFEFEF)
			GUICtrlSetBkColor($Button129, 0xEFEFEF)
         Case $Button3
           ; GUICtrlCreateButton("2", 112, 32, 35, 17)
            GUICtrlSetBkColor($Button3, 0xff0000)
           ; GUICtrlCreateButton("4", 771, 28, 35, 17)
            GUICtrlSetBkColor($Button129, 0xff0000)
			
           ;Вернуть серый цвет кнопкам
			GUICtrlSetBkColor($Button1, 0xEFEFEF)
			GUICtrlSetBkColor($Button132, 0xEFEFEF)
    EndSwitch
WEnd
 
Верх