JS调用Delphi编写的OCX控件

原文:http://www.mamicode.com/info-detail-471283.html

一、使用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控件属性、方法及事件的使用示例。

posted @ 2015-09-05 12:14  tc310  阅读(1116)  评论(0编辑  收藏  举报