首页  编辑  

自己在Form中定义的属性如何能在Object Inspector中显示出来

Tags: /超级猛料/VCL/Form,窗体/疑难杂症/   Date Created:

如何让自己定义的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|在你的仓库中选你添加的窗体。试试看