我有一个MDI子表单,在打开时不会立即最大化。 我可以看到它上面的数据网格被创建,然后表单被最大化
我使用以下构造函数来创建表单。
Properties:
FormStyle = fsMDIChild
Position = poDefaultPosOnly
WindowState = wsMaximized
constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
WindowState := wsMaximized;
inherited Create(aOwner);
TimerDelay.Enabled := True;
end;
问题是视觉问题可以说 - 一切都按预期运作。在最大化之前显示表单看起来是错误的。真正可能很棒的是有一个AfterShow活动。我想在这种情况下这对我有帮助。
答案 0 :(得分:2)
MDIChild弹出窗口带有一点动画。
如果MDIChild.Position设置为
在创建
时计算顶部和左侧假设Top
= 300且Left
= 400现在
at on Show
MDIChild现在是MDIParent的一部分,所以
Top
= 300且Left
= 400现在位于MDIParent内。
表示MDIChild
的左上角现在位于MDIParent
形式的中间位置。
wsMaximized
的动画从右上角到左上角显示。
现在使用位置
并且将Top和Left设置为0
,将不再显示动画。
constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
Top := 0;
Left := 0;
WindowState := wsMaximized;
inherited Create(aOwner);
....
end;
在设计模式下,选择frmJsContacts
时,请查看对象检查器。
WindowState
设置为wsMaximized
您可以在短时间内看到整个表单!
如果更改如下,可以在短时间内看到仅标题栏,而不是整体表单。
WindowState
to wsNormal
。WindowState := wsMaximized
移至inherited Create(aOwner)
下方。代码应该
constructor TfrmJsContacts.Create(aOwner: TComponent);
begin
Top := 0;
Left := 0;
inherited Create(aOwner);
WindowState := wsMaximized;
....
end;