【问题标题】:Removing properties from Object Inspector从对象检查器中删除属性
【发布时间】:2016-02-28 15:37:55
【问题描述】:

我购买了 TMS 组件包,并希望隐藏一些组件属性,使其不显示在对象检查器中。

我正在使用UnlistPublishedProperty 隐藏它们。

它大部分时间都有效。但由于某种原因,例如AnchorsStyleSettings 仍会显示。

我这样称呼它:

  UnlistPublishedProperty(TAdvEdit, 'StyleElements');

奇怪的是它适用于 90% 的属性,我不知道为什么它不会对对象检查器隐藏其他属性。

我可以编辑源代码并注释掉它从 TCustomEdit 发布的行,但我想知道为什么 UnlistPublishedProperty 的方法不起作用。

谢谢!

【问题讨论】:

标签: delphi delphi-10-seattle


【解决方案1】:

您尝试删除的属性是从更高的祖先类继承的。如果您希望使用UnlistPublishedProperty 删除这些特定属性,则必须将它们从祖先中删除。但是,这将适用于所有控件,而不仅仅是您正在处理的那个。

【讨论】:

  • 不一定。您可以使用拦截器类而不是直接修改祖先类。这样,您在拦截器类中呈现的修改只会影响使用拦截器类的单元。事实上,这是使用拦截器类的完美场景。
  • @SilverWarior 没错,我的目标是UnlistPublishedProperty 的工作方式。
【解决方案2】:

除了杰瑞的回答;有一个从子组件中删除属性的解决方案。 my answer here的第三部分演示了如何通过注册组件PropertyEditor并覆盖GetProperties来过滤特定属性名称来过滤掉自定义组件的子组件的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多