• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[Delphi]不用标题栏也移动窗体

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一般情况下,移动一个窗体需要将鼠标放置在标题栏上才能拖动窗体,为 什么非要使用标题栏呢?其实我们可以使用一个巧妙的方法来实现将鼠标放置在窗体上按下就可拖动窗体,下面先看实现代码。

 

在Form1的“Private”部分声明过程:
在private部分加入下列代码:

代码
1procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
2

 

在程序部分加入以下代码:

代码
procedure TForm1.wmnchittest(var msg:twmnchittest);
begin
    
inherited;
    
if (htclient=msg.result) then msg.result:=htcaption;
end;


上面的关键代码虽然只有两行,但它实现了鼠标直接拖动窗体的目的。

 

代码的原理是利用窗体的WM_NCHITTEST消息,这个消息是当光标移动、鼠标按下或释放时发生的,当程序检测到鼠标在窗体中按下的消息后(消息的值为htClient),

将鼠标在标题栏上按下时产生的消息(值为htCaption)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。

 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi黑色背景模式发布时间:2022-07-18
下一篇:
Delphi动态创建控件发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap