编写能被com组件调用的客户端
来源:互联网 发布:x264 linux 编辑:程序博客网 时间:2024/06/05 04:45
共分两步
一.写一个继承自toleserver的类
unit Unit4;
interface
uses
OleServer, classes, Project1_TLB, Activex;
type
TxzmOleServer = class(TOleServer)
private
Folexzm: ixzmtest;
procedure InitServerData; override;
procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
procedure Setolexzm(const Value: ixzmtest);
public
FMyServerData: TServerData;
constructor Create(AOwner: TComponent; AMyServer: ixzmtest);
destructor Destroy; override;
// NOTE: If derived class is generated by TLIBIMP or ImportTypeLibraryCodeGenerator,
// the derived class will also expose a 'ConnectTo(interface)' function.
// You must invoke that method if you're using 'ckAttachToInterface' connection
// kind.
procedure Connect; override;
procedure Disconnect; override;
property olexzm: ixzmtest read Folexzm write Setolexzm;
end;
implementation
{ TxzmOleServer }
uses
dialogs, sysutils, Unit3;
procedure TxzmOleServer.Connect;
begin
self.ConnectEvents(olexzm);
end;
constructor TxzmOleServer.Create(AOwner: TComponent; AMyServer: ixzmtest);
begin
olexzm:= AMyServer;
inherited create(AOwner);
end;
destructor TxzmOleServer.Destroy;
begin
inherited;
end;
procedure TxzmOleServer.Disconnect;
begin
self.DisconnectEvents(olexzm);
end;
procedure TxzmOleServer.InitServerData;
begin
FMyServerData.ClassID:= CLASS_xzmtest;
FMyServerData.IntfIID:= IID_Ixzmtest;
FMyServerData.EventIID:= DIID_IxzmtestEvents;
FMyServerData.InstanceCount:= 0;
self.ServerData:= @FMyServerData;
inherited;
end;
procedure TxzmOleServer.InvokeEvent(DispID: TDispID;
var Params: TVariantArray);
begin
inherited;
form3.InvokeEvent(dispid, params);
end;
procedure TxzmOleServer.Setolexzm(const Value: ixzmtest);
begin
Folexzm := Value;
end;
end.
二.建立一个接收com组件事件的界面
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Project1_TLB, StdCtrls, Unit4, activex, oleserver;
type
TForm3 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FOlexzm: ixzmtest;
Fxzmoleserver: TxzmoleServer;
{ Private declarations }
public
{ Public declarations }
procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray);
property Olexzm: ixzmtest read FOlexzm write FOlexzm;
property xzmOleServer: TxzmoleServer read Fxzmoleserver write Fxzmoleserver;
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
begin
Olexzm:= coxzmtest.Create as ixzmtest;
xzmoleserver:= Txzmoleserver.Create(self, olexzm);
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
xzmoleserver.Connect;
end;
procedure TForm3.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
var
i: integer;
begin
memo1.Lines.Add(inttostr(dispid));
for i:= 0 to length(params) - 1 do
begin
memo1.Lines.Add('参数'+inttostr(i)+':'+params[i]);
end;
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
xzmoleserver.Disconnect;
xzmoleserver.Free;
olexzm:= nil;
end;
end.
- 编写能被com组件调用的客户端
- PHP4调用自己编写的COM组件
- PHP4调用自己编写的COM组件
- PHP4调用自己编写的COM组件
- PHP4调用自己编写的COM组件
- Qt调用Delphi编写的COM组件
- VBS调用ATL编写的COM组件
- win32com调用ATL编写的COM组件
- C++调用C#编写的COM组件
- JavaScript调用C#编写的COM组件
- Vs2008 编写com,MFC编写客户端调用
- C#如何编写调用COM组件的程序
- 如何用PHP调用自己编写的COM组件?
- 在VC中调用VB编写的COM组件范例
- 在VC中调用VB编写的COM组件范例
- PHP调用VC编写的COM组件实例
- PHP调用VC编写的COM组件实例
- 正确释放WORD对象(COM组件) COMException: 被调用的对象已与其客户端断开连接
- 彩云之巅(二) 启程
- 2.2 方法和属性
- jscript错误代码及相应解释大全
- 当遇到处理复杂业务逻辑的情况,使用了hibernate,你是怎么处理的?
- 彩云之巅(三) 起飞
- 编写能被com组件调用的客户端
- 给datatable中添加新列并赋值的方法
- 排序 从小到大。
- 关于如何动态地在同一页面实现两个互传 (s1 s2)
- a lot的用法
- asp.net发送邮件类
- Lucene.NET 使用
- Oracle数据库经典优化之索引原理篇
- 我们期待自己成为一个优秀的软件模型设计者