Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Перехватчик - Перехватывать события разными классами? (число прочтений - 1819 )
venger
Junior Member
**
Отсутствует



Сообщений: 23
Местоположение: Одесса
Зарегистрирован: 19. Мая 2010
Пол: Мужской
Перехватчик - Перехватывать события разными классами?
19. Мая 2010 :: 08:28
Печать  
Можно ли разными классами перехватывать события ГМ и ГК? Т.е. есть у меня класс перехвата событий для разграничения доступа прав на доки, я хочу сделать отдельный класс для другой задачи, но в котором нужно тоже перехватывать события. Одновременно эти два класса я использовать не могу (пробовал), так что все (код) в одном классе мешать получается?
  
Наверх
wwwICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик - Перехватывать события разными классами?
Ответ #1 - 19. Мая 2010 :: 08:43
Печать  
Дык создавай несколько экземпляров одного класса и привет..
Или используй несколько классов.
  
Наверх
 
IP записан
 
venger
Junior Member
**
Отсутствует



Сообщений: 23
Местоположение: Одесса
Зарегистрирован: 19. Мая 2010
Пол: Мужской
Re: Перехватчик - Перехватывать события разными классами?
Ответ #2 - 19. Мая 2010 :: 09:19
Печать  
[quote author=Eprst link=1274257686/0#1 date=1274258592]
Или используй несколько классов.
[/quote]

Есть класс "КлассПерехватСобытийРеализация", он перехватывает некоторые события, связанные с интерактивным изменением доков... типа подсистема доп. прав.

Код класса примерно такой:
[code]
//-------------------------------------------------------
Перем КонтФормы;
//-------------------------------------------------------

//-------------------------------------------------------
Функция GetThis(Конт) Возврат Конт; КонецФункции
//-------------------------------------------------------

//-------------------------------------------------------
Процедура ВключитьПерехватСобытийГК(Конт = "") Экспорт
     Если ТипЗначенияСтр(Конт) = "ГрупповойКонтекст" Тогда
           КонтФормы = Конт;
     КонецЕсли;
     Перехватчик = СоздатьОбъект("Перехватчик");
     Перехватчик.ПерехватитьСобытияГК(КонтФормы,Контекст);
КонецПроцедуры  // ВключитьПерехватСобытийГК
//-------------------------------------------------------

//-------------------------------------------------------
Процедура СобытиеГМ_ПриОткрытии(Конт, ФлагЧтенияНастройки) Экспорт
     ФормаРасш = СоздатьОбъект("РасширениеФормы");
     ФормаРасш.УстановитьФорму(Конт.Форма);
     Если Найти(ФормаРасш.ПолныйТипОбъекта(),"Документ.")>0 Тогда
           ПерехватчикСобытийФормы = СоздатьОбъект("КлассПерехватСобытий");   
           ПерехватчикСобытийФормы.ВключитьПерехватСобытийГК(Конт);
     КонецЕсли;
КонецПроцедуры  // СобытиеГМ_ПриОткрытии
//-------------------------------------------------------
[/code]

И потом перехват и реакция на некоторые события форм (доков)...

В глобальном модуле я подключаю его так:
[code]
     Settings1cpp = СоздатьОбъект("SettingsManager");
     Settings1cpp.Set("EnableHookEventsGroupContext",1);
     ОбъектПерехватчикСобытийГМ = СоздатьОбъект("КлассПерехватСобытий");
     Перехватчик = СоздатьОбъект("Перехватчик");
     Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ОбъектПерехватчикСобытийГМ);
[/code]

И таким образом он и работает...

Теперь я хочу другую подсистему написать, которая тоже будет перехватывать открытие доков (но подсистема по правам должна тоже работать параллельно). Лучше бы ее вынести в отдельный класс, перехватывать в нем тоже нужные события и вперед.

Но подключить этот еще один класс на события глобального модуля уже нельзя....

Т.е. получается, что код обоих подсистем надо мешать в одном классе перехвата событий, что не очень хочется....

Других вариантов нет?
  
Наверх
wwwICQ  
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Перехватчик - Перехватывать события разными классами?
Ответ #3 - 19. Мая 2010 :: 09:56
Печать  
Можно попробовать через МенеджерСобытий. Сделать один класс, который только перехватывает события ГК или ГМ и отправляет события остальным объектам. А в них уже реализация разных подсистем.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик - Перехватывать события разными классами?
Ответ #4 - 19. Мая 2010 :: 10:13
Печать  
Не можно, а нужно использовать что-то вроде менеджера событий.
Заявляю ответственно как разработчик Перехватчика Улыбка
  

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



Сообщений: 23
Местоположение: Одесса
Зарегистрирован: 19. Мая 2010
Пол: Мужской
Re: Перехватчик - Перехватывать события разными классами?
Ответ #5 - 19. Мая 2010 :: 10:33
Печать  
Еще такой вопрос. В документации наткнулся:

[quote]
Таким образом, для обработки цепочки из нескольких перехватчиков существуют методы ВыполнитьСобытиеГК ВыполнитьСобытиеГлобальногоМодуля
[/quote]

[code]
Перехватчик. ВыполнитьСобытиеГК (КонтПерехваченнойФормы, "ПриЗакрытии", ПредыдущийОбработчик);
[/code]

Что есть "предыдущий обработчик"?
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать