知识大全 如何使用Delphi实现无边界窗体的移动
Posted 消息
篇首语:知识就像内裤,看不见但很重要。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何使用Delphi实现无边界窗体的移动相关的知识,希望对你有一定的参考价值。
如何使用Delphi实现无边界窗体的移动 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在用Delphi制作Windows程序的窗体时 窗体的边界有四种选择 对话框式(bsDialog) 单边固定式(bsSingle) 双边可变式(bsSizeable) 无边界式(bsNone) 当设置为bsNone时 窗体也就没有标题条 很显然 程序运行以后就无法移动窗体了 事实上 无边界窗体是很有用的 例如 象Word里面的浮动式工具箱其实就是无边界窗体 它可以大大节约屏幕空间 那么 如何用Delphi实现这个功能呢?显然 这需要修改Windows的内部消息 也就是说 需要把 MouseDownonForm 这个消息改为 MouseDownonCaption 这其中有三个关键 捕捉MouseDown消息 判断光标位置 发送MouseDown消息 如果光标在窗体中 则发送MouseDownonCaption消息 在Delphi的对象巡检器中列出的所有事件是不能捕捉到Windows消息的 因为这些都是已经发出的消息 无法修改了 捕捉Windows消息有两种办法 一个就是增加一个消息处理句柄 直接处理Windows消息 另一个是对消息进行过滤 滤出所需消息 第二个办法比较常用 适用于各种情况 下面就是移动无边界窗体程序片断 加注释部分是手动加入的
unitUnit
type
TForm Κclass(TForm)
procedureFormCreate(Sender TObject)
public
{申明消息过滤过程}
procedureAppMessage(varmsg TMsg varHandled Boolean)
implementation
procedureTForm .FormCreate(Sender TObject)
begin
{捕捉消息 将程序的收到消息事件与消息过滤过程 关联起来}
Application.OnMessage ΚAppMessage
end
procedureTForm .AppMessage(varmsg TMsg var Handled Boolean)
begin
{如果鼠标左键按下的话}
ifMsg.messageΚWM—LButtonDownthen
begin
{判断光标是否在用户工作区内}
ifDefWindowProc(Handle WM—NCHitTest Get MessagePos)ΚHTClientthen
begin
{发出鼠标在用户标题栏内被按下的消息}
SendMessage(Handle WM—NCLButtonDown
HTCaption GetMessagePos)
Handled Κtrue {消息处理完毕 窗体不再接受M ouseDown及Click事件 如果为false 程序的运行稍微有 些不正常 }
end
end
cha138/Article/program/Delphi/201311/24682相关参考
以下程序将教你如何制作一个窗体窗体一旦运行将在屏幕上不断抖动cha138/Article/program/Delphi/201311/8406
巧妙用Delphi设计多边形窗体 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文将介绍如何利用W
在Delphi中巧改窗体文件实现控件数组化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
自定义事件实现不同窗体间的通讯Delphi篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!要实现子
C#中实现文字在窗体中从左到右移动 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序开发步骤
有很多软件为了实现特殊的显示效果采用非矩形的窗体而这些窗体往往没有标题栏想要移动一个没有标题栏的窗口是不那么容易的下面我介绍两种在VB中采取不同原理的方法移动一个没有标题栏的窗口 方法一 这种
VB.NET拖动无边框窗体编程实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Impor
privateboolisMouseDown=false; privatePointFormLocation; //form的location p
——此文章摘自《Delphi开发经验技巧宝典》定价¥ 特价¥购买>>//tracklinktechcn/?m_id=dangdang&
——此文章摘自《Delphi数据库开发经典案例解析》定价¥ 特价¥ 购买>> ()新建一个窗体将窗体的Name属性设置为TotalAcco