|
v7: 1C++.Трансляция событий от COM-объектов. | ☑ | ||
---|---|---|---|---|
0
ADirks
22.01.14
✎
13:37
|
1cpp форум полёг, а похвастаться охота. Напишу тут пока, вдруг пригодится.
Собственно, subj. События транслируются только от тех объектов, которые поддерживают IProvideClassInfo2 (как и в случае с ActiveX). COM-объект создаём так[code]SvcsvcContainer = СоздатьОбъект("COM_OBject"); SvcsvcContainer.СоздатьОбъект(Сам.ПолучитьБазовыйКласс("Форма.ПолеВыбораЗначения"), "FilterValue", "Svcsvc.Service"); Svcsvc = SvcsvcContainer.Объект; [/code]После чего события будут транслироваться в соотв. процедуры 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); //Одноразовый Таймер Так что теперь мы имеем человеческую возможность создания таймера внутри класса. Таймер же нужен для простой вещи: показать реакцию на ввод пользователя в поле выбора по таймауту, а не по количеству символов. В архиве бинарники, добавленные исходники для 1С++, полные исходники svcsvc, примеры использования. http://rusfolder.com/39575096 |
|||
1
Ёпрст
22.01.14
✎
13:46
|
(0) а когда починят, не в курсе ?
вчера на нехватку памяти жаловался и усё.. скончался :( |
|||
2
Ёпрст
22.01.14
✎
13:47
|
(0) Это для удлбства со ШК ловить события ?..
|
|||
3
ADirks
22.01.14
✎
13:51
|
(1) хорошо, если вообще починят :~(
(2) Если есть соотв. COM-сервер, то можно и ШК. Меня в первую очередь именно хитрое поле ввода интересовало. |
|||
4
Дык ё
22.01.14
✎
13:53
|
(3) а чем вк eventproxy от steban не устроила?
|
|||
5
ADirks
22.01.14
✎
13:56
|
(4) не помню уже, что-то не получалось
|
|||
6
Ёпрст
22.01.14
✎
13:57
|
(3) а подробнее про хитрое поле и мини пример ?
если есть, конечно |
|||
7
Mikeware
22.01.14
✎
14:00
|
(6) Класс у них такой есть. Я приводил примеры неоднократно
|
|||
8
ADirks
22.01.14
✎
14:02
|
(6) схематично так:
Процедура FilterValue_OnTimer(идТаймер) Экспорт ПоказатьСписокЭлементов(); КонецПроцедуры Функция ПриОтжатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО) Экспорт Если ЭтоБуква(Символ) = 0 Тогда Если КодКлавиши = VK_BACKSPACE Тогда стрПрефиксНаименования = Лев(стрПрефиксНаименования, СтрДлина(стрПрефиксНаименования) - 1); Иначе стрПрефиксНаименования = стрПрефиксНаименования + Символ; КонецЕсли; Svcsvc.CreateSingleTimer(Таймаут, 117); КонецЕсли; Возврат 0; КонецФункции в ПоказатьСписокЭлементов() может выполняеться весьма тяжелый запрос, так что на каждое нажатие не канает. |
|||
9
ADirks
22.01.14
✎
14:05
|
(4) вспомнил, чего не получалось: чтобы обработчик события мог быть классом.
|
|||
10
КонецЦикла
22.01.14
✎
14:05
|
Круто, испробуем на ком-нибудь надеюсь.
1спп, будем надеяться, починят. |
|||
11
varelchik
22.01.14
✎
14:13
|
Ёпрст раз уже 1сpp лежит, мож ты в курсе кто форум админит.
Бо у меня на майл.ру ящик хто ломанул. Может ты поможешь сбросить мой ящик у логина varelchik c [email protected] на [email protected]. А то не хочется регистрироваться заново. |
|||
12
Ёпрст
22.01.14
✎
14:20
|
(11) не, я не в теме..
Раньще fez был, кто сейчас - не в курсе. |
|||
13
Ёпрст
22.01.14
✎
14:22
|
(7) да это то есть у меня, не ясно было просто, зачем таймер сделан.
(8) ага, ясно.. |
|||
14
varelchik
22.01.14
✎
14:27
|
(12) А хто тоди сайт поднимает?
|
|||
15
Ёпрст
22.01.14
✎
14:28
|
(14) без идей
:) |
|||
16
varelchik
22.01.14
✎
14:29
|
(15) Жаль.
|
|||
17
ADirks
22.01.14
✎
14:34
|
(13) а OnChangeFilter() не оценил? :)
моск же всем выносит, особенно поначалу, когда написал "666", стёр, написал "777" - а в списке нет ничего. |
|||
18
Ёпрст
22.01.14
✎
14:43
|
(17) ага, зачетно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |