在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/