Снегопат
https://snegopat.ru/forum/

Ошибка динамического подключения обработчика событий формы
https://snegopat.ru/forum/viewtopic.php?f=1&t=181
Страница 1 из 1

Автор:  kuntashov [ 02 май 2012, 08:39 ]
Заголовок сообщения:  Ошибка динамического подключения обработчика событий формы

Эксперементирую с программной работой с формой скрипта. Наткнулся на один неприятный момент: при попытки динамического подключения обработчика события формы (при помощи УстановитьДействие/SetAction) с параметрами, возникает ошибка "Недопустимое значение параметра № 2 (Процедура, указанная в качестве обработчика события, имеет неверное количество параметров".

При этом обработчики без параметров аттачатся "на ура".

Пример воспроизведения этой ошибки я набросал в скрипте scripts\Tests\ScriptFormExample\scrFormExample.js (см. коммит e012cbd42c).

Ошибку получим, если в MyScriptForm() раскомментировать вызов

Код:
    this.attachEvent('BeforeClose');


Обратите внимание, что для событий OnOpen и OnClose, не имеющих параметров, обработчики назначаются успешно и отрабатывают. Подозреваю, что все это из-за того, что количество параметров функции в JavaScript неограничено, даже если параметры описаны в определении функции явно. Но сам Снегопат как-то же умеет назначать обработчики?

Саша, вопрос конечно же, в первую очередь к тебе: возможно ли как-то устранить эту ошибку и сделать так, чтобы обработчики с параметрами также можно было назначать динамически?

Автор:  orefkov [ 02 май 2012, 10:12 ]
Заголовок сообщения:  Re: Ошибка динамического подключения обработчика событий фор

Сейчас у меня просто возвращает 0 при запросе количества параметров.
Видимо, статически назначенным обработчикам деваться уже некуда, и они работают.
Ок, я попробую извлекать и выдавать реальную инфу о количестве параметров.

Автор:  kuntashov [ 02 май 2012, 10:40 ]
Заголовок сообщения:  Re: Ошибка динамического подключения обработчика событий фор

Заранее спасибо! С проблемой столкнулся при реализации класса ScriptForm, который бы облегчил разработчикам программирование формы скрипта и который бы можно было наследовать (делаю его потомком stdlib.Class).

Автор:  orefkov [ 03 май 2012, 10:18 ]
Заголовок сообщения:  Re: Ошибка динамического подключения обработчика событий фор

Поправил, скоро зарелизю.

Автор:  kuntashov [ 16 май 2012, 22:22 ]
Заголовок сообщения:  Re: Ошибка динамического подключения обработчика событий фор

Продолжаю эксперементировать, столкнулся еще с одним непонятным поведением.

При попытке динамически назначить обработчик нажатия кнопки командной панели возникает исключение "Объект не поддерживает это свойство или метод", но обработчик успешно назначается и корректно отрабатывает в последствии.

Порядок воспроизведения (скрипт и форма, демонстрирующие проблему - http://snegopat.ru/scripts/info/12ab0d854d):

1. Открываем форму скрипта, вызвав макрос "Показать".

2. Обращаем внимание, что поскольку обработчик кнопки командной панели "Кнопка 2" не назначен на момент открытия формы, то сама кнопка не доступна.

3. Нажимаем на кнопку "Кнопка 1" на форме. В обработчике нажатия этой кнопки выполняется установка действия нажатия на кнопку "Кнопка 2" командной панели. Обработчик - метод КомманднаяПанель1Кнопка2 объекта MyScriptForm. При нажатии на кнопку выбрасывается исключение "Объект не поддерживает это свойство или метод".

4. Закрываем окно с исключением (отладку не начинаем). Видим, что кнопка "Кнопка 2" стала доступной. При нажатии на кнопку "Кнопка 2" выводится сообщение 'При нажатии кнопки командной панели', т.е. обработчик отрабатывает.

Обходится исключение его "проглатыванием" в конструкции try/catch с пустым обработчиком исключения.

Автор:  orefkov [ 24 май 2012, 20:40 ]
Заголовок сообщения:  Re: Ошибка динамического подключения обработчика событий фор

Ок, посмотрю, разберусь. На следующей неделе.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/