我在表单上有一个框架。当我更改框架(添加/删除按钮,标签)时,表单上不会出现任何更改,或者控件在框架中的表单中有其他位置。如果要从表单中删除框架并再次添加 - >确定。
为什么呢?我记得Delphi 2010(现在是Delphi XE)没有问题。
感谢。
答案 0 :(得分:13)
所以你创建了一个框架,然后在另一个窗体上删除了它的一个实例,问题是,在删除实例并重新删除它之前,以后对原始框架所做的更改不会立即显示?
您无需删除框架,只需右键单击并选择要使其属性来自其主(原始框架)属性的控件,然后单击Revert to inherited
。奇怪的是,Select All在帧中不起作用。
这是我避免使用框架的原因之一。我希望帧具有“不允许自定义”属性(AllowCustom = false),它可以防止任何设计时DFM冲突,因为不允许帧具有这种奇怪的双重属性集。
规范化框架的另一种方法是右键单击并以文本形式查看表单,并将框架缩小为:
inline Frame61: TMyFrame61
Left = 0
Top = 0
Width = 500
Height = 500
Align = alNone
TabOrder = 0
ExplicitLeft = 31
ExplicitTop = 33
end
现在它根本不包含任何被覆盖的属性。
如果我将其中一个控件拖到其他位置(甚至意外),则在删除了Frame的DFM中会发生以下情况:
inline Frame61: TMyFrame6
Left = 0
Top = 0
Width = 500
Height = 500
Align = alNone
TabOrder = 0
ExplicitWidth = 527
ExplicitHeight = 337
inherited Edit2: TEdit
Left = 19
Top = 77
ExplicitLeft = 19
ExplicitTop = 77
end
end
DFM中的这些额外内容会干扰您在另一级别所做的更改。通常添加额外的控件和删除控件是没有问题的(额外的控件应该在添加时自动显示,删除的控件应该消失),但是由于定位问题(控件重叠/等)的影响,效果可能是你不能直到稍后才看到变化。