您的位置:首页 > 编程语言 > Delphi

delphi中直接拖动窗体,不用点标题栏

2008-05-21 13:11 316 查看
1.  一般情况下,移动一个窗体需要将鼠标放置在标题栏上才能拖动窗体,为 什么非要使用标题栏呢?其实我们可以使用一个巧妙的方法来实现将鼠标放置 在窗体上按下就可拖动窗体,下面先看实现代码。在Form1的“Private”部分声明过程:

在private部分加入下列代码:

1procedure wmnchittest(var msg:twmnchittest);

2message wm_nchittest;
在程序部分加入以下代码:

1procedure TForm1.wmnchittest(var msg:twmnchittest);

2begin

3inherited;

4if (htclient=msg.result) then msg.result:=htcaption;

5end;
  上面的关键代码虽然只有两行,但它实现了鼠标直接拖动窗体的目的。代码的原理是利用窗体的WM_NCHITTEST消息,这个消息是当光标移动、鼠标按下或释放时发生的,当程序检测到鼠标在窗体中按下的消息后(消息的值为htClient),将鼠标在标题栏上按下时产生的消息(值为htCaption)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。

1procedure TForm1.OnMouseDown(Sender: TObject; Button: TMouseButton;

2 Shift: TShiftState; X, Y: Integer);

3begin

4 if button=mbleft then

5 begin

6 ReleaseCapture;

7 Form1.Perform (WM_syscommand,$f012,0);

8 end;

9end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐