自从我升级到 Delphi 2009 以来,我对 TFrame 后代的体验很糟糕。基本上,框架的子组件作为对象溢出到主机表单中,导致名称崩溃、找不到类等。在 dfm 中,使用的旧 Delphi 具有框架 asinline
和子组件 as inherited
。Delphi 2009 IDE 现在将子项扩展为object
.
编辑:我已经看到它发生在多种形式上,但我无法用小型演示应用程序重现它。
自从我升级到 Delphi 2009 以来,我对 TFrame 后代的体验很糟糕。基本上,框架的子组件作为对象溢出到主机表单中,导致名称崩溃、找不到类等。在 dfm 中,使用的旧 Delphi 具有框架 asinline
和子组件 as inherited
。Delphi 2009 IDE 现在将子项扩展为object
.
编辑:我已经看到它发生在多种形式上,但我无法用小型演示应用程序重现它。
我不知道您的项目发生了什么,但我刚刚创建了一个全新的 D2009 应用程序:
- 一个主窗体,
- 一个包含 Edit1 和 Label1 的祖先框架,
- 一个从我添加的祖先下降的子框架Label2 和 Edit2
- ChildFrame 的一个实例放置在我稍微移动了 Label2 的主窗体上。
这是看起来很正常的结果 dfm:
object MyForm: TMyForm
Left = 0
Top = 0
Caption = 'MyForm'
ClientHeight = 286
ClientWidth = 412
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
inline ChildFrame1: TChildFrame
Left = 8
Top = 8
Width = 313
Height = 240
TabOrder = 0
ExplicitLeft = 8
ExplicitTop = 8
ExplicitWidth = 313
inherited Label2: TLabel
Left = 162
ExplicitLeft = 162
end
end
end
父表单是否正确添加到 .dpr?