请教:如何ActiveX添加自定义事件?

weyoung 2006-03-09 01:53:05
当前在做的一个项目,实时监控的一个东东,要求在网页上将监控的数据实时展现给用户,考虑用ActiveX+HTML实现:
1. 服务器收到数据包,通过Socket将数据包发给ActiveX
2. ActiveX收到数据包,触发自定义事件,将数据包发送给网页的JavaScript
3. JavaScript更新页面上的内容

这个自定义事件在Delphi里如何实现?刚才上网查了一些资料,都没有详细说明这个步骤,还望各位DX指点一下。
目前我只知道:Type Library --> New Method,接下去的步骤就搞不懂了。

//以下这段是Socket客户端接收消息
procedure TafxSck.OnSocketRead(var message: TMessage);
var
pHeadBuf, pBodyBuf: PChar;
iHeadLen, iBodyLen: Integer;
myPack: PMyPack;
sMsg: string;
iRet: Integer;
begin
iHeadLen := SizeOf(TMyPack);
case WSAGETSELECTEVENT(message.lParam) of
FD_READ: //Socket有数据需要读取
begin
GetMem(pHeadBuf, iHeadLen);
iRet := Recv(xl_socket, pHeadBuf^, iHeadLen, 0); //读取包头
if iRet = SOCKET_ERROR then
begin
systemLog('Read Error!');
Exit;
end
else
begin
myPack := PMyPack(pHeadBuf); //解析出包头
iBodyLen := myPack^.PackLen; //得到包体的长度
if iBodyLen > 0 then
begin
//再读取包体
GetMem(pBodyBuf, iBodyLen);
iRet := Recv(xl_socket, pBodyBuf^, iBodyLen, 0);
if iRet = SOCKET_ERROR then
begin
systemLog('Read Error!');
Exit;
end;
sMsg := string(pBodyBuf);
FreeMem(pBodyBuf, iBodyLen);
//*******到这里,我已经得到服务器传过来的数据包了,这里要如何触发自定义的事件???
end;
end;
end;
FD_CLOSE:
begin
systemLog('Socket Closed!');
end;
end;
end;

...全文
478 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weyoung 2006-03-13
  • 打赏
  • 举报
回复
问题已经解决。多谢ljy
ljy 2006-03-11
  • 打赏
  • 举报
回复
在你的Events接口中添加一个处理函数原型
然后在你需要的地方进行下面的调用,
if FEvents <> nil then FEvents.OnRequest(Command, Message);

不过我还没找到怎么在web page里能调用这个事件。在其它平台中可以激发这个事件,据msdn上说,好像要实现一个什么东东的接口才行。
jilu_sun 2006-03-09
  • 打赏
  • 举报
回复
自定义的事件实现方法和普通的没有什么太大的区别
在对应的imp单元中声明的类中添加自己的方法定义
在implementation中添加具体实现代码
weyoung 2006-03-09
  • 打赏
  • 举报
回复
顶一下
weyoung 2006-03-09
  • 打赏
  • 举报
回复
weyoung 2006-03-09
  • 打赏
  • 举报
回复
多谢Dlwxn(Dlwxn)。不过我想要的不是这个。。。
Dlwxn 2006-03-09
  • 打赏
  • 举报
回复
你需要的是一个ActiveX Control控件,在新建一个ActiveX Control控件 的时候,必须从TCustomControl类继承下来。

你可以先写一个从TCustomControl继承下来的组建,在这里面实现你需要的方法,然后安装到delphi的组建面板上,新建一个ActiveX Control从这个类继承,保存这个程序,不需要修改,编译后就是你需要的ActiveX Control
weyoung 2006-03-09
  • 打赏
  • 举报
回复
楼上兄弟能说的明白一些吗?最好给点例子,哈哈
weyoung 2006-03-09
  • 打赏
  • 举报
回复
请路过的DX指点一下。
MSN: weyoung@163.net
QQ: 21998699
多谢!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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