delphi - 错误地最大化MainForm

标签 delphi delphi-10.1-berlin

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

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

窗口确实显示为最大化。

唯一的问题是在Windows 10下,表单试图占据整个屏幕而不是整个工作区。如果表单通过任务栏对用户隐藏了,则这将使情况最糟。在Windows 7下,这可以正常工作。

有没有可能解决此问题的方法?

最佳答案

作为解决方法,您可以将此代码添加到有问题的表单中:

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;

关于delphi - 错误地最大化MainForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824217/

相关文章:

string - Delphi Tokyo 中的 String.Split 有何变化?

delphi - 动态数组长度的32位和64位不同类型?

delphi - 如何定义 TFormatSettings 常量 (Delphi 10)

listview - 如何从 TListView 更改标题的背景颜色?

delphi - 我的 'TCard' 是从哪个组件导出的? (游戏)

c# - 编码普通结构 : does C# copy them onto heap?

delphi - 将信息从一种形式传递到另一种形式?

Delphi:如何获取 TComboBox 组件的句柄?

delphi - 每隔几秒检查一次数据库记录

Delphi 10.1 Firemonkey - 检测组件外部的鼠标单击