自从我升级到Delphi 2009后,我对TFrame后代的体验非常糟糕。基本上,框架的子组件作为对象溢出到主机窗体中,导致名称崩溃,找不到类等。在dfm中,使用的旧版Delphi的框架为inline
,子组件为inherited
。 Delphi 2009 IDE现在将子项扩展为object
。
编辑:我看到它发生在多个表单中,但我无法通过小规模演示应用程序重现它。
答案 0 :(得分:1)
我不知道你的项目发生了什么,但我刚创建了一个全新的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
答案 1 :(得分:0)
父表单是否已正确添加到.dpr?