我有一个表单上的框架。当我改变框架(添加/删除按钮、标签)时,表单中没有任何更改或控件在表单中的位置与框架中不同。如果从表单中删除框架并重新添加它,则一切正常。
为什么?我记得在Delphi 2010中没有问题(现在是Delphi XE)。
谢谢。
你创建了一个框架,并在另一个表单上放置了一个实例,问题是稍后对原始框架所做的更改不会立即显示,直到您删除该实例并重新放置它为止?
您无需删除框架,只需右键单击并选择要从其主控件(原始框架)属性继承属性的控件,然后单击“恢复为继承状态”。奇怪的是,在框架中不能使用全选。
这是我避免使用框架的原因之一。我希望框架有一个“不允许自定义”属性(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中添加的额外内容可能会干扰你在其他级别所做的更改。通常情况下,添加额外控件和删除控件都不是问题(添加时额外控件应自动显示,删除控件时应消失),但是由于位置问题(控件重叠等),效果可能是直到后来才能看到更改。