制作ACTIVEX控件时,属性赋值及传递参数的问题。很郁闷的问!!(100分)

  • 主题发起人 主题发起人 ganyu
  • 开始时间 开始时间
G

ganyu

Unregistered / Unconfirmed
GUEST, unregistred user!
我这是第一次使用DELPHI建立ACTIVEX控件,使用的是delphi5.0的向导。建立过程是:打开
new item对话框,选择activex页,先建立ACTIVEX LIBRARY,在建立ACTIVEFORM。首先问直
接建立ACTIVEFORM地结果与用上述方法建立的结果有不同吗?
当delphi生成了activex控件的框架后,我想在其中加入一些属性和方法,希望可以在外部
引用(希望属性可以出现在object inspector中,希望加入的属性和方法可以在编程时出现
在列表中)。我加入属性和方法使用的是***_tlb.pas对应的可视化编辑页,即type library
。在其中的interface项目中加入属性和方法,加入属性时delphi自动生成GET和SET过程,我
只是改变了缺省的属性名称,其余保持缺省状态。现在地问题是无法给属性赋值,无论是使
用自动生成的GET/SET过程,还是另外加入的方法。或者是值赋不过去,或者是报告‘需加
载DLL’等错误。现在只能在自动生成的FORM页的代码中(不是在***_tlb.pas中)手工加入
变量记录通过在interface项目中加入的方法传入的值。
另外在interface项目中加入的方法的参数只能是delphi提供的固定的类型吗?我试图把在
主程序中引用的一个第三方控件,作为我自己制作的activex控件中定义的方法的参数类型
,我没有成功。真的是这样吗?有解决的方法吗?
希望您帮助解答,谢谢!!!!!!!!!!!!!

 
1、才疏学浅,没感到太大区别。先建ACTIVEFORM也要去找ACTIVEX LIBRARY
2、我也是这样加不了属性,所以,我就添加方法,然后,去掉其中一个。
 
我是对属性无法进行控制,不是加不进去。

另外,‘去掉其中一个’什么意思
 
由于是ACTIVEX控件,因此它所支持的数据类型就少了很多;
包括能被自动化的任何类型,如果你想直接把该参数类型定为RECORD,ARRAY就不行;
你定义的每一个属性DELPHI都提供了读和写方法。
我以前在做ACTIVEFORM时,就是在代码内部再定义一个同属性类型一样的变量,
读和写方法都是针对这个变量的,可行;
我可以在外部的HTML中传入一个TEXTFIELD组件到ACTIVEFORM内部,可以执行如下代码:
TEXTFIELD。VALUE:=‘SFSDFSDF’;
然后我赋的值能够传到HTML上。

D6+IE5通过。
 
关注……
 
谢谢NSJ。我现在在主程序中使用了一个第三方控件A(ocx),现在在我自己写的控件B
(ocx)中定义一个METHOD,其参数需要定为A的类型,以便传入。
你的意思是恐怕不行,是,吗?
 
是什么类型,如果是A的自定义类型,
并且不能自动化的话是不行的。
你可以用OLEVARIANT试试。
 
把写过程的参数类型改为你想要的类型,返回值由HResult改为void
去掉读过程的参数,返回值由HResult改为你想要的类型
在自动生成GET和SET过程写点代码就行了。
在private里定义FTest:XXX;
Get_XXXX:
result:=FTest;
Set_XXXX:
FTest:=value;
在适当的地方给这个变量赋值,这样就可以读写属性了。
在客户端调用Get_XXX(COM+)方法就可以得到你想要的值.
DCOM等调用可以直接DCommConnection1.appserver.PTest这样调用。
 
后退
顶部