-
Здравствуйте, уважаемые мастера.
Подскажите, пожалуйста.
Делаю импорт библиотеки из OCX. Получил TLB файл, подключил, создал объект (CreateComObject(CLASS_...)), работаю со свойствами, но не вижу событий. Как обратиться к событиям, точнее перехватить их?
Заранее благодарен.
-
> не вижу событий
А где и как (какими средствами) ты их ожидал "увидеть" ?
И причем здесь "перехват" ? Может речь все же идет о назначении обработчика события ?
-
Да, вы правы - назначить обработчик события. Как это сделать?
-
А разве при импорте контрола в палитре компонентов не появился соотв.компонент ?
Вот его и пользуй обычным образом, точно так же как ты назначаешь обработчики событий у "обычных" компонентов.
-
Нет. Он не появляется. В pas файле там нет процедур register. Он не визуальный. Если бы визуальный, проблем нет. События есть у него, но как их обработать? Может их нужно прописать в полученном при импорте, TLB файле до его компиляции и подключения в мой проект?
-
> Нет. Он не появляется
Ну сделай так чтобы появился !
Component -> Import ActiveX Control .. -> твой ocx-файл
Он обязан появиться ..
-
Именно так и делаю! Делал так с другим OCX - все получалось. Но с этим не получается. Как мне добраться до событий? Идеально, если бы он зарегистрировался как визуальный компонент и вперед, но...
-
Что за контрол такой хитрозадый ?)
Давай-ка его сюда, на операционный стол ..
-
Попробовал только что вставить сюда этот модуль (pas), пишет, что слишком длинное. Какой у Вас e-mail?
-
Бросай на slil.ru или ifolder.ru
-
-
Это какой-то неполноценный AX-контрол (скорее всего, кривая библ-ка типов в составе ocx-модуля контрола) - регистрируется без ошибок, но его не видит ни одно приложение, способное работать с такими контролами.
По кр.мере, ни одно из приложений Офиса на моей машине не видит контрол C_MDB в списке зарегистрированных АХ-контролов.
-
> Это какой-то неполноценный AX-контрол
Да ещё и на вижуальном бейсике написанный. Кстати в вижуальной студии в референцах даже класс создался, не только интерфейсы.
-
Похоже, Вы правы - это кривой ocx...
Да, в визуальном бейсике создается все и визуальность ... и работает!
Но, всеже, подключив pas файл в проект, я работаю со свойствами, но как мне работать с событиями. Как назначить обработку события?
По аналогии с VB, события это:
procedure evMDBTEST(var strTextToSend: WideString); dispid 1;
procedure evBVLFAIL(var strTextToSend: WideString); dispid 2;
procedure evBVLSETUP(var strTextToSend: WideString); dispid 3;
procedure evBVLSTACKED(var strTextToSend: WideString); dispid 4;
procedure evBVLESCROW(var strTextToSend: WideString); dispid 5;
procedure evBVLFULL(var strTextToSend: WideString); dispid 6;
А как же назначить обработчики событий?
Делаю так:
uses
C_MDB_TLB, ComObj;
var
myMDB : _MDB;
begin
myMDB:= CreateComObject(CLASS_MDB) as _MDB;
присваиваю св-вам значения...
........
end;
-
Ну тогда тебе придется пыжиться с созданием своей "обертки" - класса-наследника TOleObject.
У него его есть вирт.метод InitServerData, где как раз и осуществляется требуемое "таинство".
Ты возьми да импортируй любой заведомо "некривой" ocx-контрол, который при импорте в Делфи-среду создает полноценный компонент в палитре, посмотри код созданного при этом *tlb.pas и сравни с c_mdb.pas - руководство к действию будет как на ладони.
-
Хорошо, спасибо.
Буду пробовать убрать "кривизну" этого ocx.