Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Трансляция событий COM-объектов (число прочтений - 7758 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Трансляция событий COM-объектов
23. Января 2014 :: 08:54
Печать  
Вот, наконец-то сделал. COM-объект создаём так
Код
Выбрать все
SvcsvcContainer = СоздатьОбъект("COM_OBject");
"), "FilterValue", "Svcsvc.Service");
Svcsvc = SvcsvcContainer.Объект;
 

После чего события будут транслироваться в соотв. процедуры
FilterValue_OnChangeFilter(НовыйФильтр, НовыйСостав)
FilterValue_OnItemSelect(стр, НовыйСостав)
FilterValue_OnTimer(идТаймер)

Собственно, FilterValue+Форма.ПолеВыбораЗначения - основное, для чего всё затеяно. Пока.
В svcsvc добавлены вышеперечисленные события, и методы таймера
CreateTimer([in] LONG nInterval, [in] LONG nTimerID);
StopTimer([in] LONG nTimerID);
CreateSingleTimer([in] LONG nInterval, [in] LONG nTimerID); //Одноразовый Таймер
Так что теперь мы имеем человеческую возможность создания таймера внутри класса. Таймер же нужен для простой вещи: показать реакцию на ввод пользователя в поле выбора по таймауту, а не по количеству символов.

Для ТП добавил 2 события
"ПриАктивизации", "OnActivate"
"ПриДеактивизации", "OnDeactivate"

В архиве бинарники, добавленные исходники для 1С++, полные исходники svcsvc, примеры использования.
  

icpp_events.rar ( 780 KB | Загрузки )
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Трансляция событий COM-объектов
Ответ #1 - 23. Января 2014 :: 09:26
Печать  
Спасибо!
  

1&&2&&3
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Трансляция событий COM-объектов
Ответ #2 - 23. Января 2014 :: 09:37
Печать  
Какую задержку уместно ставить.. ну так, на вскидку ?..
И это, таймаут "независимый" в событиях ?
Т.е при продолжении набора уже работает, или нет ?..
Пример, ввожу  "машадура"  и он по таймауту уже "отловил" "маша" и запрос фильтранул всех маш ?...
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Трансляция событий COM-объектов
Ответ #3 - 23. Января 2014 :: 09:47
Печать  
Задержку ставлю 300 мс. Чисто по ощущениям подобрал.

Таймеров м.б. дофига - определяется переданным ИД таймера. Если таймер с таким ИД уже есть, то он перезапускается по новой. При нажатии на кнопу я всегда запускаю один и тот же таймер. Таким образом, как тока пауза между буквами будет больше таймаута, то возникнет событие таймера.

Т.е. в твоём примере, если ты сделал паузу после "маша", то именно так и будет.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Трансляция событий COM-объектов
Ответ #4 - 23. Января 2014 :: 10:23
Печать  
Ясно, спасибо
  
Наверх
 
IP записан
 
Igor Nikolaenko
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 47
Зарегистрирован: 01. Апреля 2010
Re: Трансляция событий COM-объектов
Ответ #5 - 28. Января 2014 :: 12:20
Печать  
Спасибо.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Трансляция событий COM-объектов
Ответ #6 - 11. Марта 2014 :: 05:53
Печать  
взял на себя ответственность залить изменения в репозитарий
  

1&&2&&3
Наверх
 
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: Трансляция событий COM-объектов
Ответ #7 - 18. Августа 2014 :: 17:30
Печать  
ADirks писал(а) 23. Января 2014 :: 08:54:
"), "FilterValue", "Svcsvc.Service");

тупой вопрос... А по параметрам подсказочку можно всё-таки?
  
Наверх
GTalkICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Трансляция событий COM-объектов
Ответ #8 - 19. Августа 2014 :: 05:50
Печать  
Параметры COM_OBject::СоздатьОбъект(оПолучательСобытий, стрПрефиксОбработчиковСобытий, strCOMObjectID)

оПолучательСобытий - объект - получатель событий, м.б. экземпляром класса, или контекстом

стрПрефиксОбработчиковСобытий - префикс процедур-обработчиков. Т.е., если у обработчика есть процедура <Prefix>_<EventName>(), то она будет вызвана при наступлении соотв. события.

strCOMObjectID -  идентификатор COM-объекта


ну и напомню, что события транслируются только от COM-объектов, у которых реализован интерфей IProvideClassInfo2
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать