在显示之前改变窗口尺寸的正确方法

时间:2017-03-04 08:58:25

标签: delphi delphi-10.1-berlin

我已经从XE7移动了项目,在子窗体的OnCreate中我改变了窗口的大小,这个窗体有Position:= MainFormCenter。

现在有了柏林,在显示这个子表单后,我有Left = 0和Top = 0。如果在OnCreate中未更改窗口大小,则表示正确创建此子窗体并且它在主窗体上居中。

如何使用Delphi Berlin在初始化期间更改表单大小而不丢失表单位置设置?

此处将表格位置更改为TFormPosition.Designed:

unit FMX.Forms

procedure TCommonCustomForm.Show;
var
  LPosition: TFormPosition;
...
begin
...
          // If you changed the original coordinates or size
          if TBoundChange.Location in FBoundChanges then
          begin
            if LPosition = TFormPosition.Default then
              LPosition := TFormPosition.DefaultSizeOnly
            else if LPosition in [TFormPosition.DefaultPosOnly, TFormPosition.ScreenCenter, TFormPosition.DesktopCenter,
              TFormPosition.MainFormCenter, TFormPosition.OwnerFormCenter] then
              LPosition := TFormPosition.Designed; // Changed here to Default
          end;
...
end;

更新

我找到的一种方法 - 从表单的OnShow方法改变大小

1 个答案:

答案 0 :(得分:0)

没有其他答案 - 解决此问题的一种方法是在表格

的OnShow方法中更改表单大小