Ho un progetto VB6 più vecchio a cui sto cercando di aggiungere i test unitari. Stavo distruggendo le dipendenze nelle classi prendendo in giro oggetti. Tutto stava andando alla grande fino a quando ho trovato alcune dipendenze che stavano sollevando eventi e ora ho colpito un muro.VB6 Attrezzi ed eventi
Ecco un rapido esempio di quello che sto cercando di fare che non funziona:
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 Qualcuno sa se c'è un modo per fare questo lavoro o un altro modo per gestire questa situazione?
Ho implementato un'interfaccia di callback che ho chiamato ITabEventsHandler
. Ecco come si presenta:
Option Explicit
Public Sub Click(intPreviousTab As Integer, objSSTab As Object)
End Sub
poi ho aggiunto Implements ITabEventsHandler
alla mia forma e passare il modulo come parametro di ITabEventsHandler
al mio clsTab initializer. Invece di aumentare un evento personalizzato Click(...)
, posso semplicemente chiamare mTabEventsHandler.Click(...)
.
Grazie per il suggerimento!
Ho pensato di creare un'interfaccia di callback e sembra che funzioni. –
Secondato. Il modo più elegante per gestire questo in VB6 è utilizzare un'interfaccia di callback invece di eventi non elaborati. L'hacking dei tipi di digiuno diventerà presto pericoloso come dice wqw. –
+1. Il manuale VB6 afferma che gli strumenti Implements non supportano gli eventi qui http://msdn.microsoft.com/en-us/library/aa262327(VS.60).aspx – MarkJ