ocx 实现回调函数,delphi开发 现在我的控件要实现一个回调函数给由web做成的网页使用? 该如何写,参数应该是一个指针,可是ocx没有自定的参数类型,该使用什么呢? 跪求答案,本人对COM所知甚少。是用delphi开发 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实就是事件。在接口Events组下加一个事件,定好参数,然后在适当的时音调用:if FEvents <> nil then FEvents.xxxx;就行了,至于js怎么绑定事件,自己查一下 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('成功了'); 非常感谢两位的回答,但是还有一个问题就是:如果我在delphi里面怎么去调用这个事件呢?没有响应啊 if FEvents <> nil then FEvents.OnTest('成功了'); 这个就是的ActiveX控件中触发这个事件职!在DELPHI里调用,如果不成功,很有可能是FEvents为空了。跟踪一下! 如果在DELPHI中调用还得改代码,这里只实现了Web的。DELPHI中的可以仿照ActiveX单元中的去写。它在里面也定义了下些事件。 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 (冰河) 帮忙解决下啊,现在调用根本进不了ocx的事件里来啊 网页使用函数干什么?网页与客户端交互?delphi开发网络应用程序的方法有好几个,用那种? 如果将ocx嵌入到网页里是显示结果的,HTML文件只是一个载体,HTML文件并不是程序,不能调用函数,莫非是活动服务器程序? 如何处理? 有关tdbchart的小问题!!请指教!!! 替换的问题 关于地图的问题,谁能解决啊? 用过数字签名的请进. 如何用delphi调用c和vc写的dll? 高分求助!!!关于ADO连接SQL SERVER的问题 问个简单问题 讨论中文字段名和英文字段名的问题。 怎样调用QRGroup的Expression wizard? qq传送文件,对话框右边区域显示进度提示 关于ManualDock后资源释放问题???
if FEvents <> nil then FEvents.xxxx;
就行了,至于js怎么绑定事件,自己查一下
在【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('成功了');
FEvents.OnTest('成功了');
这个就是的ActiveX控件中触发这个事件职!在DELPHI里调用,如果不成功,很有可能是FEvents为空了。跟踪一下!
DELPHI中的可以仿照ActiveX单元中的去写。它在里面也定义了下些事件。
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没有申明啊,很困扰!
(冰河)
帮忙解决下啊,现在调用根本进不了ocx的事件里来啊