<< 向前        下一页 >>

ID : 5768

AddHandler

功能

根据指定的插件对象执行事件接收方法的登录。以后,如果插件中发生事件,则将调出登录方法。

格式

AddHandler 对象事件名称事件接收方法

指定项目

对象
指定发生事件的对象。 指定通过AddController获取的对象。
事件名称
通过字符串型数据指定要接收的事件名称。通常指定为“OnMessage”。
事件接收方法
指定接收事件的处理方法。

解说

根据指定的插件对象执行事件接收方法的登录。以后,如果插件中发生事件,则将调出登录方法。

此方法需为以下格式。

Sub 方法名称(ByVal Sender As Object, ByVal Args As Variant)
  '...
End Sub

虽然可任意指定方法名称,但是为了提高可读性,推荐使用与事件名称相应的方法名称。其它类型为固定。请务必使用上述规定的类型。

通常在方法名称中指定OnMessage,方法如下所述。

Sub OnMessage (ByVal Sender As Object, ByVal Args As Variant)
'...
End Sub

无需从插件中接收事件时,调出RemoveHandler执行完成处理。

注意事项

  • 接收事件时,必须连续执行AddHandler的任务。任务停止时,无法接收事件。
  • 无法通过Wait指令执行事件的接收等待。请务必使用有适当Delay指令的环路代码执行。

应用示例

为使用QR代码插件,在QR代码读取器读取QR代码时,接收读取数据的示例。
Dim g_Counter As Integer = 0 '接收个数

Sub Main()
Dim ctrl As Object
ctrl = Cao.AddController( "QR", "CaoProv.DENSO.QRCode", "",
      "Conn=com:6:38400:N:8:1, Mode=5, Protocol=0:0:0" )

'指定接收事件的名称和位置
AddHandler ctrl, "OnMessage", OnMessage 
g_Counter = 0

'事件的接收等待环路
Do
Delay 10
If g_Counter >= 3 Then Exit Do
Loop 

 '解除接收
RemoveHandler ctrl

End Sub

'Event Handler for OnMessage
Sub OnMessage( ByVal Sender As Object, ByVal Args As Variant )
Dim msg as object
msg = Args(0) '::= CaoMessage object
PrintDbg "" & Time & " - CODE = [" & msg.Value & "]"
g_Counter = g_Counter + 1
End Sub

ID : 5768

<< 向前        下一页 >>