Нубокодер
Новичок
- Сообщения
- 75
- Репутация
- 0
Для наглядности накидал небольшую программку.
Смысл такой: пользователь вводит нужное количество кнопок (от 1 до 20). По нажатию на кнопку чуть ниже должно выводиться ее значение.
Не знаю как передать параметры в мою функцию _Button_value ( $value ), т.к. GUICtrlSetOnEvent исполняет ее в виде строки. А без передачи параметра, программа вылетает. Наверно потому что функция не знает о существовании массива. Хотя он объявлен как глобальный. Подскажите как это реализовать. Не писать же для каждой кнопки отдельную функцию. Да и количество кнопок может быть и тысяча, я просто ограничил 20-тью
Смысл такой: пользователь вводит нужное количество кнопок (от 1 до 20). По нажатию на кнопку чуть ниже должно выводиться ее значение.
Не знаю как передать параметры в мою функцию _Button_value ( $value ), т.к. GUICtrlSetOnEvent исполняет ее в виде строки. А без передачи параметра, программа вылетает. Наверно потому что функция не знает о существовании массива. Хотя он объявлен как глобальный. Подскажите как это реализовать. Не писать же для каждой кнопки отдельную функцию. Да и количество кнопок может быть и тысяча, я просто ограничил 20-тью
Код:
#include <IE.au3>
#include <GUIConstantsEx.au3>
$count = 9 ; кол-во кнопок по умолчанию
$count = InputBox ( "Сколько кнопок Вам надо?", "Введите число от 1 до 20", $count ); ввод кол-ва кнопок
If (@error) Or (Not StringIsDigit ( $count )) Or ($count < 1) Or ($count >20) Then Exit ; если ошибка ввода, то выйти
Global $value[$count+1] ; массив значений кнопок
Global $ID[$count+1] ; массив для ID кнопок
Opt("GUIOnEventMode", 1) ; включает режим OnEvent (по событию)
$mainwindow = GUICreate ( "Кнопка и еще кнопка:", $count * 30 + 20, 60 ) ; создание окна
GUISetState(@SW_SHOW) ; видимость окна
For $i = 1 To $count
$value[$i] = Round(Random * 100) ; заполняется массив двухзначными числами
$ID[$i] = GUICtrlCreateButton ( $i, 10 - 30 + 30 * $i , 5, 30, 20) ; вывод кнопок
GUICtrlSetOnEvent ( $ID[$i], "_Button_value" ) ; обработка нажатий на кнопки <<< ВОТ ТУТ НАДО ПЕРЕДАТЬ ПАРАМЕТРЫ В ФУНКЦИЮ _Button_value ( $value, $i ), КАК ЭТО СДЕЛАТЬ?!
Next
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked") ; обработка закрытия программы по крестику
; Тело программы:
While 1
Sleep(1000 * 1)
WEnd
; Раздел функций:
Func _Button_value () ; <<< ВОТ СЮДА НАДО ПЕРЕДАТЬ ПАРАМЕТРЫ _Button_value ( $value, $i ), , КАК ЭТО СДЕЛАТЬ?!
GUICtrlCreateLabel ( $value[$i], 10 - 30 + 30 * $i , 35, 30, 20) ; Вывод значения нажатой кнопки под ней
Return
EndFunc
Func _CLOSEClicked() ; функция выхода
If MsgBox(4 + 256, "Подтверди базар:", "Сыкануть по полной программе и свалить в ужасе?") = 6 Then Exit
Return
EndFunc