当前位置:  开发笔记 > 编程语言 > 正文

在delphi中最大化形式的正确方法(无标题)

如何解决《在delphi中最大化形式的正确方法(无标题)》经验,为你挑选了1个好方法。

我有一个没有标题的表单,使用双击最大化:代码如下所示:

procedure xxxxxx; 
begin
    if Form1.WindowState=wsNormal then
       begin
        Form1.WindowState:=wsMaximized;
        Form1.SetBounds(0,0,screen.Width,screen.Height-getHeightOfTaskBar);
       end
       else
       begin
         Form1.WindowState:=wsNormal;
       end;

       ShowTrayWindow;
end;
function getHeightOfTaskBar : integer;
var hTaskBar:HWND;
    rect : TRect;
begin
     hTaskbar := FindWindow('Shell_TrayWnd', Nil );
     if hTaskBar<>0 then
        GetWindowRect(hTaskBar, rect);

     Result:=rect.bottom - rect.top;
end;

这很好,除了我必须找出任务栏重置SetBounds的位置...

这样做的正确方法是什么?

谢谢.



1> CodeAndCats..:

听起来不错,但就像Drejc指出的那样,任务栏可以出现在任何地方,因此Google桌面,Winamp等其他对接侧边栏也可以出现.

而是使用像Screen.WorkAreaRect这样的东西来获取屏幕的客户区域.例如

with Screen.WorkAreaRect do
  Form1.SetBounds(Left, Top, Right - Left, Bottom - Top);


很好,但这只适用于主显示器.要在当前监视器上最大化它,您需要执行以下操作:使用Screen.MonitorFromWindow(Form1.Handle).WorkAreaRect执行Form1.SetBounds(左,上,右 - 左,下 - 上);
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有