クライアント領域の子ウィンドウを最大化するための優れたコンポーネントがあります(Shiftキーを押したままにする必要があります)-NLDExtraMDIProps。
または、次のコードを使用できます。
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;
しかし、最大化は実際の最大化ではありません。子ウィンドウは、クライアント領域にのみ配置されます。親ウィンドウのサイズが変更されたときに、自動的にサイズ変更してクライアント領域に合わせる必要があります。システムの最大化/復元ボタンを変更する必要があります。
以下に説明する効果を達成しようとしています。
写真でわかるように、子ウィンドウは最大化され、
親ウィンドウ全体を取得するわけではありません(クライアント領域のみ)。
それらは最大化されているため、キャプション/タイトルバー上に移動することはできません。
最大化ボタンではなく、復元ボタンがあります。
それらはクライアント領域に揃えられます(親ウィンドウのサイズを変更すると、クライアント領域内の子ウィンドウのサイズが変更されます)。
私の質問のコードとコンポーネントは、写真の子ウィンドウのようには機能しません。
ウィンドウを本当に最大化することができますか(整列するだけではありません)?
最大化されていません(良くありません。私の質問のコンポーネントとコードは、これらの写真のように最大化されています):
最大化(私が必要なもの):