javascript 调用delphi封装的OCX控件·
Posted 530263009qq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 调用delphi封装的OCX控件·相关的知识,希望对你有一定的参考价值。
1、delphi 7 新建一个工程选择如下类型
2、设置OCX名称
3、增加函数"view"->"Type Library"
4、设置函数名称
5、设置函数返回值与入参(注意 返回参数不要使用 * 因为地址传递无法跟浏览器交互 我是这么理解的,亲测也确实没调用成功)
入参为 in 出差 是out 跟retval
6、点下上面两个小箭头的刷新按钮,就在Impl文件生成了代码,然后填充你的代码就可以了
7、编译与注册DLL
regsvr32 E:OCXDelphiReaderOCProj.ocx
反注册命令 如下(重新改了 先反注册 然后重新注册)
regsvr32 /u E:OCXDelphiReaderOCProj.ocx
8、编写 html测试用例(我保存的名字叫 ZZZ.html )
<head>
<script type="text/javascript" language="javascript">
function show(string1)
{
alert(‘123‘);
var obj = document.getElementById("TReaderOCX");
alert(obj);
var ret = obj.HelloWorld(string1);
alert(ret);
}
</script>
<title>测试</title>
</head>
<body>
<object id="TReaderOCX" width="" height="" classid="clsid:6BF75C69-5B10-4BC9-9800-E137A4D0EAF6"></object>
<input type="button" id="btn1" name="btn1" value="调用ocx" title="调用ocx"
onclick="show(‘晶奇‘)"></input>
</body>
</html>
TReaderOCX 为类名称 实现的函数 每个都是这个开头的
8、设置启动项
9、测试
注意:如果是IE8,则会出现无法进入断点的情况。
解决方法: 修改注册表
regedit→ HKEY_LOCAL_MACHINE →SOFTWARE→Microsoft → Internet Explorer→Main。在Main里新建一个DWORD类型名为TabProcGrowth值为0。
另一种解决方法:delphi7的ocx对应的tlb文件顶部有一个{$VARPROPSETTER ON},把这个开关去掉重新编译注册就可以了
本文在 https://www.cnblogs.com/tc310/p/4816590.html 基础上增加了调试内容 感谢tc310 博主的分享
以上是关于javascript 调用delphi封装的OCX控件·的主要内容,如果未能解决你的问题,请参考以下文章