MDI孩子没有最大限度地创造

时间:2015-05-19 14:02:38

标签: forms delphi

我有一个MDI子表单,在打开时不会立即最大化。 我可以看到它上面的数据网格被创建,然后表单被最大化

我使用以下构造函数来创建表单。

Properties:
FormStyle = fsMDIChild
Position = poDefaultPosOnly
WindowState = wsMaximized

constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
  WindowState := wsMaximized;
  inherited Create(aOwner);
  TimerDelay.Enabled := True;
end;

问题是视觉问题可以说 - 一切都按预期运作。在最大化之前显示表单看起来是错误的。真正可能很棒的是有一个AfterShow活动。我想在这种情况下这对我有帮助。

1 个答案:

答案 0 :(得分:2)

MDIChild弹出窗口带有一点动画。

如果MDIChild.Position设置为

  • poDefaultPosOnly
  • poDefaultSizeOnly
  • poScreenCenter
  • poDesktopCenter
  • poMainFormCenter
  • poOwnerFormCenter

在创建

时计算顶部和左侧

假设Top = 300且Left = 400现在

at on Show MDIChild现在是MDIParent的一部分,所以

Top = 300且Left = 400现在位于MDIParent内。

表示MDIChild的左上角现在位于MDIParent形式的中间位置。

带有wsMaximized

动画从右上角到左上角显示。

现在使用位置

  • poDesigned
  • poDefault

并且将Top和Left设置为0,将不再显示动画。

constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
  Top  := 0;
  Left := 0;
  WindowState := wsMaximized;
  inherited Create(aOwner);
  ....
end;

在设计模式下,选择frmJsContacts时,请查看对象检查器。

  • IF属性WindowState设置为wsMaximized

您可以在短时间内看到整个表单!

如果更改如下,可以在短时间内看到仅标题栏,而不是整体表单

  • set,Object Inspector:Property WindowState to wsNormal
  • 将代码WindowState := wsMaximized移至inherited Create(aOwner)下方。

代码应该

constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
  Top  := 0;
  Left := 0;
  inherited Create(aOwner);
  WindowState := wsMaximized;
  ....
end;