Что нового

[Элементы GUI] изменение состояния checkbox по клику на картинке

sasha-ld

Новичок
Сообщения
48
Репутация
0
Здравствуйте!
В окне программы есть несколько изображений, и равное им количество checkbox. Не получается сделать так чтобы по клику на определенном изображении менял свое состояние определенный checkbox.
Как это можно реализовать, через guioneventmode что то не получается у меня.
Заранее спасибо.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Можно сделать так
Код:
Case $image1
			If GUICtrlRead($checkbox1) = $GUI_CHECKED Then
				GUICtrlSetState($checkbox1, $GUI_UNCHECKED)
			Else
				GUICtrlSetState($checkbox1, $GUI_CHECKED)
			EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
sasha-ld
Или так.
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>

Global $hGui, $iLbl, $iChB

$hGui = GUICreate('Test', 200, 200)
$iLbl = GUICtrlCreateLabel('Click me', 10, 10, 180, 30, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0x00FFFF)
$iChB = GUICtrlCreateCheckbox('Test', 60, 60, 80, 20, BitOR($GUI_SS_DEFAULT_CHECKBOX, $BS_CENTER))
;~ GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $iLbl
			GUICtrlSendMsg($iChB, $BM_SETCHECK, Not GUICtrlSendMsg($iChB, $BM_GETCHECK, 0, 0), 0)
	EndSwitch
WEnd


Добавлено:
Сообщение автоматически объединено:

alex33 [?]
Можно сделать так
Не забывайте про BitAND().
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Ещё два варианта:
Код:
GUICtrlSetState($iChB, BitXOR(GUICtrlRead($iChB), $GUI_CHECKED, $GUI_UNCHECKED))
GUICtrlSetState($iChB, BitAND(GUICtrlRead($iChB), $GUI_CHECKED) ? $GUI_UNCHECKED : $GUI_CHECKED)
 
Верх