Tôi có một dự án VB6 cũ hơn mà tôi đang cố gắng để thêm các bài kiểm tra đơn vị cho. Tôi đã phá vỡ sự phụ thuộc trong các lớp học bằng cách chế nhạo các đối tượng. Mọi thứ diễn ra tuyệt vời cho đến khi tôi tìm thấy một số phụ thuộc đã gây ra các sự kiện và bây giờ tôi đã đánh một bức tường.VB6 Thực hiện & sự kiện
Dưới đây là một ví dụ nhanh về những gì tôi đang cố gắng để làm điều đó không làm việc:
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 ai biết nếu có một cách để làm cho công việc này hoặc một cách khác để đi về xử lý tình trạng này?
Tôi đã triển khai giao diện gọi lại mà tôi gọi là ITabEventsHandler
. Nó trông giống như thế này:
Option Explicit
Public Sub Click(intPreviousTab As Integer, objSSTab As Object)
End Sub
Sau đó, tôi thêm Implements ITabEventsHandler
mẫu của tôi và thông qua các hình thức như một tham số ITabEventsHandler
để initializer clsTab tôi. Thay vì tăng sự kiện Click(...)
tùy chỉnh, tôi chỉ có thể gọi mTabEventsHandler.Click(...)
.
Cảm ơn bạn đã đề xuất!
Tôi đã nghĩ đến việc tạo giao diện gọi lại và có vẻ như thao tác này sẽ hoạt động. –
Được phân bổ. Cách thanh lịch nhất để đối phó với điều này trong VB6 là sử dụng một giao diện gọi lại thay vì các sự kiện thô. Cuộc tấn công của Typelib sẽ nhanh chóng trở nên khó chịu như wqw nói. –
+1. Hướng dẫn VB6 nói Implements không hỗ trợ các sự kiện ở đây http://msdn.microsoft.com/en-us/library/aa262327(VS.60).aspx – MarkJ