一、使用Delphi XE2编写OCX控件
- 生成OCX工程:
1、File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Library
2、File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Control,这里要封Delphi的TStringGrid控件,所以选择ActiveX Control,其它按对话框来设置即可。
- 为OCX新增属性、方法
View-Type Library弹出一个扩展名为ridl的窗体
这里定义了一个Cells属性及MethodTest方法。为什么有两个Cells?那是因为一个读,一个写,可以通过右侧的Attributes页中的Invoke kind属性看出。还有一个属性Type是该属性类型。还可以通过Parameters页设置参数,设置完成后如下图:
Get参数:
Put参数:
MethodTest参数:
然后按ridl窗体上的刷新按钮,即可生成方法体:
二、JS调用
代码:
<HTML>
<HEAD>
<TITLE>MyActiveX - Methods, Properties, and Events</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function PropertyTest()
{
MyActiveX1.Cells(2,2) = StringInput.value
}
function JSMethodTest()
{
alert(MyActiveX1.MethodTest())
}
</SCRIPT>
<!-- 捕捉OCX控件的双击事件 -->
<SCRIPT type="text/javascript" FOR="MyActiveX1" EVENT="OnDblClick" >
<!-- insert script commands -->
alert("事件已捕捉!");
</SCRIPT>
</HEAD>
<BODY>
<center>
MyActiveX - Methods, Properties, and Events Example
<p></p>
<OBJECT ID="MyActiveX1" WIDTH=500 HEIGHT=200
CLASSID="CLSID:E61826B4-18B3-4E6D-AED6-78361961D29C">
</OBJECT>
<p></p>
Input Parameter: <INPUT TYPE ="text" NAME="StringInput" VALUE="">
<INPUT TYPE="button" NAME="Submit1"
VALUE="Properties" ONCLICK="PropertyTest()">
<p></p>
<INPUT TYPE="button" NAME="Submit2"
VALUE="Methods" ONCLICK="JSMethodTest()">
</center>
</BODY>
</HTML>
效果图:
至此已经完成OCX控件属性、方法及事件的使用示例。