Что нового

[Элементы GUI] Проверить состояние произвольного количества Checkbox-ов

Сообщения
36
Репутация
-1
Привет. Есть следующая задача: создается GUI с произвольным количеством Checkbox-ов, их наименования берутся из массива. Как проверить какие именно отметил пользователь?
Код:
Func GUI($aArray2D, $NumberOfGroups)
GUICreate("", 300, 300, -1, -1, $WS_OVERLAPPEDWINDOW)
GUISetState()
GUICtrlCreateLabel("1234", 20, 10, 260)
GUICtrlSetFont(-1, 9)
$Button = GUICtrlCreateButton("OK", 125, 265, 50)
$up = 30
For $i = 0 To $NumberOfGroups - 1
If $aArray2D[$i][1] = "" Then ExitLoop
$var = GUICtrlCreateCheckbox($aArray2D[$i][1], 20, $up)
$up +=20
Next
While 1
   $msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
   ExitLoop
Case $msg = $Button
For $i = 0 To $NumberOfGroups - 1
If GUICtrlRead($var) = $GUI_CHECKED Then
   Return $aArray2D[$i][1]
EndIf
Next
ExitLoop
EndSelect
WEnd
EndFunc

В этом примере $NumberOfGroups может быть любого числового значения. Массив $aArray2D тоже может быть произвольной размерности. Я думал называть переменную $var таким образом:
Код:
$var & $i
, но так синтаксис не разрешает.
 
Автор
fyviffitoffo
Сообщения
36
Репутация
-1
Код:
For $i = 0 To $NumberOfGroups - 1
If $aArray2D[$i][1] = "" Then ExitLoop
GUICtrlCreateCheckbox($aArray2D[$i][1], 20, $up)
$hCheckbox = GUICtrlGetHandle(-1)
_ArrayAdd($avArrayCheckbox, $hCheckbox)
$up +=20
Next
$size = UBound($avArrayCheckbox)
While 1
   $msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
   ExitLoop
Case $msg = $Button
For $i = 0 To $size - 1
If BitAND(GUICtrlRead($avArrayCheckbox[$i]), $GUI_CHECKED) Then
   MsgBox(0, "", $aArray2D[$i][1])
EndIf
Next
ExitLoop
EndSelect
WEnd

придумал такой вариант, но почему то не проверяет отмеченный Checkbox.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
fyviffitoffo [?]
почему то не проверяет отмеченный Checkbox
Замените две строки
Код:
GUICtrlCreateCheckbox($aArray2D[$i][1], 20, $up)
$hCheckbox = GUICtrlGetHandle(-1)
на одну
Код:
$hCheckbox = GUICtrlCreateCheckbox($aArray2D[$i][1], 20, $up)
 
Автор
fyviffitoffo
Сообщения
36
Репутация
-1
Спасибо.
Код:
GUICtrlGetHandle
не работает с Checkbox-ами?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
GUICtrlRead()
не работает с хендлами
 
Верх