【问题标题】:Dynamically show/hide properties in the IDE Object Inspector?在 IDE 对象检查器中动态显示/隐藏属性?
【发布时间】: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 属性进行交互来判断。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如果需要,我可以包含示例。
    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2018-10-29
    • 2019-06-16
    • 2015-03-06
    • 2014-07-16
    • 2011-03-26
    相关资源
    最近更新 更多