高手啊高手:一接口类的属性为Idispatch类型,我怎么赋值啊。在别的版贴了没人理,555555(50分)

  • 主题发起人 主题发起人 bellie
  • 开始时间 开始时间
B

bellie

Unregistered / Unconfirmed
GUEST, unregistred user!
引用的某dll文件中定义了一接口类IDTVTree
有一属性connection
如下:
[
propget,
id(0x00000001),
helpstring("Get or Set the connection for this tree"),
helpcontext(0x00047124)
]
HRESULT _stdcall Connection([out, retval] IDispatch ** pVal );
[
propput,
id(0x00000001),
helpstring("Get or Set the connection for this tree"),
helpcontext(0x00047124)
]
HRESULT _stdcall Connection([in] IDispatch * pVal );
在vb中呢
这个Connection属性是object类型的
赋值也很简单
TheTree.Connection = DataConnection
其中Dataconncetion是ADODB.Connection类型
而在delphi中我想模仿vb的做法
用Thetree.connection:= Adoconnection1来赋值
可编译通不过
说Idispatch和Tadoconnection不匹配
怎么办
 
对于ADODB.Connection,你可以这样
var
MyCn:Variant;
MyConnStr:String;
...
MyCn := CreateOLEObject('ADODB.Connection');
MyConnStr:='Provider....'
...
MyCn.OPen(MyConnStr);
...
 
哥们!你的
Thetree.connection:= Adoconnection1
中的Adoconnection1是ado页的控件吧
那当然不能赋值了,类型不一样嘛
可以那样
var
MyCn:_Connection;
MyConnStr:String;
...
MyCn := CreateOLEObject('ADODB.Connection') as _Connection;
MyConnStr:='Provider....'
...
MyCn.OPen(MyConnStr);
...
Thetree.connection:= MyCn //赋值
进行上面步骤,你应该先导入ADO类型库

 
多人接受答案了。
 
后退
顶部