在新组件中隐藏属性和事件

时间:2018-12-07 21:32:30

标签: delphi components lazarus freepascal

我在Lazarus中创建了一个基于TPaintBox的新组件。现在,在对象检查器中,我具有属于此基本组件(TPaintBox)的所有属性和事件。

我的问题是:我可以为组件隐藏所选的属性和事件吗?

例如,我只想保留Width和Height属性。

你能帮我吗?

3 个答案:

答案 0 :(得分:10)

属性/事件一旦发布,就不能取消发布。

但是,至少可以从Object Inspector中将其隐藏[em] 。

设计时代码在IDE中注册了组件之后,它可以:

答案 1 :(得分:6)

不确定拉撒路,但在Delphi中,TPaintBoxTGraphicControl的轻量后代。它的大部分声明只是发布属性。我不知道您的组件在做什么,但是直接从TGraphicControl派生它并在实际需要的地方复制TPaintBox代码可能会更容易。然后,您可以仅发布所需的属性。请注意,您仍然拥有在TControlTComponent中声明发布的那些属性。

答案 2 :(得分:2)

不,您不能隐藏(取消发布)已发布的属性。

在Delphi中,大多数对象都是基于具有所有相同属性的父类,但是大多数都是隐藏的。

因此,尽管您无法隐藏公开的属性,但通常可以通过将类基于TCustomxxx来实现所需的功能。

不幸的是,TPantbox是一个例外。它是从TGraphicControl继承的,但又从TControl继承的,TControl已经具有许多已发布的属性,包括AlignWithMargins,CustomHint和其他几个属性,又是从TComponent继承的,TComponent已发布Name和Tag。公平地说,您肯定需要名称,而Tag不是我想的问题。

如果您只需要回到TGraphicControl,那还不错。只需复制一个成员和几个例程。但是要回到TComponent,这实际上是您不可行的,以隐藏许多属性。