Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "Перехватчик" (число прочтений - 12363 )
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Класс "Перехватчик"
17. Октября 2006 :: 12:14
Печать  
Кто объяснит как он работает?
Сразу признаюсь что тупой... потому как у самого ничего не получилось

пример:

Процедура ТЕСТ()
     ОбъектПерехватчик=СоздатьОбъект("Перехватчик");
     ОбъектПерехватчик.ПерехватитьСобытияГК(Контекст);
КонецПроцедуры

процедура в модуле формы (форма обработки)


Ошибка:
(6)}: ПерехватитьСобытияГлобальногоМодуля: объект-перехватчик должен быть пользовательским классом 1С++
  
Наверх
wwwICQ  
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс "Перехватчик"
Ответ #1 - 17. Октября 2006 :: 12:27
Печать  
Вопрос снят
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #2 - 17. Октября 2006 :: 12:28
Печать  
Код для любой формы
Код
Выбрать все
Процедура ТЕСТ()
  ВстроенныйОбъектПерехватчик = СоздатьОбъект("Перехватчик");
  КОППерехватчик = СоздатьОбъект("КОППерехватчик");
  ВстроенныйОбъектПерехватчик.ПерехватитьСобытияГК(Контекст, КОППерехватчик);
КонецПроцедуры
 



и события из формы будут поступать в класс КОППерехватчик

Например, если в этом классе написать
Код
Выбрать все
Процедура ПриЗакрытии() Экспорт // без Экспорт работать НЕ БУДЕТ!
  Предупреждение("КОП::ПриЗакрытии");
КонецПроцедуры
 


то при закрытии формы будет показано предупреждение
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Класс "Перехватчик"
Ответ #3 - 17. Октября 2006 :: 13:21
Печать  
Сегодняшняя ночная сборка 2.5.0.0
Почему-то дата 16.10.06 и не создается объект "Перехватчик"  Злой
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Класс "Перехватчик"
Ответ #4 - 17. Октября 2006 :: 13:42
Печать  
Насколько я понял, ночная сборка 2.5.0.0 лежит теперь по адресу http://www.1cpp.ru/files/nightbuild.zip

А что же тогда находится по адресу http://www.1cpp.ru/files/nightbuild-2.5.alpha.zip (сначала забрал отсюда)?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #5 - 17. Октября 2006 :: 13:55
Печать  
Альфа-файл - устарел (а его дата вообще неверна!)
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Класс "Перехватчик"
Ответ #6 - 17. Октября 2006 :: 13:58
Печать  
Цитата:
Насколько я понял, ночная сборка 2.5.0.0 лежит теперь по адресу http://www.1cpp.ru/files/nightbuild.zip

Так отсюда теперь 2.5.0.0 брать?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #7 - 17. Октября 2006 :: 15:10
Печать  
vip писал(а) 17. Октября 2006 :: 13:58:
Цитата:
Насколько я понял, ночная сборка 2.5.0.0 лежит теперь по адресу http://www.1cpp.ru/files/nightbuild.zip

Так отсюда теперь 2.5.0.0 брать?

да

а альфу я удалю, чтобы не путать людей.

и ссылки на ночники обновил на главной страничке
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #8 - 18. Октября 2006 :: 06:20
Печать  
исправь
Цитата:
ночная сборка ветки 2.3

на
ночная сборка ветки 2.0.3
  

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #9 - 18. Октября 2006 :: 08:26
Печать  
trad писал(а) 18. Октября 2006 :: 06:20:
исправь
Цитата:
ночная сборка ветки 2.3

на
ночная сборка ветки 2.0.3

угу, спс
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #10 - 18. Октября 2006 :: 13:38
Печать  
fez писал(а) 18. Октября 2006 :: 08:26:
угу, спс
дык, нуна исправить
  

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #11 - 19. Октября 2006 :: 05:53
Печать  
Дык исправил. Рефреш нажми.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #12 - 19. Октября 2006 :: 06:55
Печать  
Комменты/предложения по поводу класса "Перехватчик"

Цитата:
Вопрос:
Возможно ли перехват событий использовать для нескольких объектов (т.е. передача события нескольким объектам по очереди) или только в одном объекте.


Ответ:
Пока обработка возможна в одном объекте для глобальника или одной/каждой формы (т.е. для разных форм возможны различные обработчики) .


Я думаю, что этот один объект должен выступить в роли Делегата/Менеджера для других объектов

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

В итоге не происходит дублирования реализации (т.е. я не вставлял вызов/использование Делегата/Менеджера событий в класс "Перехватчик") и разработчик может сам сделать удобную для него модель поведения.

Я сделал так специально, чтобы большая гибкость была возможна, да и реализация намного проще Улыбка

Для получения уже существующего обработчика я добавил 2 метода ПолучитьПерехватчикХХХ

  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #13 - 31. Октября 2006 :: 03:36
Печать  
Как подключить перехватчик в самом КОП?
например:
Код
Выбрать все
	клУправлениеНастр=СоздатьОбъект("УправлениеНастройками");
	клУправлениеНастр.Включить("ПерехватитьСобытияГК");

	клСервис=СоздатьОбъект("Сервис");
	Конт=""; клСервис.АктивныйКонтекст(Конт);

	клПерехватчик=СоздатьОбъект("Перехватчик");
	клПерехватчик.ПерехватитьСобытияГК(Конт,Сам(Контекст));
 


неработает. Смущённый Как нужно? Цитата:
ПерехватитьСобытияГлобальногоМодуля: объект-перехватчик должен быть пользовательским классом 1С++
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #14 - 31. Октября 2006 :: 04:37
Печать  
1. Ты выбери то, что тебе нужно - ПерехватитьСобытияГК или ПерехватитьСобытияГлобальногоМодуля.
Для этих методов нужны разные классы-обработчики.

2. Но схема перехвата едина для обоих методов.
Код
Выбрать все
клПерехватчик.ПерехватитьСобытияГК(Конт, Контекст);
клПерехватчик.ПерехватитьСобытияГлобальногоМодуля(Контекст);
 


т.е. можно просто указать Контекст, а не Сам(Контекст) Улыбка

3. Так что ты в общем все сделал правильно.
Что у тебя не работает? Какие события не обрабатываются?
Включая телепата - ИМХО, что при данном способе перехвата (т.к. непонятно, в какой момент вызывается данный код) как минимум должен сработать перехват события ПриЗакрытии !

4. В классе-перехватчике должны быть обработчики типа
Процедура ПриЗакрытии() Экспорт
или
Процедура Событие_ПриЗакрытии() Экспорт

Обрати внимание на Экспорт
  

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