在 IDE 对象检查器中动态显示/隐藏属性?

Posted

技术标签:

【中文标题】在 IDE 对象检查器中动态显示/隐藏属性?【英文标题】:Dynamically show/hide properties in the IDE Object Inspector? 【发布时间】:2016-12-08 14:19:12 【问题描述】:

我在使用 Delhpi 10 Seattle 时遇到了一个有趣的功能。在 Firedac 中,特别是 TFDConnection 组件中,Params 属性具有一些巫术魔法,可以动态显示和隐藏 IDE 中的属性,具体取决于另一个特定属性的值。 (我不知道自从我刚开始使用 Firedac 以来它已经可用了多久)。当您更改 TFDConnection.Params 中的 DriverID 属性时,Params 中的其余属性会显示在 IDE 对象检查器中,以便能够指定特定于驱动程序的属性。

现在我研究了它是如何工作的,它是一堆接口定义,源自IFDStanDefinition。我不知道它是如何在 IDE 中实际执行的,除了 TStringList 涉及使用名称/值对功能。

我很想在我自己的组件中实现相同的功能,特别是TCollectionItem 有一个属性ActionType,它是一个枚举类型。我想根据为该属性选择的值动态显示/隐藏属性。

如何在我自己的组件的集合项中实现在 IDE 对象检查器中显示/隐藏属性的相同功能?

在旁注中,恐怕部分答案是它需要所有字符串值,根据您如何通过代码与此 Params 属性进行交互来判断。

【问题讨论】:

【参考方案1】:

编写一个属性编辑器并在GetAttributes 返回时包含paVolatileSubProperties 属性。剩下的就是释放旧的子属性实例,并用新的子属性替换(但它们可以是任何TPersistent 类的后代,因此它与字符串列表类无关)。

【讨论】:

如果需要,我可以包含示例。

以上是关于在 IDE 对象检查器中动态显示/隐藏属性?的主要内容,如果未能解决你的问题,请参考以下文章

手机连接电脑后不显示文件夹怎么办?

为啥选择多个项目时,某些属性从对象检查器隐藏起来?

从设计器中隐藏 WPF 控件的属性 (Visual Studio 2010)

CocosCreator 动态设置属性在Properties面板显示/隐藏

如何隐藏滚动条?

小程序实践:动态控制组件的显示/隐藏