VB6 Инвентарь и события - PullRequest
15 голосов
/ 31 июля 2009

У меня есть старый проект VB6, для которого я пытаюсь добавить модульные тесты. Я ломал зависимости в классах, издеваясь над объектами. Все шло отлично, пока я не нашел некоторые зависимости, которые вызывали события, и теперь я врезался в стену.

Вот краткий пример того, что я пытаюсь сделать, что НЕ РАБОТАЕТ:

ITab.cls:

Option Explicit

Public Event Click(tabNumber As Integer)

Public Sub SomeOtherFunction()

End Sub

clsRealTab.cls:

Option Explicit
Implements ITab

Public Event Click(tabNumber As Integer)

Public Sub ITab_SomeOtherFunction()
    'code here'
End Sub

frmMain.frm:

Option Explicit

Private WithEvents mTab as ITab

Public Sub Main()
    Set mTab = New clsRealTab 'gives "Object or class does not support the set of events" error'
End Sub

Кто-нибудь знает, есть ли способ заставить эту работу или другой способ справиться с этой ситуацией?

Я реализовал интерфейс обратного вызова, который я назвал ITabEventsHandler. Это выглядит так:

Option Explicit

Public Sub Click(intPreviousTab As Integer, objSSTab As Object)

End Sub

Затем я добавил Implements ITabEventsHandler к своей форме и передал форму в качестве параметра ITabEventsHandler своему инициализатору clsTab. Вместо того, чтобы вызывать пользовательское событие Click(...), я могу просто позвонить mTabEventsHandler.Click(...).

Спасибо за предложение!

1 Ответ

10 голосов
/ 31 июля 2009

Вы не можете "реализовать" исходные интерфейсы в VB6 вообще. Таким образом, короткий ответ «нет, вы не можете сделать это». Вы можете взломать его с помощью прямого редактирования библиотеки типов, но это очень быстро станет ужасным.

Вы можете рассмотреть интерфейсы обратного вызова в вашем случае, если вам нужно «реализовать» их различными (фиктивными) классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...