【发布时间】:2011-10-21 22:16:59
【问题描述】:
如果我有一个包含框架的表单,并且我在 frame.pas/dfm 文件中编辑了框架的布局,那么有时(总是?)表单中的框架似乎不会随着框架的新布局而更新.
到目前为止,我一直在从表单中删除框架,然后重新导入它。
但我记得有一种更有效的方法可以做到这一点。
怎么做?
【问题讨论】:
标签: delphi
如果我有一个包含框架的表单,并且我在 frame.pas/dfm 文件中编辑了框架的布局,那么有时(总是?)表单中的框架似乎不会随着框架的新布局而更新.
到目前为止,我一直在从表单中删除框架,然后重新导入它。
但我记得有一种更有效的方法可以做到这一点。
怎么做?
【问题讨论】:
标签: delphi
要取消对插入帧所做的更改:
对于框架上的控件:在这些控件的上下文菜单中使用 Revert to Inherited。
对于框架本身:在表单的上下文菜单中使用 View as Text 并从 DFM 中删除框架的大小。
要将插入的框架更新为其声明:
我怀疑使用 View as Text 和 View as Form 快速切换以强制创建表单的新实例。
【讨论】:
在 form1 中编辑框架后,您将无法自动获取原始 frame1.pas /dfm 中的更改。
直到您在form1中编辑框架中的任何项目,form1.dfm中只有少量信息,因此使用frame.dfm中的所有属性,但在form1中编辑后form1.dfm将具有有关您所做更改的一些信息,因此它们将覆盖原始 frame1 属性所以现在您不能指望自动更新。
如果不需要修改form1中的框架(你说你需要修改原来的那个,如果你同时修改(原来的和form1中的那个)那肯定会让你感到困惑。
所以只对原来的做修改,确定后你可以对你正在使用的框架进行改变。(因为你可能需要在不同的情况下使用专门的框架)
或者,如果您的框架的所有实例都相同,您可以在运行时调用该框架
var
myframe :TFrame ;
begin
myframe := TFrame2.Create(self) ;
//better using a panel as a place holder
myframe.Parent := Panel1 ;
myframe.Show ;
myframe.Left := 0 ;
myframe.Top := 0 ;
end;
【讨论】: