有一個很好的組件可以最大化客戶區(必須保持SHIFT鍵)的子窗口- NLDExtraMDIProps。Delphi:最大化MDI項目中的子窗口
或者可以使用此代碼:
procedure WMSIZE(var Msg: TMessage); message WM_SIZE;
procedure TForm2.WMSIZE(var Msg: TMessage);
begin
inherited;
if Msg.WParam = SIZE_MAXIMIZED then
begin
ShowWindow(Handle, SW_RESTORE);
Left := 0;
Top := 0;
Width := Form1.ClientWidth - 4; // The BORDER
Height := Form1.ClientHeight - 4;
end;
end;
但最大化是不是真實的最大化。子窗口僅與客戶區域對齊。當父窗口調整大小時,它必須自動調整大小並適合客戶區域,最大化/恢復系統按鈕必須改變等。
我嘗試完成下面描述的效果。
正如你所看到的子窗口最大化的照片,並
1)他們不走整個父窗口(只有客戶區)。
2)它的不可能移動它們在標題欄/標題欄上,因爲它們是最大化的。
3)他們有還原按鈕,而不是最大化按鈕。
4)它們是對齊到客戶區域(調整父窗口的大小導致孩子與客戶區域的大小)。
我的問題和組件的代碼不像圖片上的子窗口。
我們可以讓一個窗口真正最大化(不只是對齊)嗎?
沒有最大化(不好;組件,並從我的問題的代碼最大限度地喜歡上這些照片):
最大化(我需要什麼):
嗨!NGLN!請在我的問題中查看圖片的區別。子窗口最大化,並且不佔用整個主窗口(僅客戶區域)。移動它們是不可能的,因爲它們是最大化的。他們有恢復按鈕,而不是最大化按鈕。它們與客戶區域對齊(調整父窗口的大小會導致調整客戶區域的子區域)。我的問題和你的組件的代碼不會複製圖片上的子窗口的行爲。 – maxfax 2012-02-27 04:25:41
第一張照片是你的組件和我的問題中的代碼(相同的效果)。最後2 - 如何必須。 – maxfax 2012-02-27 04:35:11
我仍然不明白你的問題。如果你做得很好(爲主表單設置'FormStyle = fsMDIForm',爲子表單設置'FormStyle = fsMDIChild'),那麼還有其他問題。 – NGLN 2012-02-27 04:42:30