2

嗨,我有使用 100 多种表格的 delphi 应用程序。有一种表格叫做表格 B,它是从表格 A 派生的。

Unit B 

interace

uses A;

Type
Form B = Class(Form A)

End;

现在,当我尝试在 IDE 上打开 Form B 时,我收到错误消息“错误创建表单:找不到 TFormA 的祖先”。但是当我打开表格 A 然后尝试表格 B 时,我可以打开表格而不会出现任何错误。我无法找到它发生的原因。我错过了什么吗?

4

3 回答 3

2

使用表单继承时要记住两点。dfm文件需要声明“inherited TFormB”而不是“object TFormB” 另一项是Delphi需要知道TFormA在哪里才能创建TFormB。我已经有一段时间没有这样做了,如果我没记错的话,将基本表单添加到存储库时效果会更好

既然您指出您是手动执行的,请确保 dfm 中的声明使用的是“继承”一词,而不是我上面描述的“对象”。要自己进行更改,请执行以下操作

1)打开两种形式。2)然后将 TFormB 视为文本 3)将其更改为继承,如下所述

    inherited FormB: TFormB
      Caption = 'FormB'
      PixelsPerInch = 96
      TextHeight = 13
    end

// not

    object FormB: TFormB
      Caption = 'FormB'
      PixelsPerInch = 96
      TextHeight = 13
    end
于 2012-08-10T16:02:54.703 回答
1

您应该使用 Delphi IDE 提供的可视化表单继承;我没有 Delphi 5,在 Delphi XE 中通过 File->New->Other...->Inheritable Items 访问它。我确信它在 Delphi 5 中也可用,但可能来自不同的菜单项

于 2012-08-10T15:57:39.620 回答
0

尽管 DFM 文件中的所有内容都“继承”了,但我遇到了同样的问题。

解决我的问题是通过右键单击项目管理器->添加并选择祖先文件将祖先文件添加到项目中。

于 2014-09-16T12:42:37.790 回答