在接口中加入一个TEST属性,定义为INT类型,然后在附加单元里编写属性定义代码
编译后就可作为COM服务器接口的属性调用
编译后就可作为COM服务器接口的属性调用
解决方案 »
- 请教有没有做过工资管理系统中关于自定义于计算公式与最终计算的大大啊,帮帮忙,给个意见或有没有源代码借我参考参考?(100分)
- 急~我想从数据库里读出数据放入combobox1的下拉菜单中~
- 为什么dbgrid中的垂直滚动条不管dbgrid内的内容有没有超过dbgrid的范围都会显示呢
- 如何使用delphi实现一个文件夹中文件的搜索
- 关于三层结构的理论问题
- 快来看啊!奇文!《你该相信谁》
- 重金悬赏,求代码!
- DBGrid中大批的数据怎样导成XML文档?!!急!!先行谢过!
- 关于游标的问题。
- 有没办法找出Tab(#9)在一个字符串中的位置?用pos不行。
- 请问:如何解决关于263.net等Email提供商增设的“smtp认证”功能?
- 我提创意,你来实现!有关文件拖放!
这么说吧:一个对象(a:Ta).它有个showit的方法。我想在主程序中将a传给COM服务器,然后在COM中调用a.showit方法。如何实现呢?
先用TMemoryStream保存Component,然后转化为TStringStream,进行传递。
客户端逆过来执行。
我试了一下,可以完成。如:
服务器端建立一个方法:
function TTestMidasDM.GetComponent: WideString;
var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(aButton);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;
end;
finally
BinStream.Free
end;
end;
客户端调用var
frmMainClient: TfrmMainClient;
Server: ITestMidasDM;implementation{$R *.DFM}procedure TfrmMainClient.btnServerClick(Sender: TObject);
var
StrStream:TStringStream;
BinStream: TMemoryStream;
NewButton: TButton;
begin
Server := CoTestMidasDM.Create as ITestMidasDM;
StrStream := TStringStream.Create(Server.GetComponent);
NewButton := TButton.Create(Self);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
//转化为Newbutton
NewButton := TTable(BinStream.ReadComponent(NewButton));
ShowMessage(NewButton.caption);
finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;