Использование Delphi 12.1 Афины:
alTopNewBtn.OnClick к каждому компоненту и добавьте код, показанный ниже.NewBtn, чтобы создать одну или несколько дочерних форм.Это было признано дефектом, но я не получил никаких советов по обходному пути. Я думал, что могу просто изменить размер главного окна, и это работает, если только окно не развернуто на максимум, что делают многие мои пользователи. Я попробовал просто вызвать метод Resize(), но это не дало никакого эффекта. Я попытался отследить код VCL, но не смог найти ничего, что имело бы для меня смысл.
object MainForm: TMainForm
Left = 194
Top = 111
Caption = 'MDI Application'
ClientHeight = 535
ClientWidth = 610
Color = clAppWorkSpace
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Default'
Font.Style = []
FormStyle = fsMDIForm
VisualManager = FormTabsBar1
Position = poDefault
TextHeight = 13
object StatusBar: TStatusBar
Left = 0
Top = 516
Width = 610
Height = 19
Margins.Left = 2
Margins.Top = 2
Margins.Right = 2
Margins.Bottom = 2
AutoHint = True
Panels = <>
SimplePanel = True
end
object FormTabsBar1: TFormTabsBar
Left = 0
Top = 486
Width = 610
Height = 30
Align = alBottom
ParentColor = False
TabOptions.ShowFormIcon = True
TabOptions.ShowFormSystemMenu = True
TabOptions.ShowCloseButton = True
TabOptions.ShowHintForTruncatedCaption = True
TabMinWidth = 100
TabMaxWidth = 250
Visible = False
ShowTabsMenuButton = True
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 610
Height = 97
Align = alTop
Caption = 'Panel1'
TabOrder = 2
OnClick = Panel1Click
object NewBtn: TButton
Left = 20
Top = 28
Width = 75
Height = 25
Caption = 'NewBtn'
TabOrder = 0
OnClick = NewBtnClick
end
end
object OpenDialog: TOpenDialog
Filter = 'All files (*.*)|*.*'
Left = 16
Top = 272
end
... Image data removed...
end
procedure TMainForm.Panel1Click(Sender: TObject);
begin
if Panel1.Height > 100 then
Panel1.Height := Panel1.Height - 20
else
Panel1.Height := Panel1.Height + 20;
end;
procedure TMainForm.NewBtnClick(Sender: TObject);
begin
FileNew1Execute(nil);
end;





Вы можете использовать этот обходной путь внутри обработчика событий Panel1Click и включить Vcl.Themes в список использования:
SendMessage(Handle, WM_MDICHILDMOVE, 0, 0);
Работает как шарм!