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

标签 delphi properties ide components delphi-10-seattle

我在使用 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/

相关文章:

android - 在 Android Studio 中默认打开“文本”选项卡

delphi - 几乎立即关闭第二个应用程序实例时,停止表单在屏幕上短暂闪烁

android - Delphi中的跨平台音频支持

delphi - 如何构造对象而不分配其内存?

swift - Swift 中属性方法(set、get、didSet、willSet 等)的继承

C#9、.NET 5.0 字段比发布中的属性更快

algorithm - 我如何进行类似 iPhone 按钮的填充

wpf - 绑定(bind)到 wpf 中父元素的属性

Javascript代码注释

java - Netbeans IDE 教程