用VB编写自己的Client Side OCX时添加属性和事件

发表于:2007-06-30来源:作者:点击数: 标签:
其实用处不算很大,因为这样的OCX要运行的话,必须要有数字签名,还需要别人同意安装,不然就会每次提示你,什么什么不 安全 之类的话。 在 VB 里面建立一个ActiveX控件,然后在外接程序菜单里面选ActiveX控件接口向导(如果没有的话,在外接程序管理器里加一
其实用处不算很大,因为这样的OCX要运行的话,必须要有数字签名,还需要别人同意安装,不然就会每次提示你,什么什么不安全之类的话。

VB里面建立一个ActiveX控件,然后在外接程序菜单里面选ActiveX控件接口向导(如果没有的话,在外接程序管理器里加一个)
在这里面就可以定义想要的Method, Property, Event了,如果要想在Client Script 调用的话,就要在设置映射的那一步,映射到控件的成员上去。
完成后,它会给你加上这样的代码(我加了一个MouseMove事件)
Event MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) @#MappingInfo=UserControl,UserControl,-1,MouseMove

Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseMove(Button, Shift, X, Y)
End Sub
这样就可以在客户端脚本响应这个事件了
<SCRIPT LANGUAGE=vbscript>
Sub obj1_MouseMove(Button, Shift, X, Y)
    If Button = 4 Then MsgBox(X & "," & Y)
End Sub
</SCRIPT>
JavaScript里面我还不知道如何取得Button,Shift, X,Y这些参数,不过ActiveX也只能在IE里面用,所以也无所谓了。
加一个属性的代码就要麻烦多了,幸好不用自己写
@#注意!不要删除或修改下列被注释的行!
@#MappingInfo=UserControl,UserControl,-1,BackColor
Public Property Get BackColor() As OLE_COLOR
    BackColor = UserControl.BackColor
End Property

Public Property Let BackColor(ByVal New_BackColor As OLE_COLOR)
    UserControl.BackColor() = New_BackColor
    PropertyChanged "BackColor"
End Property

@#从存贮器中加载属性值
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

    UserControl.BackColor = PropBag.ReadProperty("BackColor", &H8000000F)
End Sub

@#将属性值写到存储器
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

    Call PropBag.WriteProperty("BackColor", UserControl.BackColor, &H8000000F)
End Sub

其它的就和写普通的ActiveX Component一样了。

原文转自:http://www.ltesting.net