怎么从一个现存的控件派生一个新控件,但隐藏一些原控件的属性不显示出来(50分)

  • 主题发起人 主题发起人 zhouyong
  • 开始时间 开始时间
不可能,已经公开的属性不能隐藏,只能从他的上一层继承。
如要想隐藏TEdit中的某些属性,可以从TCustomEdit继承。
 
这也是为什么,VCL中有大量的类继承父类后只是把一些属性公开的原因。
 
如果你继承了一个控件,只要你不把原控件的属性放到publish, 他就不会显示出来的
,默认应该是不显示的 阿,只是显示了原控件的一些很常用的属性而已.
 
秘密一旦公开了,就再也不能成为秘密了。
 
可以把原来PUBLISHED中的属性重新宣告为只读就可以了
比如:
TuserButton=class(Tbutton)
…………………..
private
fcaption:string;
………………..
published
caption:string read fcaption;
这样就可以用了
 
可能!!!
比如:
继承TEdit,项屏蔽"top"属性
TMyEdit=class(TEdit)
private
fMyTop:integer;
publish
property Top:integer read fMyTop;
end;

哈哈,歪们邪道.

 
把PUBLISHED中的属性重新宣告为只读
如:publish
property Top:integer read fMyTop;
 
scloudy,面条,ht99:
继承出来的类再继承,还能把其中隐藏的
属性公开吗?
例如,
TMyAnotherEdit继承TMyEdit,还能把Top
属性公开吗?
 
什么乱七八糟的!

不行!
 
应该可以吧。delphi的许多自己的控件
就是这么干的。如TDBGrid,TCustomDBGrid,
TCustomGrid.
 
赞同JohnsonGuo所说的。
TEdit继承自TCustomEdit,它只是简单的把要Published 属性再声明一次,没做其他的事情。
所以如果你要屏蔽TEdit的某些属性,只需简单的继承TCustomEdit,不须要的属性在Published
中不声明就行了。
 
谢谢各位
 
多人接受答案了。
 
后退
顶部