下面是详细的方法,要的话,可以寄示例工程.
建立com服务器的事件(Using delphi)
服务器端:
1.建立服务器进程.可选择exe,dll.示例为Serverdll.dpr.
2.添加ole automation对象,使用delphi的new对话框添加,注意的是
要选中Generate Events Surport.示例中com server的名字是TTestClass.
接口为ITestClass.
3.使用Type library添加事件.在选中了Generate Events Surport的时候,
服务器类会自动加入ITestClassEvents.选中这个接口,利用上访的按钮,
加入一个方法(method),命名为OnTest,在示例中我们没有加入参数.
4.添加产生事件的过程.想编写所有的组件一样,我们必须编写这样一个方法,
在这个方法中能够触发事件.同样的,在Type library中,我们在ITestClass中
加入一个方法Test,并且在实现类TTestClass中为其添加下面的代码:
procedure TTestClass.Test;
begin
if FEvents<>nil then FEvents.OnTest
else ShowMessage('Not assigned');
end;
这同一般的组件的编写是相同的.
5.注册服务器.使用run菜单中的注册项.
客户端:
1.建立工程,可执行文件.示例为Clientexe.dpr.
2.引入Type library.使用Project菜单进行,可选择是否加入组件面板.
3.编写事件处理程序.在Clientexe工程的Form中添写一个方法:
procedure TForm1.TestEventToDo(sender:TObject);
begin
ShowMessage('OK');
end;
4.用一个按钮来进行测试:
procedure TForm1.Button1Click(Sender: TObject);
var Server:ITestClass;
Obj:TTestClass;
begin
Server:=(CoTestClass.Create as ITestClass);
Obj:=TTestClass.Create(self);
Obj.Connect;
Obj.OnTest:=TestEventToDo;
Obj.Test;
end;
这就像我们是用一般的com服务器一样,也与一般的事件处理程序类似.
同样我们还可以看到,当未给OnTest赋值的时候,会显示Not Assigned.