-2

我有一个项目,它由许多不同的框架组成。其中一些框架是相互继承的。这是基本设置:

  • TBaseFrame
    • TFrame1
      • TFrame1A
      • TFrame1B
    • TFrame2
      • TFrame2A

...等等。

一切都很好,花花公子。我已经能够整天用这个设置编译和运行我的项目。但是,在某些时候,它开始完全失败并崩溃。

在应用程序启动时,在主屏幕显示后不久,我收到此错误:

错误信息1

奇怪的是,我的应用程序中还没有创建或使用任何这些框架——这些框架位于一个仅在登录后才显式创建的表单上(我确认它不是自动创建的)。

按 OK 后,我的应用程序将终止,然后显示此错误:

错误信息 2

经过一番挖掘,我在 IDE 中发现了一些非常奇怪的东西。我关闭了 Delphi 并重新打开它,我仍然看到这种差异。

在基础框架 ( TBaseFrame) 上,它不显示任何ClientWidthClientHeight属性:

基础框架属性

但是继承的框架 ( TFrame1) 会:

继承的框架属性

似乎继承的框架被视为一种形式,尤其是在Caption那里看到不应该属于的属性。

为什么会发生这种情况,我该如何解决?

编辑

要添加,当我进入我的项目选项时,它让我可以添加许多框架以自动创建,这应该是不可能的。事实上,其中一个框架(最近创建的)已经设置为自动创建。但它是一个框架,而不是一个形式。

编辑 2

在从项目的自动创建中找到并删除 1 框架,以及删除另一个(不相关的)具有类名冲突的框架并将其重新添加到项目中之后,现在我至少可以编译项目并运行它。然而,仍然有许多框架看起来好像它们是形式。

4

1 回答 1

1

您在使用某些 Delphi 版本的 IDE 设计器时遇到问题,它忘记了继承的框架是框架。

要解决此问题,请打开项目源并在受影响框架的组件名称后添加“:TFrame”。保存、关闭并重新打开项目。

这是一个示例:

 MyFrame1 in 'MyFrame1.pas' {Frame1: TFrame};
于 2022-02-12T22:43:49.613 回答