原创 在Delphi中限制窗体大小

2008-12-31 20:53 5611 10 10 分类: 软件与OS

 


Delphi中可以限制窗体或者元件的大小,只要指定它的Constraints属性即可(默认是0,就是不限制)。但是Delphi这个属性有个很大的缺陷,比如从上往下调整,达到最小后,窗体高度虽然不会缩小了,但是窗体会继续往下移动,这样看起来会有些不正常(Delphi自己的窗体没有这个现象)。要解决这个问题,还是只有截取windows的消息,自己进行处理。

const
  MinWidth = 500
;
  MinHeight = 400
;

procedure WMSIZING(var Msg: TMessage); message WM_SIZING
;

procedure TfrmMain.WMSIZING(var Msg: TMessage
);
begin
  Msg.Result := 1
;

  
//限制最小高度
  if (PRect(Msg.LPARAM)^.Bottom - PRect(Msg.LPARAM)^.Top) < MinHeight then
  begin
    if PRect(Msg.LPARAM)^.Top = Top then
      PRect(Msg.LPARAM)^.Bottom := PRect(Msg.LPARAM)^.Top + MinHeight
    
else
      PRect(Msg.LPARAM)^.Top := PRect(Msg.LPARAM)^.Bottom - MinHeight
;
  end
;

  
//限制最小宽度
  if (PRect(Msg.LPARAM)^.Right - PRect(Msg.LPARAM)^.Left) < MinWidth then
  begin
    if PRect(Msg.LPARAM)^.Left = Left then
      PRect(Msg.LPARAM)^.Right := PRect(Msg.LPARAM)^.Left + MinWidth
    
else
      PRect(Msg.LPARAM)^.Left := PRect(Msg.LPARAM)^.Right - MinWidth
;
  end
;
end;


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条