Что нового

Определить состоянние ряда кнопок

Сообщения
80
Репутация
-1
Есть $n количество GUICtrlCreateCheckbox и GUICtrlCreateButton . И одна большая кнопка.

Соответственно могу получить GUICtrlRead($Checkbox[$n]) , где истинно 1 (или 4 который нам не нужен).

GUICtrlGetState($Button[$n] ) для которого истинно 80 = $GUI_ENABLE + $GUI_SHOW при отпущенной кнопке,
и 144 при нажатой $GUI_DISABLE + $GUI_SHOW.
Уж не знаю правильно ли это я беру и что значит $GUI_SHOW.

Нужно выполнить действие когда нажаты все кнопки у которых $Checkbox[$n]=1

Есть такой вот каркас с кучей функций, если что сюда бы и сунуть
Код:
For $i=0 To $w
Select
	Case GUICtrlRead($ckbx[$i]) = 1 And GUICtrlGetState ($iBtn[$i] ) = 80
;всякая фигня
EndSelect
Next


Чтото никак не пойму как сделать чтоб большая кнопка становилась неактивна когда другие нажаты
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Нужно выполнить действие когда нажаты все кнопки у которых $Checkbox[$n]=1
Разъясните этот момент. Кнопки могут быть нажаты одновременно, или проверять факт нажатия этих кнопок , не ясно. Опишите лучше что Вы хотите получить в итоге без того, что делали, а то как-то всё запутанно получилось.
 
Автор
W
Сообщения
80
Репутация
-1
Есть одна такая кнопка
1hhz7qeg36.png


и много таких вкладок
1hhz67x49s.png


Нужна функция которая при нажатии любой из этих кнопок
1hhz9uz3lv.png


будет проверять чтоб на всех вкладках было это
(на других вкладках другие комбинации должны игнорироватся)
1hhzav5rru.png


и тогда делать эту кнопку неактивной,
и активной когда если гдето нажался стоп(без нажатий кнопки на установку птички реагировать не нужно)
( или они были отжаты другой командой, но тогда эту функцию добавить к ней)
1hhz7qeg36.png


Вот я не знаю как это вычислить.
Я даже отнять их не могу потомучто количество нажатых кнопок неизвестно
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Уффф, наверное старею, всё стало не намного понятней :-[ , например
и много таких вкладок
о вкладках раньше не было ни слова, теперь они везде. Эти вкладки где ? У Вас свой GUI типа многостраничного блокнота и на каждой из страниц есть 2 кнопки с 1 чекбоксом ? По нажатию "Пуск" должно запуститься некое действие только там , где установлены чекбоксы и кнопки "Старт" и "Пуск" станут не активнымми, но если остановить процесс кнопкой "Стоп", то кнопка "Пуск " должна стать активной, так ?
 
Автор
W
Сообщения
80
Репутация
-1
Свой гуй с условно настраиваемым количеством одинаковых вкладок.
тут интересны только 2 кнопки и чекбокс.
Думал ещё добавить чекбокс, но там не менее сложный алгоритм получился, а я ещё тут сохранение не придумал, пока сохраняю чекбоксы при закрытии программы

Кнопка Пуск стоит на нулевой вкладке. При нажатии она просто в цикле проверяет каждую кнопку с чекбоксом.
Код:
Func btnAllStart()

For $i=0 To $windowTabs

Select
	Case GUICtrlRead($ckbxBigRun[$i]) = 1 And GUICtrlGetState ($iBtnStart[$i] ) = 80 ; $GUI_DISABLE=64 +16
;----
	GUICtrlSetState($iBtnStart[$i], $GUI_DISABLE)
	GUICtrlSetState($iBtnStop[$i], $GUI_ENABLE)
	GUICtrlSetState($btnAllStop, $GUI_ENABLE)
;---
EndSelect

Next

Какоето действие запускается по активной вкладке
Код:
Func Start()
Local $getTab = GUICtrlRead($iTab)-1
;настройка действия

;изменение кнопок
GUICtrlSetState($iBtnStart[$getTab], $GUI_DISABLE)
GUICtrlSetState($iBtnStop[$getTab], $GUI_ENABLE)
GUICtrlSetState($btnAllStop, $GUI_ENABLE)

;запуск действия
EndFunc
Но вот как отметить недоступность кнопки непонятно.
Какаято защита от повторного нажатия там есть, стиля не хватает


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

Перебрав разные логические варианты 1.5 часа. понял что в логике не понимаю и сумматор у меня не выходит, как оказалось решение проще.
Функция запускается кнопками Пуск и Старт, и вроде как успешно деактивирует кнопку.
Код:
Func _disAllRun()
Local $tmp=-1; не учитываем нулевую вкладку
For $i=0 To $wTabs
Select ; если стоит птичка   и   кнопка нажата   или   птички нет
Case GUICtrlRead($ckbxBigRun[$i]) = 1 And GUICtrlGetState ($iBtnStart[$i] ) = 144 Or GUICtrlRead($ckbxBigRun[$i]) = 4
	$tmp=$tmp+1; перебираем все вкладки
EndSelect
Next

Select
	Case $tmp = $wTabs
		GUICtrlSetState($btnAllStart, $GUI_DISABLE)
EndSelect

EndFunc

Вот только как обратно активировать кнопку на тех же условиях не понятно. Пока активируется по нажатию Стопа.
В данном случае активация не должна быть если снята птичка, но если птичку вернуть, кнопки всё равно не будет, так что наверно пока лучше так
 
A

Alofa

Гость
ra4o сказал(а):
... всё стало не намного понятней :-[...
Ага особенно эти словосочетания:
winix сказал(а):
... проверять чтоб на всех вкладках было это
(на других вкладках другие комбинации должны игнорироватся)...
winix сказал(а):
Свой гуй <...> Какаято защита от повторного нажатия там есть...

winix
Я бы предложил вам предоставить коротенький работоспособный пример вашего кода, но с таким объяснением вам поможет только Справка.
 
Верх