Есть хороший компонент для максимизации дочернего окна в клиентской области (необходимо удерживать клавишу 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;
Но максимизация не является реальной максимизацией. Дочернее окно выравнивается только по клиентской области. Он должен автоматически изменять размер и соответствовать клиентской области, когда изменяется родительское окно, должна изменяться системная кнопка максимизации / восстановления и т. Д.
Я пытаюсь выполнить эффекты, описанные ниже.
Как видно на рисунках, дочерние окна развернуты, а
1) они не занимают все родительское окно ( только клиентская область ).
2) невозможно переместить над заголовком / строкой заголовка, потому что они развернуты.
3) У них есть кнопка восстановления , больше не кнопка увеличения.
4) Они выровнены по клиентской области (изменение размера родительского окна приводит к изменению размера дочернего окна в пределах клиентской области).
Код в моем вопросе и компонент не похожи на дочерние окна на изображениях.
Можем ли мы сделать окно максимально развернутым (не только выровненным)?
Не максимизировано (не хорошо; компонент и код из моего вопроса максимизируются, как на этих рисунках):
Максимально (что мне нужно):