文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发DelphiDelphi无标题栏窗口程序设计中鼠标拖动技巧
精品推荐
特别推荐
·利用Delphi编写Socket通信程序
·拦截其它程序的网络数据封包
·Delphi编程根据IP地址得到主机名
·Delphi 程序员代码编写标准指南
·用DELPHI开发自动化服务器
·将日期转化为汉语的形式
·加密ACCESS数据库增加安全性
·使用TCP/IP协议实现聊天程序
·在Delphi中控制扫描仪
热点TOP10
·Delphi中DLL的创建和使用(1)
·用Delphi实现WinSocket高级应用
·利用Delphi编写Socket通信程序
·DBGrid使用全书(三)
·DELPHI多层分布式开发(2)
·实现关键字查找word文档里相匹配的内容
·实现高速文件拷贝
·用Delphi实现动态获取版本信息
·使用TCP/IP协议实现聊天程序
·在Delphi中控制扫描仪
·实现webbrowser中的打印、复制、全选等编辑功能
·拦截其它程序的网络数据封包
·Delphi下的ADO使用方法!
·DELPHI多层分布式开发(1)
·Delphi中利用钩子实现QQ聊天窗口的修改
·Delphi多层开发方案比较
·Delphi下“培养”自己的简单木马
·Delphi数据库控件使用入门
·Delphi的拨号连接类
·在Delphi中实现数据分析模块的动态报表

Delphi无标题栏窗口程序设计中鼠标拖动技巧

日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]


----WINDOWS中窗口的常规移动方法,是用鼠标拖动标题栏来完成,但目前的WINDOWS 程序中,存在很多的无标题栏窗口,这在多媒体流行的时代更是如此,形形色色的媒体播放机大都如此,还有输入法或者即时翻译等程序,其界面只有窄窄的一行, 这样的程序在程序设计阶段必须进行特殊的处理,才能使之具有鼠标拖动功能,本人在DELPHI及VB程序设计中,找到了一种无标题栏窗口鼠标拖动的简单方法, 可广泛应用在类似的程序设计之中。

----基本原理:当无标题栏窗口进行鼠标拖动时,在一个最明显的事实,就是其鼠标在窗口中的坐标始终不变, 所以如果能够在鼠标移动过程中,通过改变窗口在桌面上的坐标,而始终保持鼠标的相对坐标不变,即可实现鼠标的拖动效果;在具体的程序设计中,先在Mousedown() 事件中记录鼠标位置,而在Mousemove()事件中根据鼠标的移动距离,实时修改窗体Form的Top及Left值,即可准确无误的实现窗口的鼠标拖动操作。利用此方法实现鼠标拖动, 与常规的标题栏鼠标拖动在效果上有一点区别,因为标题栏拖动时,鼠标移动过程中不重画窗口,只有松开鼠标后在固定位置重画窗口,所以其速度较快,而采用此方法拖动过程中, 每移动一步都需要重画窗口,对速度稍有影响,在慢一些的机器上会出现轻微的拖尾现象,但绝不会影响正常操作,而在586以上机器上或者高速显示系统下会完全克服这种现象。在实际程序设计时,窗口中可能有多种控件,若想使鼠标拖动窗口中的任何位置都可实现窗口移动, 必须对窗口中的所有控件进行上述的鼠标位置记录与移动处理,即在MouseDown()与MouseMove()事件中加入下面的程序代码,当然与可以在窗口内设置一个专门用于窗口拖动的区域,这样只对此一个控件操作即可。

----演示程序的编制:下面是一个利用DELPHI编制的时间显示程序,编制方法:在窗体内放置一个按钮Button1及一个时间控件Time1,使按钮呈横向矩形,其WIDTH足以显示下日期和时间, 之后在相应的事件中输入以下程序中的代码,程序运行之后,其界面将只有按钮大小的窄窄一条,显示当前的日期和时间,用鼠标拖动窗口的任一部位,都可使窗口随之准确地移动, 在窗体内按下鼠标右键退出程序。

----以上方法及程序在WINDOWS95系统下、DELPHI2.0环境调试通过,经在VB5.0环境下试验, 其效果与此一致。

----附.PAS全部程序代码:

unitformyd;
interface   es
Windows,Messages,SysUtils,Classes,Graphics,
Controls,Forms,Dialogs,StdCtrls,ExtCtrls;
type
TForm1=class(TForm)
Timer1:TTimer;
Button1:TButton;
procedureFormCreate(Sender:TObject);
procedureTimer1Timer(Sender:TObject);
procedureButton1MouseDown(Sender:
TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:Integer);
procedureButton1MouseMove(Sender:
TObject;Shift:TShiftState;X,
Y:Integer);
procedureButton1Click(Sender:TObject);
private{Privatedeclarations}
public{Publicdeclarations}
end;
//定义全程变量
var
Form1:TForm1;
dx,dy:integer;
implementation{$R*.DFM}
//程序初始化
procedureTForm1.FormCreate(Sender:TObject);
begin
form1.borderstyle:=bsnone;
form1.height:=button1.height;
form1.width:=button1.width;
button1.top:=0;
button1.left:=0;
end;
//实时显示当前时间
procedureTForm1.Timer1Timer(Sender:TObject);
var
ds,ts,ps:string;
begin
ds:=DATE:+DateToStr(Date);
ts:=TIME:+timeToStr(time);
ps:=__welcome__;
button1.Caption:=ds+ps+ts;
end;
//记录鼠标当前位置
procedureTForm1.Button1MouseDown(Sender:
TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:Integer);
begin
dx:=X;
dy:=y;
IfShift=[ssright]Then
close;//右键单击退出程序
end;
//根据鼠标移动距离调整窗口位置
procedureTForm1.Button1MouseMove(Sender:
TObject;Shift:TShiftState;X,
Y:Integer);
var
mx,my:integer;
begin
IfShift=[ssleft]Then
begin
mx:=X-dx;
my:=Y-dy;
Form1.Left:=Form1.Left+mx;
Form1.Top:=Form1.Top+my;
Form1.Caption:=intToStr(X)+:+intToStr(Y);

[1] [2] 下一页 




上一篇:Delphi实现下载进程的动态显示

下一篇:Delphi下的ADO使用方法!

Delphi无标题栏窗口程序设计中鼠标拖动技巧 相关文章:
·电脑高手的140个电脑技巧
·《拳皇2002》隐藏超杀出招表 - 技巧心得
·楼梯的上做爱技巧 (图)
·太阁立志传4 攻略及技巧
·新出QQ技巧十六招
·WindowsXP超级技巧
·Vista系统使用技巧总结
·Windows XP的20个超级实用技巧大全
·绝对好用的注册表技巧
·Photoshop十余种漂亮照片边框简单制作技巧
Delphi无标题栏窗口程序设计中鼠标拖动技巧 相关软件:
·招聘面试技巧 视频教程
·C语言程序设计
·中文版Excel 2003实例与技巧
·交际-电话沟通技巧
·摄影技巧与欣赏
·Windows环境下32位汇编语言程序设计
·中文版 AutoCAD2004 应用实例与技巧
·C语言程序设计视频教程 CSF 教材:谭浩强《c程序设计》
·电脑技巧精彩文章一百篇
·Photshop照片润饰技巧

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot