如何在运行时设计器中隐藏继承的已发布属性?

Bri*_*ost 6 delphi properties rtti delphi-xe3

我正在使用属性检查器(例如JVCL库中的漂亮的JvInspector),它很好地让我查看和编辑我的类'TMyClass'的已发布属性.TMyClass来自TFrame并且有一些已发布的属性是我需要查看和编辑的唯一属性.当然TFrame有很多VCL属性,都是已发布的,我也看到了.

如何抑制祖先属性RTTI并留下我自己发布的属性?我正在使用XE3所以世界是我的牡蛎......也许吧.

TLa*_*ama 8

TCustomFrame从您的课程中派生您的课程,并从您的课程中仅发布您需要的属性.虽然你基本上不能隐藏已发布的属性,但是有很多它们受到保护,并且通过使用TCustomFrame类作为你自己类的祖先来保持隐藏.

这就是VCL中几乎每个控件都是在类层次结构中组成的.例如,TLabel是一个TCustomLabel后代,它在类链中的唯一作用是发布您可以在Object Inspector中看到的属性.

  • 这恰好有效,因为*是*类的TCustom`版本.但是,在一般情况下,无法隐藏已发布的属性.Brian,您可以通过编辑DFM文件并删除不再发布的属性来修复DFM加载.(如果您仍然需要*使用*那些属性,那么您不能在DFM中设置它们,因为它们不再发布.而是在运行时在代码中设置它们.) (2认同)
  • @Brian,你所谈论的`TJvInspector`是*开源*; 如果您对Object Inspector概念感到满意,那么对该检查器进行子类化并使其隐藏某些属性应该不难. (2认同)