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


本文整理自网络,侵删。

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

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_NOSIZEor SWP_NOMOVE;
      end;

   end;

   inherited;  

end;

相关阅读 >>

Delphi tlist性能注意事项

Delphi 复制拷贝文件目录函数

Delphi 内存管理[4]

Delphi qq表情的实现

Delphi判断mssql数据库中表格是否存在? 如何批量创建表格?

Delphi多线程tthread详解

Delphi webbrowser 无法调用当前浏览器的版本

Delphi整理一(基础知识)

Delphi10.2.3解决的一个json问题

Delphi 调用批处理

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...