События и плагины

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

События и плагины

Сообщение drronnie » 10.03.2004 (Ср) 5:07

Господа, такая проблема... значит у меня в программе подгружается несколько плагинов... и всё бы хорошо, только почему-то не могу отловить их события... Создаётся массив:
Код: Выделить всё
Public arrPlug() As Object

И туда подгружаются плагины... потом проанализировав пару исходников понял не хватает слова "WithEvents"... написал
Код: Выделить всё
Public WithEvents arrPlug() As Object

Однако возникла другая ошибка "Only valiid in object module", перенёс в модуль формы - и тут неудача: просит
убрать скобочки и вместо "Object" просит конкретный объект... что делать? У всех плагинов события называются одинаково... Подскажите... или пришлите (дайте ссылочку на) примерчик про плагины с событиями... Заранее благодарю...
Компиляция - перевод словесного поноса в машинный код.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.03.2004 (Ср) 10:24

Для каждого плагина заводи отдельную переменную.
Ну низя массив withevents.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.03.2004 (Ср) 11:14

Либо реализуй наследование посредством Implements. Заведи рутовый интерфейс (сорри, класс ;) ), определи в нем базовые свойства и методы и для каждого реального плагина наследуй именно его:
Код: Выделить всё
Option Explicit
Implements cls_Root_PlugIn
...

Тогда, при создании произвольного плагина, ты можешь объявлять объекты так:
Код: Выделить всё
Private WithEvents Plg as cls_Root_PlugIn
,
а создавать - так:
Код: Выделить всё
Set Plg = CreateObject(, "cls_My_Plugin_004")

(Заметь, что в этом случае ты получаешь раннее, т.е. быстрое, связывание).
Есессно, обязательно почитай что-нить об этом для начала, ибо полиморфизм в понимании СОМ - это нечто особенное... :?

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 10.03.2004 (Ср) 18:39

Ага спасибо... но можно подробнее, а то что-то не найду я никак ничего почитать... линк дай, плз, на статейку, а...
Компиляция - перевод словесного поноса в машинный код.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.03.2004 (Ср) 18:48

MSDN, ищи в индексе по Implements. Ну и, конечно, великая книга Брюса МакКинни "Hardcore Visual Basic".

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 22.05.2004 (Сб) 7:40

Господа, прошу прощения, что реанимирую старый топик.... но решение есть!!! Короче я сделал так:
На родительскую форму положил несколько кнопок с именеами типа "Events_Send" и т.д. а из плагина просто ищу хэндл нужной кнопки и передаю ему клик.... ну а там уже дело техники....
Компиляция - перевод словесного поноса в машинный код.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 3

    TopList