Что нового

[Элементы GUI] перебор CheckBox

nero0711

Новичок
Сообщения
4
Репутация
0
Пытаюсь сделать перебор Checkbox`ов в котором если он Check то добавить имя CheckBox`а в ListBox если не Check то пропустить.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

$Form1 = GUICreate("Inst", 322, 261, 500, 500, BitOr($WS_BORDER, $WS_POPUP, $WS_SYSMENU,$WS_EX_TOPMOST), $WS_EX_CONTROLPARENT)
$Group1 = GUICtrlCreateGroup("so:", 8, 0, 305, 145)
$Checkbox1 = GUICtrlCreateCheckbox("1", 16, 16, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("2", 16, 40, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("3", 16, 64, 97, 17)
$Checkbox4 = GUICtrlCreateCheckbox("4", 16, 88, 97, 17)
$Checkbox5 = GUICtrlCreateCheckbox("5", 168, 16, 97, 17)
$Checkbox6 = GUICtrlCreateCheckbox("6", 168, 40, 97, 17)
$Checkbox7 = GUICtrlCreateCheckbox("7", 168, 64, 97, 17)
$Checkbox8 = GUICtrlCreateCheckbox("8", 168, 88, 97, 17)
$Button1 = GUICtrlCreateButton("Inst", 16, 112, 75, 25)
$Button2 = GUICtrlCreateButton("test", 96, 112, 75, 25, 0)

GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("set:", 8, 144, 305, 105)
$List1 = GUICtrlCreateList("", 16, 160, 161, 84)
;GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

Func Inst()
for $i=1 to 8
If GUICtrlRead($CheckBox[$i]) = GUI_CHECKED then GUICtrlSetData($List1,GUICtrlRead($Checkbox[$i],1))
Next
EndFunc

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		
	 Case $Button1
		Inst()

		
		 
		 
					
	EndSwitch
WEnd


ругается на $CheckBox[$i] не могу понять в чем дело

d2WCEjwQ.jpg
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.






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

nero0711 [?]
ругается на $CheckBox[$i] не могу понять в чем дело
Можно весь скрипт увидеть? Или хотя бы часть с созданием CheckBox`ов?


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

Так не ругается.
Код:
#include <GUIConstantsEx.au3>

Global $hGui, $nBtn, $iRand = Random(5, 25, 1), $aChBox[$iRand + 1] = [$iRand], $sMess

$hGui = GUICreate('Test', 200, $iRand * 30 + 50)
For $i = 1 To $aChBox[0]
	$aChBox[$i] = GUICtrlCreateCheckbox('Checkbox ' & $i, 50, 10 + ($i - 1) * 30, 100, 20)
	If Random(0, 1, 1) Then GUICtrlSetState(-1, $GUI_CHECKED)
Next
$nBtn = GUICtrlCreateButton('Click me', 50, 10 + $iRand * 30, 100, 30)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nBtn
			For $i = 1 To $aChBox[0]
				If BitAND(GUICtrlRead($aChBox[$i]), $GUI_CHECKED) Then $sMess &= GUICtrlRead($aChBox[$i], 1) & @LF
			Next
			If $sMess Then
				MsgBox(64, 'Checked', StringTrimRight($sMess, 1), 0, $hGui)
				$sMess = ''
			Else
				MsgBox(16, 'Error', ' No Checked', 0, $hGui)
			EndIf
	EndSwitch
WEnd
Или так.
Код:
#include <GUIConstantsEx.au3>

Global $hGui, $nBtn, $iRand = Random(5, 25, 1), $aChBox[$iRand], $sMess

$hGui = GUICreate('Count: ' & $iRand, 200, $iRand * 30 + 50)
For $i = 0 To $iRand - 1
	$aChBox[$i] = GUICtrlCreateCheckbox('Checkbox ' & $i + 1, 50, 10 + $i * 30, 100, 20)
	If Random(0, 1, 1) Then GUICtrlSetState(-1, $GUI_CHECKED)
Next
$nBtn = GUICtrlCreateButton('Click me', 50, 10 + $iRand * 30, 100, 30)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nBtn
			For $nTmp In $aChBox
				If BitAND(GUICtrlRead($nTmp), $GUI_CHECKED) Then $sMess &= GUICtrlRead($nTmp, 1) & @LF
			Next
			If $sMess Then
				MsgBox(64, 'Checked', StringTrimRight($sMess, 1), 0, $hGui)
				$sMess = ''
			Else
				MsgBox(16, 'Error', ' No Checked', 0, $hGui)
			EndIf
	EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
nero0711 сказал(а):
ругается на $CheckBox[$i] не могу понять в чем дело

Нумерация массива начинается с 0, а не с 1.
 
Автор
N

nero0711

Новичок
Сообщения
4
Репутация
0
что то не катит, про бывал по примерам не работает! ниже приложил картинку ошибки. Может я что то неправильно делаю?

Нумерация массива начинается с 0, а не с 1.
дело не в этом!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
nero0711
1. Добавьте в начало
Код:
#include <GUIConstantsEx.au3>

2. Поменяйте на
Код:
Func Inst()
	For $i = $Checkbox1 To $Checkbox8
		If GUICtrlRead($i) = $GUI_CHECKED Then GUICtrlSetData($List1, GUICtrlRead($i, 1))
	Next
EndFunc   ;==>Inst

У Вас вообще нет массива в скрипте, вот откуда ошибка.
 
Автор
N

nero0711

Новичок
Сообщения
4
Репутация
0
Спасибо, теперь я понял в чем ошибка!
 
Верх