• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【Delphi】限制窗体大小的最大值与最小值

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

QQ主窗体可以随意拉动,但在拉小时,会在达到某个最小

宽度或高度后无法再拉动,这里有2种方法:

1):使用VCL窗体控件的Constraints子组件,如下设置:

procedure TForm1.FormCreate(Sender: TObject);
begin

    //设置窗体容器高度和宽度大小的最大值和最小值,0表示无限制
    Self.Constraints.MaxHeight := 800;
    Self.Constraints.MaxWidth := 800;
    Self.Constraints.MinHeight := 200;
    Self.Constraints.MinWidth := 200;

end;

上面这种方法有个缺点,就是在鼠标按住窗体左边边沿拉小窗体达到最小值时,窗体会移动,解决办法就是使用下面第二种方法。

2):处理windows消息WM_WINDOWPOSCHANGING

该消息在窗体大小位置正在改变时触发,代码如下:

 

TForm1 = class(TForm)

private
    { Private declarations }
    procedure WndProc(var Msg: TMessage);override;

end;

//重载窗体过程

procedure TForm1.WndProc(var Msg: TMessage);

var
   NewWidth,
   NewHeight: Integer;
begin

  case Msg.Msg of

     WM_WINDOWPOSCHANGING: //正在改变位置或大小
     begin
         NewWidth := PWindowPos(Msg.LParam)^.cx;
         NewHeight:= PWindowPos(Msg.LParam)^.cy;
         if (NewWidth>0) and (NewHeight>0) then
        if (NewWidth<200)or (NewHeight<200)or (NewWidth>800)or (NewHeight >800)   then
         PWindowPos(Msg.LParam)^.flags := SWP_NOSIZE or SWP_NOMOVE;
      end;

   end;

   inherited;  

end;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DelphiAnimateWindow用法淡入淡出窗口发布时间:2022-07-18
下一篇:
DelphiUTF/URL编码/解码UTF8Encode、UTF8Decode、URLEncode、URLDecode发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap