ocx 实现回调函数,delphi开发

luyo7400 2011-11-11 09:14:19
现在我的控件要实现一个回调函数给由web做成的网页使用? 该如何写,参数应该是一个指针,可是ocx没有自定的参数类型,该使用什么呢? 跪求答案,本人对COM所知甚少。是用delphi开发
...全文
261 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shijies 2011-11-15
  • 打赏
  • 举报
回复
如果将ocx嵌入到网页里是显示结果的,HTML文件只是一个载体,HTML文件并不是程序,不能调用函数,莫非是活动服务器程序?
luyo7400 2011-11-11
  • 打赏
  • 举报
回复
非常感谢两位的回答,但是还有一个问题就是:如果我在delphi里面怎么去调用这个事件呢?没有响应啊
nm_wyh 2011-11-11
  • 打赏
  • 举报
回复
1、在ActiveX控件的YouActiveXEents接口中定义一个事件。这个就是外部要调用的。
在【View】->【Type Library】中创建。就在创建方法的下面就是一般名称为【xxxxxActvieXEvents】.例如我们这里定义如下事件:
OnTest(aValue:string); //实际生成的代码应该是procedure OnTst(const aValue: WideString); dispid 209; 在_TLB单元里。
2、在页面中JS如些调用:
<script language="javascript" event="OnTest(aValue)" for="YouActiveXName">
alert(aValue); //接收控件中的事件消息,并显示传递 的值。
</script>

3、在ActiveX控件中触发这个事件,如下:
//向Web页面事件发送消息
if FEvents <> nil then
FEvents.OnTest('成功了');
wzwcn 2011-11-11
  • 打赏
  • 举报
回复
其实就是事件。在接口Events组下加一个事件,定好参数,然后在适当的时音调用:
if FEvents <> nil then FEvents.xxxx;
就行了,至于js怎么绑定事件,自己查一下
shijies 2011-11-11
  • 打赏
  • 举报
回复
网页使用函数干什么?网页与客户端交互?delphi开发网络应用程序的方法有好几个,用那种?
luyo7400 2011-11-11
  • 打赏
  • 举报
回复
nm_wyh

(冰河)
帮忙解决下啊,现在调用根本进不了ocx的事件里来啊
luyo7400 2011-11-11
  • 打赏
  • 举报
回复
procedure TWingSoftVideo.Initialize;
begin
inherited Initialize;
OnActivate := ActivateEvent;
OnClick := ClickEvent;
OnCreate := CreateEvent;
OnDblClick := DblClickEvent;
OnDeactivate := DeactivateEvent;
OnDestroy := DestroyEvent;
OnKeyPress := KeyPressEvent;
OnPaint := PaintEvent;
OnTest := TestEvent;
这里需要声明onTest原型事件,TestEvent的内容为
procedure TWingSoftVideo.TestEvent(Sender: TObject; var Param1: Integer);
begin
if FEvents <> nil then FEvents.OnTest(Param1);
Param1 := 1000;
end;

可是在声明OnTest := TestEvent;的时候,会提示OnTest未申明,而我按你的方法在_xxxxxActvieXEvents里面已经添加了OnTest事件TWingSoftVideoOnTest = procedure(ASender: TObject; var Param1: Integer) of object;
,那为什么还是会报OnTest没有申明啊,很困扰!
nm_wyh 2011-11-11
  • 打赏
  • 举报
回复
如果在DELPHI中调用还得改代码,这里只实现了Web的。
DELPHI中的可以仿照ActiveX单元中的去写。它在里面也定义了下些事件。
nm_wyh 2011-11-11
  • 打赏
  • 举报
回复
if FEvents <> nil then
FEvents.OnTest('成功了');
这个就是的ActiveX控件中触发这个事件职!在DELPHI里调用,如果不成功,很有可能是FEvents为空了。跟踪一下!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧