Что нового

Case для множества элементов

Makrut

Новичок
Сообщения
44
Репутация
2
Здравствуйте. У меня есть несколько кнопок, которые создаются циклом. Мне нужно, чтобы один и тот же Case мог быть вызван каждой из этих кнопок. Я реализовал это так:
Код:
Case $Button[0] To $Button[$students_IP[0][0] - 1] ; $students_IP показывает количество создаваемых кнопок, об этом в спойлере ниже
но позже выяснилось, что в этот же диапазон значений попадают чекбоксы (у кнопок значения 4 + 5 (на каждую кнопку), а у чекбоксов 7 + 5) и при нажатии на них также вызывается Case.

Собственно, вопрос: какую реализацию посоветуете, чтобы не затрагивать чекбоксы?

Создание кнопок
Код:
For $i = 1 To $students_IP[0][0] ;Количество нужных кнопок
    $Button[$i - 1] = _Skin_AddButton($left_pos-72, $top_pos, 64, 64, $pic_pc, $pic_pc, $pic_pc, $pic_pc, $pic_pc, 1)
Next
 
A

Alofa

Гость
Makrut, предоставьте пример кода, в котором можно лицезреть данную проблему.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
Local $gui = GUICreate('', 400, 600, -1, -1)
Global $aBT[1]
Local $tb, $tp = 5, $a = 0, $tc = 40
For $i = 1 To 10
	$tb = GUICtrlCreateButton($i, 5, $tp, 100, 30)
	GUICtrlCreateCheckbox($i, 5, $tc)
	$tc += 55
	$tp += 55
	ReDim $aBT[$a + 1]
	$aBT[$a] = $tb
	$a += 1
Next
GUISetState(@SW_SHOW)
Local $cn = UBound($aBT) - 1

Local $msg

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case -3
			Exit
		Case $msg > 0
			For $i = 0 To $cn
				If $aBT[$i] = $msg Then MsgBox(0, '', 'Нажата кнопка ' & GUICtrlRead($msg))
			Next
	EndSwitch
WEnd
 
Верх