Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Цепной перехват (число прочтений - 3056 )
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Цепной перехват
30. Апреля 2008 :: 07:11
Печать  
Хочу, чтобы одно и то же событие (например, ПослеОткрытия) на форме перехватывали два класса по очереди. А после чего вызвали оригинальное событие. Казалось бы, чего проще? Пишем:
Код
Выбрать все
Класс 1
Перем Перехватчик, ПредОбработчик;
Процедура Конструктор()
	Перехватчик = СоздатьОбъект("Перехватчик");
	ПредОбработчик = Перехватчик.ПерехватитьСобытияГК(внКонтекст, Сам());
КонецПроцедуры

Процедура Событие_ПослеОткрытия() Экспорт
	Сообщить("Класс 1 - ПослеОткрытия");
	Перехватчик.ВыполнитьСобытиеГК(ПредОбработчик, внКонтекст, "ПослеОткрытия");
КонецПроцедуры //Событие
 


Код класса 2 для упрощения - аналогичный, отличается сообщением. В контекст вставим аналогичную процедуру.
При запуске видим сообщения:
Код
Выбрать все
Класс 1 - ПослеОткрытия
Контекст - ПослеОткрытия 


В общем, при выполнении кода цепочка не отрабатывает, т. к. первым вызывается событие в классе, который ПЕРВЫМ подключил перехват событий для данного контекста.
А первый класс, естественно, ничего не знает о последующих перехватчиках.
По моему, это ошибка компоненты - вызов событий нужно начинать с ПОСЛЕДНЕГО зарегистрированного для контекста Перехватчика, тогда будет возможность вызывать цепочки событий.

  

MD.zip ( 11 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #1 - 30. Апреля 2008 :: 10:01
Печать  
Не торопись, это не ошибка компоненты, это ее особенность Улыбка
Поищи ветку "Системная проблема Перехватчика", я там довольно подробно описывал проблему.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #2 - 30. Апреля 2008 :: 10:52
Печать  
artbear писал(а) 30. Апреля 2008 :: 10:01:
Не торопись, это не ошибка компоненты, это ее особенность Улыбка
Поищи ветку "Системная проблема Перехватчика", я там довольно подробно описывал проблему.

Перепутал проблемы Улыбка
У тебя совсем другая ситуация Улыбка
Да, это баг Перехватчика - сейчас он не дает установить второй перехват на уже перехваченную форму Улыбка
Сейчас исправлю Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #3 - 30. Апреля 2008 :: 10:54
Печать  
Зарегистрирован баг
http://www.1cpp.ru/bugs/show_bug.cgi?id=3791
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #4 - 30. Апреля 2008 :: 10:57
Печать  
Кстати, старый баг, чуть ли не с начала реализации Перехватчика Улыбка
ИМХО он был не обнаружен до сих пор как раз из-за вышеуказанной системной проблемы Перехватчика Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #5 - 30. Апреля 2008 :: 11:12
Печать  
Исправлено и в 2.5, и в 3.0
Для 2.5 будет завтра в ночной сборке, по 3.0 уточните у kms
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #6 - 30. Апреля 2008 :: 11:19
Печать  
Вау! Вот это скорость реакцииУлыбка
А я уже в обход стал писатьУлыбка
Спасибо.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #7 - 30. Апреля 2008 :: 11:20
Печать  
Свое детище (Перехватчик) нужно холить и лелеять, чтобы ни пятнышка Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Цепной перехват
Ответ #8 - 30. Апреля 2008 :: 11:21
Печать  
classic писал(а) 30. Апреля 2008 :: 11:19:
Вау! Вот это скорость реакцииУлыбка

ИМХО Был проведен хороший рефакторинг, так что чтение кода выполнить очень просто Улыбка, соответственно легко найти место возникновения ошибки.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать