如何让自己定义的Form的属性在Object Inspector中可以看到?
我从TForm继承一个类TMyForm,该类自定义了几个属性。
有什么办法可以使这些属性出现在对象管理器中呢?
或是根本不可以?
光 Add to Repository 是不够的,是看不到自定义的 Property 和 Event 的.详细步骤:
1、Publish 你自定义的 Property 或 Event;
2、利用 "Add to Repository" 将你自定义的 Form 加入到 "Object Repository";
3、将你的 Form 加入到一个 Package;
4、在你的 Package 中某单元(如你的 Form 对应的 Pas 单元)中加上如下几行:
interface
...
procedure Register;
...
implementation
uses DsgnIntf; //D5 中是该单元
...
procedure Register;
begin
//假设 TMyCustomForm 是你自定义的 Form
RegisterCustomModule(TMyCustomForm, TCustomModule);
end;
5、编译你的 Package, 利用 "Install Package" 将它安装到 IDE 中,现在你可以从
File|New... 菜单的向导中选择 "Inherited" 的方式新建一个刚才你自定义的 Form
了,注意你自定义的 Property 和 Event 也会出现在 Object Inspector 中。
---------------------------------------
为什么我在Form中发布的三个属性
myname
yourname
myColor
在Object Inspector中看不到呢?是Delphi的问题还是我程序写的不对?
回复人: wr960204(武稀松) ( ) 信誉:102 2002-9-25 19:32:57 得分:60
第一:
property youname:string read Fyourname;
只读的属性在属性面板上是看不到的
可以改成:
property youname:string read Fyourname write setyouname;
procedure TForm1.setyouname(value:string);
begin
//什么也不干
end;
第二:也是主要原因,窗体的发布有些特殊
需要把TForm1发到包中编译注册才行
Delphi5和6有些不同,6的有点麻烦,所以这里告诉你Delphi6的
新建一个注册的单元
内容如下
unit MY_Form_Reg;
interface
uses
你的窗体单元, DesignIntf, DesignEditors;
procedure Register;
implementation
procedure Register;
begin
RegisterCustomModule(你的窗体类名, TCustomModule);
end;
end.
新建一个包选中Require点击ADD。
添加Delphi目录下的bin目录中的designide.dcp文件。
然后编译安装。
最后在窗体上点击右键选"添加到仓库"添到一个仓库内比如"Form"
新建工程,选File|New|在你的仓库中选你添加的窗体。试试看