zoukankan      html  css  js  c++  java
  • 【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_NOSIZE or SWP_NOMOVE;
          end;

       end;

       inherited;  

    end;

  • 相关阅读:
    javascrpt each map
    实现strcmp非常easy的思维
    POJ1300(欧拉回路)
    採用Android中的httpclient框架发送post请求
    蓝桥杯 带分数
    C++第11周(春)项目1
    每天一点儿JAVA-向量的操作
    js回车事件
    WebService(2)-XML系列之Java和Xml之间相互转换
    Android下的单元測试
  • 原文地址:https://www.cnblogs.com/caibirdy1985/p/4232959.html
Copyright © 2011-2022 走看看