Tengo un proyecto VB6 más antiguo al que intento agregar pruebas unitarias. Estaba rompiendo dependencias en clases burlando objetos. Todo iba bien hasta que encontré algunas dependencias que estaban generando eventos y ahora me he topado con una pared.VB6 Implementos y eventos
Aquí está un ejemplo rápido de lo que estoy tratando de hacer eso no funciona:
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
Doe ¿Alguien sabe si hay una forma de hacer que esto funcione u otra forma de manejar esta situación?
Implementé una interfaz de devolución de llamada que llamé ITabEventsHandler
. Se ve así:
Option Explicit
Public Sub Click(intPreviousTab As Integer, objSSTab As Object)
End Sub
Luego añade Implements ITabEventsHandler
a mi forma y pasan la forma como un parámetro de ITabEventsHandler
a mi inicializador clsTab. En lugar de plantear un evento personalizado Click(...)
, solo puedo llamar al mTabEventsHandler.Click(...)
.
Gracias por la sugerencia!
Pensé en hacer una interfaz de devolución de llamada y parece que esto funcionará. –
Secundado. La forma más elegante de lidiar con esto en VB6 es usar una interfaz de devolución de llamada en lugar de eventos sin procesar. El pirateo de TypeLib se pondrá rápidamente desagradable como dice wqw. –
+1. El manual de VB6 dice que Implements no admite eventos aquí http://msdn.microsoft.com/en-us/library/aa262327(VS.60).aspx – MarkJ