2015-05-19 22 views
1

我有一個MDI子窗體,當打開時不能一次最大化。 我可以看到它上面的數據網格被創建,然後窗體被最大化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

你爲什麼不等到形式展示,最大化,然後花時間做網格數據獲取? –

+0

當定時器耗盡時,所有的數據首先被提取,所以它不應該成爲問題。但我會用更大的timerinterval進行測試。 – OZ8HP

+0

在這種情況下,我不明白你的問題。也許別人會。或者,也許這個問題可以澄清。 –

回答

2

MDIChild彈出窗口帶有一點動畫。

如果MDIChild.Position設置爲

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

上和左創造

計算

假設Top = 300和Left =現在

400在on Show MDIChild現在和Left的MdiParent的一部分,所以

Top = 300 = 400,現在裏面的MdiParent。

表示左上角MDIChild現在處於中間MDIParent的形式。

wsMaximized動畫顯示爲從右中間到左上角。

現在使用的位置

  • poDesigned
  • poDefault

,並與頂部和左側設置爲0動畫將不會再被看到。

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

在設計模式時,選擇frmJsContacts,去看看在Object Inspector。

  • 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; 
+0

謝謝 - 現在好多了 – OZ8HP

+0

@ OZ8HP:很高興幫助。 ;-) –