Что нового

Изменение фона кнопки

cobra2029

Новичок
Сообщения
54
Репутация
0
Здравствуйте, возник такой вопрос:

В программе есть несколько кнопок (7)

Код:
$Start_PG = GUICtrlCreateButton("СТАРТ", 48, 168, 75, 25)
$Button_Start_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Stop_PG = GUICtrlCreateButton("СТОП", 48, 224, 75, 25)
$Button_Stop_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Start_EX = GUICtrlCreateButton("СТАРТ", 288, 168, 75, 25)
$Button_Start_EX = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Stop_EX = GUICtrlCreateButton("СТОП", 288, 224, 75, 25)
$Button_Stop_EX = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Shut_down_PC = GUICtrlCreateButton("ВЫКЛЮЧЕНИЕ ПК", 248, 256, 139, 33)
$Button_Shut_down_PC = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Reboot_PC= GUICtrlCreateButton("ПЕРЕЗАГРУЗКА ПК",  16, 256, 139, 33)
$Button_Reboot_PC = GUICtrlSetBkColor(-1, 0xFF0470) ;красный



как изменить их цвет при нажатии кнопки таб

пробовал такой способ не помогло:
Код:
$dll = DllOpen("user32.dll")
				If _IsPressed("09", $dll) Then
					$P=($P+1)
					If $P=1 Then
						ToolTip('Button_Start_PG ',0,0)
						$Button_Start_PG= GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Stop_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=2 Then
						ToolTip('Button_Stop_PG ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=3 Then
						ToolTip('Button_Start_EX ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=4 Then
						ToolTip('Button_Stop_EX ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=5 Then
						ToolTip('Shut_down_PC ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=6 Then
						ToolTip('Reboot_PC ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						Sleep (300)

					EndIf

					If $P=7 Then
						ToolTip('Невидимая клавиша ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)
						$P=0
					EndIf

				EndIf




целиком функция:
Код:
Func menu()

	If $work = 1 Then
		GUIDelete($AUTENTIFICATION) 
	EndIf

$TERM = GUICreate("Выбор", 413, 305, 300, 202)
$Label1 = GUICtrlCreateLabel("ВЫБЕРИТЕ  действие:", 72, 48, 281, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Для 1-го окна", 248, 120, 150, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Для 2-го окна", 8, 120, 185, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Inviz = GUICtrlCreateButton("Button2", 48, 100, 1, 1)
$Start_PG = GUICtrlCreateButton("СТАРТ", 48, 168, 75, 25)
$Button_Start_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Stop_PG = GUICtrlCreateButton("СТОП", 48, 224, 75, 25)
$Button_Stop_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Start_EX = GUICtrlCreateButton("СТАРТ", 288, 168, 75, 25)
$Button_Start_EX = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Stop_EX = GUICtrlCreateButton("СТОП", 288, 224, 75, 25)
$Button_Stop_EX = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Shut_down_PC = GUICtrlCreateButton("ВЫКЛЮЧЕНИЕ ПК", 248, 256, 139, 33)
$Button_Shut_down_PC = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
$Reboot_PC= GUICtrlCreateButton("ПЕРЕЗАГРУЗКА ПК",  16, 256, 139, 33)
$Button_Reboot_PC = GUICtrlSetBkColor(-1, 0xFF0470) ;красный
;GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)






While 1
			$dll = DllOpen("user32.dll")
				If _IsPressed("09", $dll) Then
					$P=($P+1)
					If $P=1 Then
						ToolTip('Button_Start_PG ',0,0)
						$Button_Start_PG= GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Stop_PG= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC= GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=2 Then
						ToolTip('Button_Stop_PG ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=3 Then
						ToolTip('Button_Start_EX ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=4 Then
						ToolTip('Button_Stop_EX ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=5 Then
						ToolTip('Shut_down_PC ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)

					EndIf

					If $P=6 Then
						ToolTip('Reboot_PC ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0x00ff00) ;зелёный
						Sleep (300)

					EndIf

					If $P=7 Then
						ToolTip('Невидимая клавиша ',0,0)
						$Button_Start_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_PG=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Start_EX =GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Stop_EX=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Shut_down_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						$Button_Reboot_PC=GUICtrlSetBkColor(-1, 0xFF0470) ;красный
						Sleep (300)
						$P=0
					EndIf

				EndIf

	$nMsg = GUIGetMsg()
	Switch $nMsg

		Case $GUI_EVENT_CLOSE
			;ShutdownMachine()

		Case $Start_PG
			Start_PG()

		Case $Stop_PG
			Stop_PG()

		Case $Start_EX
			Start_EX()

		Case $Stop_EX
			Stop_EX()

		Case $Shut_down_PC
			ShutdownMachine()

		Case $Reboot_PC
			Reboot()

	EndSwitch
			DllClose($dll)
WEnd

EndFunc




уточняющий вопрос: как изменить цвет именно для определённой кнопки
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
cobra2029 [?]
как изменить их цвет при нажатии кнопки таб
Попробуйте так.
Код:
#include <GUIConstantsEx.au3>

$iOld = 0
HotKeySet('{TAB}', '_Color')

Dim $aButton[4] = [3]
Dim $aColor[4] = [0xFF0000, 0x0000FF, 0x00FF00, 0xFFFFFF]
$hGui = GUICreate('Test', 300, 200)
For $i = 1 To $aButton[0]
	$aButton[$i] = GUICtrlCreateButton('Button ' & $i, 20 + ($i - 1) * 90, 10, 80, 25)
	GUICtrlSetBkColor(-1, $aColor[$iOld])
Next
$nTab = GUICtrlCreateTab(20, 50, 260, 140)
For $i = 1 To 4
	GUICtrlCreateTabItem('TabItem ' & $i)
Next
GUICtrlCreateTabItem('')
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nTab
			$iTab = GUICtrlRead($nTab)
			For $i = 1 To $aButton[0]
				GUICtrlSetBkColor($aButton[$i], $aColor[$iTab])
			Next
	EndSwitch
WEnd
Func _Color()
	;Local $i_Random
	;While $iOld = $i_Random
	;	$i_Random = Random(0, 3, 1)
	;WEnd
	;$iOld = $i_Random
	$iOld += 1
	If $iOld > 3 Then $iOld = 0
	For $i = 1 To $aButton[0]
		GUICtrlSetBkColor($aButton[$i], $aColor[$iOld])
	Next
EndFunc   ;==>_Color
 
Автор
C

cobra2029

Новичок
Сообщения
54
Репутация
0
Наверно не так выразился, то что Вы написали понятно и так.


Мне надо что бы при выборе кнопки в GUI изменился её цвет.

Кнопка выбирается нажатием клавиши TAB на клавиатуре.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
cobra2029,
Я не правильно Вас понял. А так?
Код:
#include <GUIConstantsEx.au3>

$iIndex = 0
HotKeySet('{TAB}', '_Color')

Dim $aButton[7] = [6]
Dim $aColor[2] = [0xFF0000, 0x0000FF]
$hGui = GUICreate('Test', 400, 100)
For $i = 1 To $aButton[0]
	$aButton[$i] = GUICtrlCreateButton('Button ' & $i, 10 + ($i - 1) * 65, 35, 55, 30)
	GUICtrlSetBkColor(-1, $aColor[0])
Next
$nLabel = GUICtrlCreateLabel('', 0, 0, 1, 1)
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $aButton[1] To $aButton[$aButton[0]]
			MsgBox(64, 'Info', GUICtrlRead($nMsg))
			If $iIndex Then
				GUICtrlSetState($aButton[$iIndex], $GUI_FOCUS)
			Else
				GUICtrlSetState($nLabel, $GUI_FOCUS)
			EndIf
	EndSwitch
WEnd

Func _Color()
	$iIndex += 1
	If $iIndex > $aButton[0] Then $iIndex = 1
	GUICtrlSetState($aButton[$iIndex], $GUI_FOCUS)
	GUICtrlSetBkColor($aButton[$iIndex], $aColor[1])
	If $iIndex > 1 Then
		GUICtrlSetBkColor($aButton[$iIndex - 1], $aColor[0])
	Else
		GUICtrlSetBkColor($aButton[$aButton[0]], $aColor[0])
	EndIf
EndFunc   ;==>_Color
 
Верх