在IDE Object Inspector中动态显示/隐藏属性?

时间:2016-08-03 03:17:29

标签: delphi properties ide components delphi-10-seattle

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

现在我已经调查了它是如何工作的,它是一堆根据IFDStanDefinition生成的接口定义。我无法弄清楚它是如何在IDE中实际执行此操作的,除了TStringList涉及使用名称/值对功能。

我希望在我自己的组件中实现相同的功能,特别是TCollectionItem具有属性ActionType,这是一个枚举类型。我想动态显示/隐藏属性,具体取决于为该属性选择的值。

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

另一方面,我担心答案的一部分是它需要所有字符串值,根据您通过代码与此Params属性进行交互来判断。

1 个答案:

答案 0 :(得分:2)

编写属性编辑器,并在paVolatileSubProperties返回时包含GetAttributes属性。其余的是关于释放旧的子属性实例,并替换为新的子属性实例(但它们可以是任何TPersistent类后代,因此它不依赖于字符串列表类。)