У меня появилось пара проблем. Может кто поможет?
Сделал класс, к-й при создании объекта превращает атрибут формы в RichEditor.
Процедура Create(_Конт, _ИмяАтрибута, _ИмяИсточника = "") Экспорт
Конт1 = _Конт;
ИмяАтрибута = _ИмяАтрибута;
__Перехватчик.ПерехватитьСобытияГК(Конт1, Конт);
_Форма = СоздатьОбъект("Форма");
ЭУ = _Форма.СоздатьЭлементУправленияНаФорме(Конт1.Форма, СоздатьОбъект("АктивИкс"), ИмяАтрибута);
Если ПустоеЗначение(_ИмяИсточника) = 0 Тогда
Источник = СоздатьОбъект("АтрибутФормы");
Источник.УстановитьАтрибут(Конт1.Форма, _ИмяИсточника);
КонецЕсли;
ЭУ.СоздатьЭУ("Shell.Explorer.2");
browser = ЭУ.Объект;
browser.Navigate("about:blank");
КонецПроцедуры
С помощью Перехватчика и перехватываю события формы, на к-й RichEditor был создан.
Процедура Событие_axWBrowser_DocumentComplete() Экспорт
Если ПустоеЗначение(Источник) = 0 Тогда
Source(Источник.Значение);
Editable(1);
КонецЕсли;
КонецПроцедуры
Т.е. созданный на форме активикс посылает этой самой форме сообщение axWBrowser_DocumentComplete() к-е класс перехватывает.
Вопрос первый:События от активикса имеют вид ИмяАктивикса_ИмяСобытия(). Проблема в том, что я заранне не знаю ИмяАктивикса - на каждой форме он может быть разным. На одной форме может быть несколько активиксов. В приведенном примере имя активкса у меня задано жестко "axWBrowser". Но это не универсально. Есть ли способ перехватывать ВСЕ событияЮ даже не зная их имен?
Вопрос второй:Когда меняется содержимое актвикса (хтмл код), я обновляю реквизит формы новым значением, чтобы признак модифицированности формы имзенился и при ее закрытии изменения были сохранены.
Процедура Событие_ПриНажатииКнопкиКлавиатуры(код, _а, _ш, _к, Символ, ФСО) Экспорт
__Перехватчик.ВыполнитьОригинальноеСобытиеГК(Конт1, "ПриНажатииКнопкиКлавиатуры", код, _а, _ш, _к, Символ, ФСО);
Если Конт1.Форма.АктивныйЭлемент() = ИмяАтрибута Тогда
Источник.Значение = Source();
Конт1.Форма.Обновить(1);
КонецЕсли;
КонецПроцедуры
Если не делать Конт1.Форма.Обновить(1) тогда признак модифицированности не меняется.
Значение Источника после записи по какой-то причине сбрасывается на начальное.