Delphi:框架属性不会在我期望的时候更新(它们会被卡住)

Delphi:框架属性不会在我期望的时候更新(它们会被卡住),delphi,tframe,tform,Delphi,Tframe,Tform,我在表格上有一个框架。当我更改框架(添加/删除按钮、标签)时,表单上不会出现任何更改,或者控件在表单中的其他位置与框架中的位置相同。如果要从表单中删除框架并再次添加它->确定 为什么??我记得Delphi2010(现在的Delphi XE)中没有问题 谢谢。所以您创建了一个框架,然后在另一个窗体上删除了它的一个实例,问题是在删除该实例并重新删除它之前,对原始框架所做的更改不会立即显示出来 您不需要删除框架,只需右键单击并选择要使其属性来自其主(原始框架)属性的控件,然后单击“还原到继承的”。奇怪

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

为什么??我记得Delphi2010(现在的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
现在,它根本不包含重写的属性

如果我将其中一个控件拖动到其他位置(即使是意外),则在已删除帧的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中的这些额外内容会干扰您在其他级别所做的更改。通常,添加额外控件和删除控件都没有问题(添加时会自动显示额外控件,删除的控件会消失),但会产生定位问题(控件重叠/等)其效果可能是,您直到稍后才看到更改。

您可以使用“编辑”菜单中的“锁定控制”命令阻止这些更改。我的designtime软件包可以方便地切换此菜单项。我希望有一种方法可以锁定框架。:-)+1代表“恢复继承”。我不知道。我一直在从表单中删除框架,然后再次添加它。这好多了!谢谢你,Warrne.+1的“我避免框架”。对于简单的项目(比如放置在选项卡式面板中的伪表单),它们就可以了。但是,当您开始使用继承帧时。。。这简直是一场噩梦!“奇怪的是,全选在框架中不起作用。”-按住Ctrl键,然后拖动以选择框架实例中的所有控件。然后在框架中单击鼠标右键,并恢复为“继承”。框架很酷,非常有用,如果不是有点特殊的话(这是一个词吗?)。几乎所有与框架有关的问题都是由编辑实例(很容易出错)而不是原始实例引起的。我发现对类进行运行时合成比使用框架要好得多,其中一些类是“面板或类似子表单的对象”。事实上,很容易做一些几乎看不见的坏事,这是为什么帧是坏的关键。他们不仅有点古怪,而且非常狡猾。