我尝试将一个组件从一个数据模块复制并粘贴到Delphi XE2中的另一个数据模块。该组件是Fast Report数据源链接组件。数据模块是全新的,在XE2中刚刚创建。
如果它旨在帮助我们编写跨平台数据模块,但根据文档,它只影响IDE,这与您在设计时玩弄它时收到的警告不一致,如果更改它,您会收到以下错误:
我看不出这个错误消息和文档都是正确的。如果设置不正确,警告似乎表明会出现编译、链接和运行时错误。好奇的人想知道这是什么,为什么它被添加到XE2的数据模块中。我预计其他人也会偶然发现这个奇怪的特性,感觉自己像踩在恐龙粪便上,想知道这个特性的情况。我的最佳答案是,在XE2中,数据模块对TPersistent有亲和性,这意味着该数据模块不希望在其中放置非视觉控件,这些控件是特定于VCL的。在Delphi的将来版本中,也许会有一个类似的标记,允许我们将表单标记为“没有依赖于VCL或Windows”?更新1:您的数据模块的.PAS源代码以一种类似于编译指令的方式存储了这个伪属性,如下所示:
其他人遇到了同样的问题,并在quality central as 106369上报告了这个问题,同样的错误消息导致我查看了这个mysterious DocWiki entry.
因此,数据模块现在具有框架亲和性和设计时伪属性,根据文档:
“由于ClassGroup伪属性仅由IDE使用,而不是编译器生成的属性(因此,“伪属性”),因此ClassGroup未在编译器生成的库引用中记录。您正在阅读的页面是ClassGroup的文档。”
所以,当我想要从现有的设计时构建块集中复制和粘贴组件到我的数据模块时,它阻止了我,并且这是我第一次知道它的存在。
一旦我改变数据模块的亲和性,就可以将内容粘贴到数据模块中而不会出现问题。谢天谢地有Google——那个错误,否则我就会卡住了。如果它旨在帮助我们编写跨平台数据模块,但根据文档,它只影响IDE,这与您在设计时玩弄它时收到的警告不一致,如果更改它,您会收到以下错误:
EInvalidType : The following component(s) are not available in the specified
class group. This is likely to cause compile or runtime errors.
frxDBSet.TfrxDBDataset.
我看不出这个错误消息和文档都是正确的。如果设置不正确,警告似乎表明会出现编译、链接和运行时错误。好奇的人想知道这是什么,为什么它被添加到XE2的数据模块中。我预计其他人也会偶然发现这个奇怪的特性,感觉自己像踩在恐龙粪便上,想知道这个特性的情况。我的最佳答案是,在XE2中,数据模块对TPersistent有亲和性,这意味着该数据模块不希望在其中放置非视觉控件,这些控件是特定于VCL的。在Delphi的将来版本中,也许会有一个类似的标记,允许我们将表单标记为“没有依赖于VCL或Windows”?更新1:您的数据模块的.PAS源代码以一种类似于编译指令的方式存储了这个伪属性,如下所示:
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}