我在使用 Delhpi 10 Seattle 时发现了一个有趣的功能。在 Firedac(特别是 TFDConnection
组件)中,Params
属性具有一些巫术魔法,可以根据另一个属性的值动态显示和隐藏 IDE 中的属性。特定属性(property)。 (自从我刚开始使用 Firedac 以来,我不知道这个功能已经可用多久了)。当您更改 TFDConnection.Params
中的 DriverID
属性时,Params
中的其余属性将显示在 IDE 对象检查器中,以便能够指定特定于驱动程序的属性。
现在我已经研究了它是如何工作的,它是一堆接口(interface)定义,源自 IFDStanDefinition
。除了涉及利用名称/值对功能的 TStringList
之外,我无法弄清楚它实际上是如何在 IDE 中执行此操作的。
我很想在我自己的组件中实现同样的功能,特别是 TCollectionItem
有一个属性 ActionType
,它是一个 Enum 类型。我想根据为该属性选择的值动态显示/隐藏属性。
如何在我自己的组件集合项的 IDE 对象检查器中实现显示/隐藏属性的相同功能?
顺便说一句,恐怕部分答案是它需要所有字符串值,根据您如何通过代码与此 Params
属性进行交互来判断。
最佳答案
编写一个属性编辑器并包含 paVolatileSubProperties属性当 GetAttributes返回。剩下的就是释放旧的子属性实例,并替换为新的子属性实例(但它们可以是任何 TPersistent 类后代,因此它不依赖于字符串列表类)。
关于delphi - 在 IDE 对象检查器中动态显示/隐藏属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733793/