Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Модальные диалоги в обработчиках событий элементов управления формы          
Batchir Подменю пользователя
сообщение 11.02.09, 22:08
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

Состав событий элементов управления весьма разнообразен. Часто в обработчиках ряда событий элементов управления возникает необходимость использования модальных диалоговых окон. При этом не уделяется достаточного внимания к тому, на каком именно событии такое модальное диалоговое окно будет открыто и в каких ситуациях этот обработчик будет вызван.

Один из пример такой ситуации – отсутствие реакции на нажатие кнопки в форме с помощью мыши: активен один элемент управления, а мы мышью щелкаем по другому элементу управления (кнопке). При этом мы видим, что вместо реакции на нажатие кнопки у нас появляется некоторый модальный диалог. И даже после его закрытия требуется повторное нажатие на кнопку, чтобы вызвался обработчик события нажатия на кнопку.

Разберем описанную ситуацию на следующем примере. Пусть есть некоторая форма, в которой размещены элементы управления поле ввода и кнопка. У поля ввода есть обработчик события ПриИзменении():


Процедура ПолеВвода1ПриИзменении(Элемент)
// Вставить содержимое обработчика.
Предупреждение("ПолеВвода1ПриИзменении");
КонецПроцедуры

У кнопки – обработчик события Нажатие():


Процедура Кнопка1Нажатие(Элемент)
// Вставить содержимое обработчика.
Предупреждение("Кнопка1Нажатие");
КонецПроцедуры

Поставим курсор в поле ввода и введем некоторый текст. После этого с помощью мыши нажмем на кнопку: появится модальное диалоговое окно с сообщением "ПолеВвода1ПриИзменении", а нажатие на кнопку отработано не будет. Дело в том, что процедура нажатия на кнопку мышью фактически прервана появлением модального диалога. При нажатии мышью на кнопку форма в процессе активизации другого элемента управления (в данном случае - кнопки) отработает изменение данных в поле ввода, что приводит к вызову его обработчика события ПриИзменении(). Событие "Нажатие" возникает при отпускании левой кнопки мыши на элементе управления "Кнопка". В данном случае отпускание произойдет уже в появившемся модальном диалоге. В этом – причина того, что нажатие на элемент управления "Кнопка" не отрабатывается.

Во избежание такой ситуации нужно по возможности не использовать модальные диалоговые окна в обработчиках событий, которые могут вызываться при сходе с элемента управления.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.06.25, 20:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!