Конференция "Corba" » Импорт из OCX [D7, WinXP]
 
  • Nikolay (01.07.08 18:52) [0]
    Здравствуйте, уважаемые мастера.
    Подскажите, пожалуйста.
    Делаю импорт библиотеки из OCX. Получил TLB файл, подключил, создал объект (CreateComObject(CLASS_...)), работаю со свойствами, но не вижу событий. Как обратиться к событиям, точнее перехватить их?
    Заранее благодарен.
  • Сергей М. © (01.07.08 20:30) [1]

    > не вижу событий


    А где и как (какими средствами) ты их ожидал "увидеть" ?

    И причем здесь "перехват" ? Может речь все же идет о назначении обработчика события ?
  • Nikolay (02.07.08 09:55) [2]
    Да, вы правы - назначить обработчик события. Как это сделать?
  • Сергей М. © (02.07.08 11:42) [3]
    А разве при импорте контрола в палитре компонентов не появился соотв.компонент ?

    Вот его и пользуй обычным образом, точно так же как ты назначаешь обработчики событий у "обычных" компонентов.
  • Nikolay (02.07.08 22:13) [4]
    Нет. Он не появляется. В pas файле там нет процедур register. Он не визуальный. Если бы визуальный, проблем нет. События есть у него, но как их обработать? Может их нужно прописать в полученном при импорте, TLB файле до его компиляции и подключения в мой проект?
  • Сергей М. © (03.07.08 08:39) [5]

    > Нет. Он не появляется


    Ну сделай так чтобы появился !

    Component -> Import ActiveX Control .. -> твой ocx-файл

    Он обязан появиться ..
  • Nikolay (03.07.08 13:49) [6]
    Именно так и делаю! Делал так с другим OCX - все получалось. Но с этим не получается. Как мне добраться до событий? Идеально, если бы он зарегистрировался как визуальный компонент и вперед, но...
  • Сергей М. © (03.07.08 20:18) [7]
    Что за контрол такой хитрозадый ?)

    Давай-ка его сюда, на операционный стол ..
  • Nikolay (03.07.08 21:22) [8]
    Попробовал только что вставить сюда этот модуль (pas), пишет, что слишком длинное. Какой у Вас e-mail?
  • Сергей М. © (04.07.08 08:14) [9]
    Бросай на slil.ru или ifolder.ru
  • Nikolay (04.07.08 10:55) [10]
    Файл на операционной.
    Там сам ocx и pas файл, что получается при импорте.
    http://ifolder.ru/7217289
  • Сергей М. © (04.07.08 13:52) [11]
    Это какой-то неполноценный AX-контрол (скорее всего, кривая библ-ка типов в составе ocx-модуля контрола) - регистрируется без ошибок, но его не видит ни одно приложение, способное работать с такими контролами.

    По кр.мере, ни одно из приложений Офиса на моей машине не видит контрол C_MDB в списке зарегистрированных АХ-контролов.
  • Плохиш © (04.07.08 18:42) [12]

    > Это какой-то неполноценный AX-контрол

    Да ещё и на вижуальном бейсике написанный. Кстати в вижуальной студии в референцах даже класс создался, не только интерфейсы.
  • Nikolay (04.07.08 23:21) [13]
    Похоже, Вы правы - это кривой 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;
  • Сергей М. © (05.07.08 19:28) [14]
    Ну тогда тебе придется пыжиться с созданием своей "обертки" - класса-наследника TOleObject.

    У него его есть вирт.метод InitServerData, где как раз и осуществляется требуемое "таинство".

    Ты возьми да импортируй любой заведомо "некривой" ocx-контрол, который при импорте в Делфи-среду создает полноценный компонент в палитре, посмотри код созданного при этом *tlb.pas и сравни с c_mdb.pas - руководство к действию будет как на ладони.
  • Nikolay (05.07.08 20:06) [15]
    Хорошо, спасибо.
    Буду пробовать убрать "кривизну" этого ocx.
 
Конференция "Corba" » Импорт из OCX [D7, WinXP]
Есть новые Нет новых   [134430   +2][b:0][p:0.001]