不正确地最大化MainForm

时间:2017-01-24 09:14:46

标签: delphi delphi-10.1-berlin

在Delphi中,将表单的WindowState设置为wsMaximized,使其显示为最大化窗口。

我在源代码中看到使用WinAPI调用ShowWindow(HWND, SW_SHOWMAXIMIZED)执行效果。

窗口显示最大化。

唯一的问题是在Windows 10下,表单试图占据整个屏幕而不是整个工作区。如果任务栏对用户隐藏的表单,则会留下底部。在Windows 7下,这可以正常工作。

这个问题是否有可能的解决方法?

1 个答案:

答案 0 :(得分:-1)

作为一种解决方法,您可以将此代码添加到相关表单中:

procedure TfrmMain.FormResize(Sender: TObject);
var
  R: TRect;
  B: TPoint;
begin
  R := BoundsRect;
  if ( R.Top <= 0 ) and ( R.Bottom >= Screen.DesktopHeight ) then begin
    R := Screen.WorkAreaRect;
    B.X := GetSystemMetrics( SM_CXSIZEFRAME  ) - 1;
    B.Y := GetSystemMetrics( SM_CYSIZEFRAME  ) - 1;
    SetBounds( R.Left - B.X, R.Top - B.Y, R.Right - R.Left + B.X * 2, R.Bottom - R.Top + B.Y * 2 );
  end;
end;