Я в COM-е, к сожалению, чайник . Как это сделать с позиции сгенерённых классов на основе excel.olb: _Application, _Workbook, _Worksheet и пр.
KGP>В наличии событийные интерфейсы : KGP>IDocEvents KGP>IWorkbookEvents — событие SheetChange попробуй KGP>... KGP>IAppEvents KGP>IOLEObjectEvents KGP>IRefreshEvents
Ну хорошо, сгенерил я класс AppEvents.
У него есть метод
void SheetChange(LPDISPATCH Sh, LPDISPATCH Target);
А где, собственно, реакцию-то писать? Не внутри же этой ф-ции. Там InvokeHelper стоит. Наверняка очевидность спрашиваю — не бейте ногами .
Здравствуйте, potap, Вы писали:
P>Я в COM-е, к сожалению, чайник . Как это сделать с позиции сгенерённых классов на основе excel.olb: _Application, _Workbook, _Worksheet и пр.
KGP>>В наличии событийные интерфейсы : KGP>>IDocEvents KGP>>IWorkbookEvents — событие SheetChange попробуй KGP>>... KGP>>IAppEvents KGP>>IOLEObjectEvents KGP>>IRefreshEvents
Здравствуйте, potap, Вы писали:
P>Ну хорошо, сгенерил я класс AppEvents. P>У него есть метод P>void SheetChange(LPDISPATCH Sh, LPDISPATCH Target); P>А где, собственно, реакцию-то писать? Не внутри же этой ф-ции. Там InvokeHelper стоит. Наверняка очевидность спрашиваю — не бейте ногами .
Надо написать реализацию интерфеса IDocEvents, а потом с помощью интерфейса IConnectionPoint связать его с Sheet'ом.
Вроде так... в теории...
Теория это, конечно, хорошо... Примерчик бы...
DO>Надо написать реализацию интерфеса IDocEvents, а потом с помощью интерфейса IConnectionPoint связать его с Sheet'ом. DO>Вроде так... в теории...
Здравствуйте, Dym On, Вы писали:
DO>Здравствуйте, potap, Вы писали:
P>>Хорошо, P>>а как мне создать WorkbookEvents ? DO>Ты имееш в виду реализацию IDocEvents...
.... Не совсем. Я уже сгенерил "From A TypeLib" excel9.olb при помощи ClassWizard-а класс WorkbookEvents. Но как мне создать экземпляр этого класса? До этого я создавал классы последовательно.
Совершенно аналогично создаю объект класса Range. Т.е. я создаю объекты по цепочке — сначала _Application, потом _Workbook и т.д. У каждого предыдущего объекта есть метод, возвращающий LPDISPATCH объекта, который я хочу создать.
В excel9.tlb описан класс WorkbookEvents. Но объекта, у которого бы был метод что-то типа GetEvents() я не нашёл .
Вы описываете достаточно сложный путь как подключиться к событиям. Но зачем же Microsoft сбацала в Excel9.olb классы <some_object>Events? Хотя я заподозревал, что не для того, чтобы дать возможность реагировать на события, а чтобы дать возможность генерить события. Или нет?
Спасибо.
DO>Как-то так, только на примере SheetEvents (не охота переписывать): DO>