Delphi:如何摆脱“TMyForm未发现错误的祖先”?

时间:2010-12-23 11:55:20

标签: delphi ide

我有一些从TMyForm继承的表单(TMyForm是一个带有源代码形式的第三方组件)。

当我在IDE中打开时,我的表格继承自TMyForm,我有:

  

创建表单时出错:Ancestor for   找不到“TMyForm”。

解决方法是在IDE中打开TMyForm单元,然后尝试打开我继承的表单。

但是我怎么能避免Delphi出现这个错误并且即使在IDE中没有打开TMyForm也可以打开我的表单?

4 个答案:

答案 0 :(得分:14)

您需要在IDE中打开父表单或将其添加到项目中,遗憾的是没有解决方法。在这里:Register custom form so I can inherit from it from multiple projects, without copying the form to the Object Repository folder我尝试了很多很多东西,没有成功。

答案 1 :(得分:3)

我的解决方法。有几种方法:

  • 添加到项目的所有父窗体的完整路径。不舒服,因为绝对的路径
  • 将包含父表单的包添加到项目列表中。在这种情况下,那里没有问题。但每次都需要打开一个组件 在delphi环境中。
  • 使用embarcadero的临时解决方案。

会自动打开所有子表单:

Ticket,创建于大约10年前:http://qc.embarcadero.com/wc/qcmain.aspx?d=8376

在这里,您可以下载Delphi XE2的版本:https://bitbucket.org/hemn/autoopenunit

我推荐它!

答案 2 :(得分:2)

答案 3 :(得分:1)

我一直在寻找解决方案,似乎终于找到了解决方案。

我正在使用具有几种基本形式和框架的包装。

我已将它们添加到存储库中,但仍然出现错误。

某些表单和框架在项目管理器中未显示“ dfm”,这似乎很关键,是编辑.dpr文件并在大括号中添加名称:

fIBSConnectionForm in 'GUI\BaseGUI\fIBSConnectionFrom.pas',

进入

fIBSConnectionForm in 'GUI\BaseGUI\fIBSConnectionFrom.pas' {frmIBSConnectionForm},

对于框架,请确保使用{f ...:TFrame}

这样做并重新启动Delphi之后,我可以再次打开后代表单!