|
v7: класс Перехватчик | ☑ | ||
---|---|---|---|---|
0
Rom_Kat
19.10.11
✎
11:53
|
Класс внутри обработкой его текст
//+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* Процедура ВключитьПерехват() Экспорт Настройки = СоздатьОбъект("УправлениеНастройками"); Настройки.Включить("ПерехватитьСобытияГК"); Сообщить("ПерехватитьСобытияГК"); КонецПроцедуры //+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* Процедура Событие_ПриНачалеВыбораЗначения(ВыбЭлемент, ФлСтандОбр) Экспорт Сообщить("Событие "+ВыбЭлемент); КонецПроцедуры //+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* Процедура ПриНачалеВыбораЗначения(ВыбЭлемент, ФлСтандОбр) Экспорт Сообщить("Без Событие "+ ВыбЭлемент); КонецПроцедуры текст в глобальнике ПриНачалеРаботыСистемы ПерехватГК = СоздатьОбъект("ПерехватчикСобытийГК"); ПерехватГК.ВключитьПерехват(); Сообшение "ПерехватитьСобытияГК" отрабатывает, но при наступлении начала выбора значения работа в обработчики не передается. подскажите где я мануал не дочитал и чего не так сделал? |
|||
1
Ёпрст
19.10.11
✎
11:55
|
||||
2
Rom_Kat
19.10.11
✎
11:56
|
мне не надо ГМ. Я хочу только ГК.
|
|||
3
filh
19.10.11
✎
11:56
|
ПриНачалеВыбораЗначения это предопредеоеная процедура.
|
|||
4
Rom_Kat
19.10.11
✎
11:56
|
или ГК не включится без ГМ?
|
|||
5
Rom_Kat
19.10.11
✎
11:57
|
(3)ну конечно
|
|||
6
Rom_Kat
19.10.11
✎
11:57
|
(3)есть у меня и Событие_ПриНачалеВыбораЗначения(ВыбЭлемент, ФлСтандОбр) Экспорт
|
|||
7
Rom_Kat
19.10.11
✎
12:00
|
ПерехватГК = СоздатьОбъект("ПерехватчикСобытийГК");
ПерехватГК.ВключитьПерехват(); Если ЗагрузитьКомпоненту("formex.dll") = 0 Тогда СтатусВозврата(0); Возврат; ИначеЕсли ЗагрузитьКомпоненту("vk_Hook1C.dll") = 0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; Грузится формекс после. |
|||
8
Rom_Kat
19.10.11
✎
12:01
|
(1)Настройки.Сбросить("Проверка типов");
Настройки.Сбросить("Отладка"); //Настройки.Сбросить("Оптимизация"); Настройки.Включить("Оптимизация"); Настройки.Включить("TurboBL"); Это тоже надо для перехватчика? |
|||
9
Ёпрст
19.10.11
✎
12:05
|
(2) ну, тогда rtfm
http://www.1cpp.ru/docum/icpp/html/Hooker.html |
|||
10
Rom_Kat
19.10.11
✎
12:06
|
(9)все это есть и онлайн у меня
|
|||
11
Ёпрст
19.10.11
✎
12:06
|
(8) это осталось от старых версий 1cpp, сейчас эти установки по-умолчанию, при загрузке ВК, нужно только перехват включить
|
|||
12
Rom_Kat
19.10.11
✎
12:06
|
ну так я и использую 3,2,3,12
|
|||
13
Rom_Kat
19.10.11
✎
12:07
|
и включаю только перехват ГК
|
|||
14
Rom_Kat
19.10.11
✎
12:07
|
в доках и не написано, что нужно что-то еще проделать
|
|||
15
Rom_Kat
19.10.11
✎
12:07
|
может глаз замылился - раз 20 уже прочитал...
|
|||
16
Ёпрст
19.10.11
✎
12:09
|
я тебе дал рабочий класс для перехвата всего - хоть событий глобального контекста, хоть локального.
|
|||
17
Rom_Kat
19.10.11
✎
12:11
|
(16)ну это не интересно
|
|||
18
Ёпрст
19.10.11
✎
12:11
|
ну, тогда (9) :)
|
|||
19
Ёпрст
19.10.11
✎
12:12
|
3. Для включения перехвата конкретного контекста формы нужно использовать код
ОбъектПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК"); Перехватчик = СоздатьОбъект("Перехватчик"); Перехватчик. ПерехватитьСобытияГК (КонтФормы, ОбъектПерехватчикГК); или Перехватчик. ПерехватитьСобытияГлобальногоМодуля (ОбъектПерехватчикГМ); или ПредОбработчик = Перехватчик. ПерехватитьСобытияГК (ОбъектПерехватчикГК); ПредОбработчик = Перехватчик. ПерехватитьСобытияГлобальногоМодуля (ОбъектПерехватчикГМ); |
|||
20
Rom_Kat
19.10.11
✎
12:14
|
так я не хочу конкретного.
0. Для использования перехвата должна быть включена настройка 1С++ " ПерехватитьСобытияГК / EnableHookEventsGroupContext " См. SettingsManager 1. Необходимо использовать пользовательский класс 1С++, в котором должны быть определены обработчики соответствующих событий с названием события (ПриЗакрытии, ПриНачалеВыбораЗначения, ПриНажатииКнопкиКлавиатуры) или со специальным названием в виде Событие_НаименованиеСобытия (Событие_ПриЗакрытии, Событие_ПриНачалеВыбораЗначения, СобытиеГМ_ПриНажатииКнопкиКлавиатуры) |
|||
21
Rom_Kat
19.10.11
✎
12:14
|
или конкретно надо включать?
|
|||
22
Rom_Kat
19.10.11
✎
12:17
|
ПредОбработчик = Перехватчик. ПерехватитьСобытияГК (ОбъектПерехватчикГК);
вот это вообще не работает поскольку Синтаксис: ПерехватитьСобытияГК(ГрупповойКонтекстФормы, ОбъектПользовательскогоКлассаОбработчикаПерехвата) Возвращает: тип: Объект или пустое значение. Параметры: ГрупповойКонтекстФормы - тип: ГрупповойКонтекст. ОбъектПользовательскогоКлассаОбработчикаПерехвата - тип: Класс КОП. Пользовательский класс, в котором определены обработчики событий контекста формы. Описание: Перехватывает любые предопределенные события контекста формы, как 1С, так и FormEx. Снять перехват можно с использованием метода СнятьПерехватСобытийГK . Если настройка 1С++ " ПерехватитьСобытияГК / EnableHookEventsGroupContext " не включена, будет выдано исключение. В случае, если первый параметр не является групповым контекстом, выдается исключение. В случае, если второй параметр не является пользовательским классом, выдается исключение. |
|||
23
Ёпрст
19.10.11
✎
12:18
|
тебе перехватывать надо где ?
Это для начала. |
|||
24
Rom_Kat
19.10.11
✎
12:22
|
не понял вопрос. В моей конфе. Обработчик перехвата вот здесь
класс ПерехватчикСобытийГК=ПерехватчикСобытийГК@MD { void Конструктор(); void Деструктор(); void ВключитьПерехват(); void Событие_ПриНачалеВыбораЗначения(Строка ВыбЭлемент, Число ФлСтандОбр); void ПриНачалеВыбораЗначения(Строка ВыбЭлемент, Число ФлСтандОбр); void Событие_ПриОткрытии(); }; Сообщить заменю на код нужный. |
|||
25
Ёпрст
19.10.11
✎
12:24
|
(24) ты не понял, сам же пишешь,>>>так я не хочу конкретного.
вот я и спрашиваю, в каких формах нужен перехват ? И чем не нравится решение в (1) ? :) |
|||
26
Rom_Kat
19.10.11
✎
12:25
|
(25)не понимаю чем мое отличается от этого (1)
|
|||
27
Rom_Kat
19.10.11
✎
12:26
|
перехват нужен событий всех форм.
|
|||
28
Rom_Kat
19.10.11
✎
12:26
|
в том числе и которые будут внесены после.
|
|||
29
Ёпрст
19.10.11
✎
12:27
|
по-умолчанию, реализация перехватов такая - создается класс перехватчик, в котором перехватываюся глобальные методы+спец. методы типа приСозданииКонтекста.
Далее, для перехвата локальных событий формы нужно создать еще один класс, в котором будут перехватываться локальные события. В (1) оба этих класса объединены в 1. Артур, не советует так делать, хотя у меня проблем пока не было. |
|||
30
Ёпрст
19.10.11
✎
12:28
|
для перехвата локальных событий, класс перехватчик создается из глоб. событий - типа ПриОткрытии или ПриСозданияКонтекста (что правильнее).
|
|||
31
Rom_Kat
19.10.11
✎
12:33
|
(30) ну вот это уже более... Почитаю ка я еще повнимательнее ))
|
|||
32
artbear
19.10.11
✎
17:10
|
(29) У народа были какие-то глюки с перехватом некоторых событий, если перехват ГМ и ГК находится в одном классе :(
После простого разнесения на разные классы глюки пропадали. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |