Delphi:框架属性在我预期时不会更新(它们卡住了)

时间:2011-08-04 18:50:17

标签: delphi tframe tform

我在表单上有一个框架。当我更改框架(添加/删除按钮,标签)时,表单上不会出现任何更改,或者控件在框架中的表单中有其他位置。如果要从表单中删除框架并再次添加 - >确定。

为什么呢?我记得Delphi 2010(现在是Delphi XE)没有问题。

感谢。

1 个答案:

答案 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中的这些额外内容会干扰您在另一级别所做的更改。通常添加额外的控件和删除控件是没有问题的(额外的控件应该在添加时自动显示,删除的控件应该消失),但是由于定位问题(控件重叠/等)的影响,效果可能是你不能直到稍后才看到变化。