给TForm的子类添加Published属性(100分)

  • 主题发起人 主题发起人 foxling
  • 开始时间 开始时间
F

foxling

Unregistered / Unconfirmed
GUEST, unregistred user!
我想创建一个窗体,
TMyForm=Class(TForm)
然后想在该窗体上增加一些属性
那么,该如何做呢?
 
TMyForm=Class(TForm)
provite:
Fstrprop : string;
published:
property StrProp : string; read fstrprop write fstrprop;
end;
//就可以拉
 
要在设计器中体现么?不要的话上面的就可以了
要的话,需要加到对象库里面。
 
如果不使用第三方的工具包的话,可以按一下步骤来实现

1、给Tform的子类添加Published属性

2、把Form添加到Object Repository (对象仓库)

3、添加这个窗体到一个设计时包中。

4、添加uses
Classes, {$IFDEF VER140}DesignIntf, DesignEditors{$ELSE}DsgnIntf{$ENDI
F}…
到单元中,并加入注册代码如下:

procedure Register;

begin
RegisterCustomModule(TMyForm, TCustomModule);
end;

5、最后在项目中从Repository中继承你添加的TmyForm,新的Published属性会显示在属性编辑器中。

当然还有更加复杂的创建方法,就是写一个模块创建专家,使用CreateModuleEx函数和不同的流机制来实现,但由于比较难,并且没有什么特殊的优势,这里就不介绍了。
 
楼上的兄弟:
你的方法我试过,编译是通过了,
可是那些属性在设计期还是没有出来呀?
我的属性声明如下:
published
property TableName: string read FTableName write FTableName;
按理不会有什么问题呀。
我用的Delphi6.0+Win2000Professional
难道和这些有关系?
不望您能多指点一下。
先谢谢了!
 
如果单独编译该单元,提示proxies.dcu文件找不到。
如果直接对包进行编译,则能通过。但增加的属性在设计期还是出不来。[:(]
 
原来要把窗体单元和注册单元分开写,
搞定了,给分!
 
多人接受答案了。
 
后退
顶部