我有一个后代的基本表格。基础表单上有一个TElRelDataSource(来自ElPack v4.00)。当我打开后代表单时,我收到一个错误“无法继承(父表单)。包含一个不支持继承的组件”。这是与祖先形式开放(有两个),以避免“祖先形式(父形式)未找到”错误。
Delphi 7不支持(AFAIK)最终类,但这似乎是一个标准的错误消息。这是在“德尔福的Tomes:故障排除”的索引中,但我没有那份副本,我不愿意花费60美元来阅读“这就是为什么你应该避免VFI”这样的条目(对此感到悲观)书的内容)。除此之外,Google或Bing中没有引用。
这是我最近从一个刚离开的人那里继承的代码,我是他们离开后第一个改变它的人。这意味着我无法问他是如何制造违规表格的。
那么,我该如何解决此错误消息?
答案 0 :(得分:5)
你陷入了一个有趣的问题。首先,您说父表单已经包含违规的DataSource,因此您必须问自己一个问题:原始开发人员如何设置将数据集放在父表单上,然后创建子表单,如果创建子表单被数据源拒绝?
这意味着你试图将自己添加到自己身上。不要添加它,找到一个不依赖于TElRelDataSource的其他解决方案。
原始版本可能是针对不同版本的TElRelDataSource编译的,其中一个版本允许继承。 “Inherability”由“csInheritable”组件样式控制。也就是说,如果组件在ComponentStyle中不包含“csInheritable”,则Delphi IDE将不允许可视继承。您有很多选择:
答案 1 :(得分:3)
一种选择是从表单中删除有问题的组件,并在FormCreate事件中动态分配它。根据(假定的)非可视数据源组件的属性数量,这可能相当简单。