我在使用Delhpi 10 Seattle时遇到了一个有趣的功能。在Firedac中,特别是TFDConnection
组件,Params
属性具有一些巫术魔法,可以动态显示和隐藏IDE中的属性,具体取决于另一个特定属性的值。 (我不知道自从我刚开始使用Firedac以来已经有多长时间了)。当您更改DriverID
中的TFDConnection.Params
属性时,Params
中的其余属性会显示在IDE对象检查器中,以便能够指定特定于驱动程序的属性。
现在我已经调查了它是如何工作的,它是一堆根据IFDStanDefinition
生成的接口定义。我无法弄清楚它是如何在IDE中实际执行此操作的,除了TStringList
涉及使用名称/值对功能。
我希望在我自己的组件中实现相同的功能,特别是TCollectionItem
具有属性ActionType
,这是一个枚举类型。我想动态显示/隐藏属性,具体取决于为该属性选择的值。
如何在我自己的组件集合项中的IDE Object Inspector中实现显示/隐藏属性的相同功能?
另一方面,我担心答案的一部分是它需要所有字符串值,根据您通过代码与此Params
属性进行交互来判断。
答案 0 :(得分:2)
编写属性编辑器,并在paVolatileSubProperties返回时包含GetAttributes属性。其余的是关于释放旧的子属性实例,并替换为新的子属性实例(但它们可以是任何TPersistent类后代,因此它不依赖于字符串列表类。)