Что нового

Кнопка с двумя состояниями

The Dream

Новичок
Сообщения
393
Репутация
3
Прошу прощение, думал пару минут над названием темы, но так и не придумал что-то вообще подходящее.

Посоветуйте пожалуйста кнопку которая имеет два состояния: при нажатии на кнопку, она остается быть нажатой, пока мы снова не нажали на нее.

Для чего это? Есть скрипт, в котором проверяется была ли нажата кнопка. Но там не успеть отловить событие от GUIGetMsg(), что весьма огорчает. Но к примеру с GUICtrlCreateCheckbox() проблем нет - поставил, снял, ничего отлавливать не нужно - просто считываем состояние GUICtrlCreateCheckbox().

Но это не совсем элегантно - использовать checkbox как кнопку.. :-X

Уважаемые модераторы, если будет не трудно - переименуйте тему на что-то более подходящее, если считаете нужным.


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

Проблему решил с использованием с "отловом" событий кнопки, созданной с помощью _GUICtrlButton_Create().

Пример в справке :whistle:
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
The Dream
Код:
GUICtrlSetOnEvent


Код:
Func __OnClick()
    $_Clicked = True
    GUICtrlSetState( Button, $GUI_DISABLE) ;Отключаем до тех пор, пока нажатие не будет обработано.
EndFunc

Или вот так без посторонних библиотек. Всегда использую подобные конструкции если нет возможности обработать кнопку сразу.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

$hGUI = GUICreate('Test Script', 300, 200)
$iButton = GUICtrlCreateCheckbox('Button', 20, 40, 100, 40, BitOr($GUI_SS_DEFAULT_CHECKBOX, $BS_PUSHLIKE))

GUISetState(@SW_SHOW, $hGUI)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
 
Автор
T

The Dream

Новичок
Сообщения
393
Репутация
3
CreatoR, Благодарю!


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

CreatoR, подскажите, можно ли как-то придать цвет элементу GUICtrlCreateCheckbox -?

Спасибо.
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
The Dream
Посмотреть в справке пример GUIRegisterMsg, GUICtrlSetColor, GUICtrlCreateCheckbox
 
Автор
T

The Dream

Новичок
Сообщения
393
Репутация
3
AZJIO, спасибо, тем не менее не все так просто с GUICtrlCreateCheckbox()
 
Верх