求教,两个OCX控件之间怎么传递对象?(300分)

  • 主题发起人 主题发起人 afiha
  • 开始时间 开始时间
A

afiha

Unregistered / Unconfirmed
GUEST, unregistred user!
嵌在web页里的两个ocx,我想让一个ocx用另外一个ocx中创建的对象,怎办?谢谢!
 
各位富翁不是吧?进来灌灌水也好让我把帖子结了啊……
 
类似于DLL调用另外一个DLL,应该没问题吧,可惜从没测试过。
 
如在ocx1中调用ocx2如下:

从网页中
classid="clsid:18A0E873-AD97-42C7-BBD1-9E3A54831169"处
找出ocx的clsid:18A0E873-AD97-42C7-BBD1-9E3A54831169
再从注册表中搜索18A0E873-AD97-42C7-BBD1-9E3A54831169可以找出一主键如:
bProj1.b其下子键clsid为上。

根据类名bProj1.b,在ocx1中写
var FormB:olevariant;
FormB:=createoleobject('bProj1.b');
则可访问bProj1.b中由接口Ib引出的属性和方法:FormB.Caption,FormB.Color等








 
我见分眼开!
 
to zhangshunzhong,:
我在ocx1中创建对象obj1,赋给ocx2一属性PObj1,那么在ocx2中能否像在ocx1中用obj1
一样应用PObj1?
万分感谢!

 
你的意思是在ocx1中动态创建一对象?
然后?
我没弄懂你的意思,不过外部能够访问ocx中的对象,必须是通过该ocx中引出的属性方法。
 
建一个ActiveXForm,设置其Name为:b,
在Form上放一Edit1,设一全局变量s,在Edit1的OnChange事件中加入: s:=edit1.text;
在类型库的Ib接口中加入一属性EditValue,类型为BSTR。刷新后,在Get_EditValue函数中加入Result:=s;

这样,当这个ocx被运行之后,你可以在其它任何程序(当然也包括另一个ocx)内加入
var FormB:olevariant;
FormB:=createoleobject('bProj1.b');//bProj1.b是上面建立的ocx的类名
Showmessage(FormB.EditValue);//通过EditValue可以得到bProj1.b中Edit1的值


 
后退
顶部