菜鸟把窗体的borderstyle属性改成none后,就不能使用拖动的方法来改变这个窗体的大小了,请问高手怎么办啊???(60分)

  • 主题发起人 主题发起人 wanglong
  • 开始时间 开始时间
W

wanglong

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟把窗体的borderstyle属性改成none后,就不能使用拖动的方法来改变这个窗体的大小了,请问高手怎么办啊??
 
private
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;

implementation

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
var
P: TPoint;
begin
inherited;
with Msg do
begin
P.X := Pos.x;
P.Y := Pos.y;
P := ScreenToClient(P);
if P.X = 0 then
begin
if P.Y = 0 then
Result := HTTOPLEFT
else if P.Y = ClientHeight - 1 then
Result := HTBOTTOMLEFT
else
Result := HTLEFT;
end
else if P.X = ClientWidth - 1 then
begin
if P.Y = 0 then
Result := HTTOPRIGHT
else if P.Y = ClientHeight - 1 then
Result := HTBOTTOMRIGHT
else
Result := HTRIGHT;
end
else begin
if P.Y = 0 then
Result := HTTOP
else if P.Y = ClientHeight - 1 then
Result := HTBOTTOM;
end;
end;
end;
 
谢谢高手,但菜鸟把一个panel放进去,然后设置他的align属性为bottom后,就不能拖动这个窗体的右下角了,怎么解决呢??
 
因为窗体没有Border,你设置Panel为alBottom后就把窗体的下部给覆盖了,当鼠标置于下部时获取消息的就是Panel。

先放一个Panel,设置
Panel.Left := 1; //给窗体左边留一象素
Panel.Top := 1; //给窗体上边留一象素
Panel.Width := Form.ClientWidth - 2; //给窗体右边留一象素
Panel.Heigth := Form.ClientHeight - 2; //给窗体下边留一象素
Panel.Anchors := [akLeft, akTop, akRight, akBottom]; //使Panel跟Form一起缩放
以上这些均可在设计时设置,
之后把所有其它控件都放在Panel上就行了。

我想应该有其它更好的办法,不过目前我只能这样解决。
 
后退
顶部