`
paulfzm
  • 浏览: 874949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

delphi实现拖动无标题窗口的5种方法

 
阅读更多

1.MouseMove事件中加入:

// ReleaseCapture;
// Perform(WM_SYSCOMMAND, $F017 , 0); 

2.MouseDown事件中加入:

// POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);
// POSTMESSAGE(Self.Handle,274,61458,0); 

3.MouseDown事件中加入:

// ReleaseCapture;
// Perform(WM_SYSCOMMAND, $F012, 0); 

4.截获WM_NCHITTEST消息

procedure WMNCHITTEST(var Msg:TWMNCHITTEST);message WM_NCHITTEST; 

procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);
begin
inherited;
//Msg.Result:=HTCaption;
end; 

5.

private
procedure AppMessage(var Msg:TMsg;var Handled:Boolean); 

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AppMessage;
end; 

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
//(GetKeyState(vk_CONTROL) < 0)
if (Msg.message=WM_LButtonDown) and
(DefWindowProc(Handle,WM_NCHitTest,
0,GetMessagePos)=HTClient) and
(True) then
begin
SendMessage(Handle,WM_NCLButtonDown,
HTCaption,GetMessagePos);
//发送鼠标在标题栏内按下的消息
Handled:=true;
end;
end;



在MousDown事件中写
ReleaseCapture;//释放鼠标控制区域
SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+HTCaption,0);//发送移动标题栏消息
如,要在Panel上可以移动窗口
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+HTCaption,0);
end; 

分享到:
评论

相关推荐

    delphi无标题栏窗口的拖动

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

    不用标题栏就可实现Delphi窗口拖动..rar

    不用标题栏就可实现Delphi窗口拖动..rar

    Delphi实现拖动按钮移动无标题栏窗口

    Delphi添加一个可拖动窗体的按钮,通过对此按钮的控制可移动窗体,实现按住标题栏移动窗口的功能,无标题栏也就不能显示最大化、最小化和关闭窗口的功能,因此本程序自定义了一个关闭窗口的方法,那就是长按ESC键可...

    不按住标题栏实现的窗口拖动效果-Delphi.rar

    Delphi实现个性的窗口拖动功能,不按住标题栏实现的窗口拖动效果,因为一般情况下,都是按住窗口的标题栏才能拖动窗口,本实例代码将演示不按标题栏也可拖动窗口移动位置。if (htclient=msg.result) then msg.result...

    Delphi无标题栏窗体拖动的方法 源码例子.rar

    Delphi实现无标题栏窗体拖动的方法 源码例子,把默认标题栏去掉,美化出另外一种标题栏效果,扁平化的窗口风格,并实现窗体的拖动缩放控制,拉大拉小,最小化到任务栏等操作的实现演示。

    Delphi窗口编程:如何让窗口不可拖动位置.rar

    Delphi窗口编程实例:如何让窗口不可拖动位置,即使鼠标按在标题栏上,也不能拖动窗口,窗口变得不可移动,打开时在什么位置 ,就始终保持在某位置,实现此功能的关键代码部分:  Msg.WindowPos.x := Left;  //...

    delphi 无标题窗体加边框可拖拽调整大小及移动窗体

    delphi无标题窗体(borderstyle=bsnone)默认没有边框,无法移动,也无法拖拽必变窗体大小,本资源为无标题窗体加边框并可拖拽调整大小以及移动窗体位置。

    拖动没有标题栏的窗口

    拖动没有标题栏的窗口时,只绘制窗口边框,而不绘制窗口内容的Demo。

    Delphi 无边框窗口的实现

    使用Delphi源码实现一个无边框窗口,把标题栏去掉了,同时也去掉了标题栏上的最大化、最小化和关闭按钮,测试发现,这个无标题栏无边框的窗体不能拖动,要是能拖动就更好了。 运行环境:Windows/Delphi7

    Delphi编程技巧.rar

    不规则窗口的建立(字体窗体) 在Delphi中自动检测、建立数据库别名和表格 用Delphi制作留言板 用DEPHI 3.0实现动画ABOUT窗口 在DELPHI中处理时间 ...用Delphi实现无边界窗体的移动 Delphi函数参考手册

    DELPHI专题文档-程序应用

    在Delphi应用程序中拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi经验技巧集锦 Microsoft Agent技术在Delphi中的应用 怎样建立简单的任务栏应用程序 ...

    DELPHI专题--程序应用

    在Delphi应用程序中拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi经验技巧集锦 Microsoft Agent技术在Delphi中的应用 怎样建立简单的任务栏应用程序 ...

    Delphi 用无边框窗体自定义标题栏的实现

    标题栏以Panel模拟,实现标题栏拖动、双击最大化、边框拖拉等效果

    隐藏标题栏,窗口拖动

    本代码介绍了如何隐藏标题栏,如何窗体中非标题栏区域拖动窗体

    delphi个性化皮肤及换肤

    用Delphi做的一个简单的换肤功能,可以支持无标题窗口的拖动

    Delphi开发技巧之-Forms

    实现窗口的最小化动画效果 将InputQuery定位在窗体居中位置 怪异窗体 手动改变窗体比例 抓屏 拖拽时显示窗口内容 捕获主窗体WM_MOVE消息 改变Hint字体 改变Hint的显示时间 改变MessageDlg的按钮标题 最小化控件 最小...

    Delphi 7 新概念百例

    《Delphi 7 新概念百例》是一本通过讲解Delphi实例,来说明使用Delphi编程时通常采用的编程思路以及具体方法的计算机书籍。通过对每个实例从编程思路和代码实现的详细分析和讲解,力求带领读者快速地提高自己的程序...

    源码合集之12套Forms

    Delphi5评述:一个很简单的程序,实现窗口的渐变FormatA.zipFormat适用于:Delphi5评述:调用格式化对话框GetTitlemsg.zipGetTitlemsg适用于:Delphi5评述:得到本窗口的标题栏信息Neoform.zipNeoform适用于:Delphi...

    Delphi开发范例宝典目录

    实例038 没有标题栏但可以改变大小的窗口 48 1.11 设置窗体位置 49 实例039 不可移动的窗体 49 实例040 设置窗体在屏幕中的位置 50 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制...

    Delphi开发技巧之-VCL

    使用CustomSort方法排序TListView 使用DBGrid字段队列同步列标题队列 使用Interfaces和TInterfaceList 使用TRichEdit存储大于64K数据 使用代码移动StringGrid的行和列 使用圆形角显示控件 使用类名显示窗体 保存 ...

Global site tag (gtag.js) - Google Analytics