【问题标题】:TFrame as Component, IDE changes object to inline on first useTFrame 作为组件,IDE 在第一次使用时将对象更改为内联
【发布时间】:2016-02-14 11:13:52
【问题描述】:

我创建了一个带有视觉和数据库控件的 Tframe 单元。我使用 sprig 方法将框架注册为组件。 TFrame 有一些已发布的布尔属性。

一切正常,除了我注意到如果我启动 IDE 并打开一个使用该组件的项目,IDE 会抱怨“未知”的已发布属性。如果看一下 DFM,Delphi 已经将嵌入形式中的框架的定义从“object ...”更改为“inline ...”。如果我只是关闭项目而不保存,然后重新打开它,一切都很好。

它只发生在第一个打开的项目上。

任何建议将不胜感激。

【问题讨论】:

  • 您总是必须在构造函数中初始化默认属性值。属性声明中的default 子句仅用于生成 DFM 流系统使用的 RTTI。它实际上并没有分配属性值,构造函数必须分配一个与属性的default 声明相匹配的值。
  • 谢谢,我(最终)意识到了这一点。关于将对象自动更改为内联的任何想法?
  • 在设计时嵌入在表单中的框架应该被声明为inline,而不是object。如果 IDE 在打开项目时抱怨,它可能有一个错误。您使用的是哪个版本的 Delphi?
  • 使用 XE6。但我已将框架注册为组件。而这种不良行为仅在我启动 IDE 后打开的第一个项目包含该框架组件时才会发生。
  • 可能有人无法理解您的问题。我知道我知道。

标签: delphi


【解决方案1】:

这里的事情是注册 TFrame 确实有效,但发布属性几乎总是无效。我说“几乎总是”,因为我过去遇到过这种问题(据我所知,Delphi XE2)并且设计器中似乎有一个隐藏在某个地方的错误。当时调试这个问题没有给我任何结果。

我建议您只需将已发布的属性移至公共并直接在源代码中设置这些属性。这是一种解决方法,但它有效。

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多