说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

制作可移动的窗体的MovePanel控件-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
制作可移动的窗体的MovePanel控件-Delphi资料

---- 使用Winamp是有个EasyMove的功能,也就是不在标题栏上拖动鼠标就能移动窗体,虽然EasyMove功能很好实现,可还不如做个控件一劳永逸,另外这个控件还有一个更有用的功能,呆会儿就能见到。我们先看看如何实现它吧!

---- 建立一个空的Unit,把以下代码Copy进去,再把它添加到Delphi的控件库里,这样MovePanel控件就做好了。

unit MovePanel;

interface

uses

Windows

Classes

Controls

ExtCtrls;

type

TMovePanel = class(TPanel) //这个控件是继承Tpanel类的

private

PrePoint:TPoint;

Down:Boolean;

{ Private declarations }

protected

{ Protected declarations }

public

constructor Create(AOwner:TComponent);

override;

//重载鼠标事件,抢先处理消息

procedure MouseDown(Button: TMouseButton;

Shift: TShiftState; X

Y: Integer);override;

procedure MouseUp(Button: TMouseButton;

Shift: TShiftState; X

Y: Integer);override;

procedure MouseMove(Shift: TShiftState;

X

Y: Integer);override;

{ Public declarations }

published

{ Published declarations }

end;

procedure Register;

implementation

constructor TMovePanel.Create(AOwner:TComponent);

begin

inherited Create(AOwner); //继承父类的Create方法

end;

procedure TMovePanel.MouseDown(Button:

TMouseButton; Shift: TShiftState; X

Y: Integer);

begin

if (Button=MBLeft) then

begin

Down:=true;

GetCursorPos(PrePoint);

end;

//如果方法已存在,就触发相应事件去调用它,

若不加此语句会造成访存异常

if assigned(OnMouseDown) then

OnMouseDown(self

Button

shift

x

y);

end;

procedure TMovePanel.MouseUp(Button:

TMouseButton; Shift: TShiftState; X

Y: Integer);

begin

if (Button=MBLeft) and Down then

Down:=False;

if assigned(OnMouseUp) then

OnMouseUp(Self

Button

shift

X

y);

end;

procedure TMovePanel.MouseMove(Shift:

TShiftState; X

Y: Integer);

Var

NowPoint:TPoint;

begin

if down then

begin

GetCursorPos(nowPoint);

//self.Parent在Form中就是MovePanel所在的窗体,

或是MovePanel所在的容器像Panel

self.Parent.Left:=self.Parent.left

+NowPoint.x-PrePoint.x;

self.parent.Top:=self.Parent.Top

+NowPoint.y-PrePoint.y;

PrePoint:=NowPoint;

end;

if Assigned(OnMouseMove) then

OnMouseMove(self

Shift

X

y);

end;

procedure Register;

begin

RegisterComponents('Md3'

[TMovePanel]);

end;

end.

---- 接下来,看看怎么用它吧。

---- 用法一:拖一个Form下来,加上我们的MovePanel,Align属性设为alClient,运行一下,移动窗体的效果还不错吧!想取消此功能,把MovePanel的Enabled属性设为False即可,简单吧!

---- 用法二:拖一个Form下来,加上普通的Panel,调整好大小,再在Panel上加上我们的MovePanel

Align属性设为alClient,运行一下,这一次在我们拖动MovePanel时不是窗体在移动,而是Panel和MovePanel一起在窗体上移动,如果我们再把其他的控件放在MovePanel上,就成了可以在窗体上任意移动的控件了,就这么简单!

【问底】Yao Yu:谈Twitter的百TB级Redis缓存实践 “OKCoin与你·北京一夜”:共商比特币可持续繁荣之道 苹果再发力:推Apple Pay,或将引发新一轮支付变革 CausalImpact,谷歌开源的R时域因果关系分析工具 腾讯云总裁陈磊:互联网和传统企业互联网化是主线 不得不看,苹果Pay技术大起底! 详解Apple Pay:一大波iOS原生应用正在逼近! 高性能微信公众平台开发 【先锋】事务、高性能,王涛谈打造超越MongoDB的NoSQL 浅谈互联网数据中心海量运营之道 一篇文章读懂开源web引擎Crosswalk Facebook创建新开源组织TODO,Google、Twitter等继续捧场 微软明日将启动第二轮裁员 涉及所有的事业部 IBM推出Watson Analytics 将人机对话带进企业决策 参与2014中国移动开发者大调查 MDCC门票等你拿 手游开发经验谈:付费体系决定游戏收成好与坏? 惠普推出全新ProLiant Gen9服务器 腾讯安全出杀手锏 搭建全国最大Wi-Fi开放平台帮助网友免费蹭网 云与数据安全实践尽在ISC 2014(免费门票) 开源的对决,MapR将Apache Drill引入企业应用 令程序员费解的10个语言特性 走进雅虎北京全球研发中心:五年光阴缔造雅虎全球创新引擎 超强集成游戏编辑器!开源跨平台引擎Wave 求别再侵犯儿童隐私!FTC狠罚Yelp和TinyCo 华为应用市场助力开发者 软硬结合造就强大生态系统 【CTO俱乐部看板研修班北京站现场速递】看板方法:渐进变革的过程 《近匠》不背单词,用“沉浸”征服英语学习 ETpl——强复用、灵活、高性能的JavaScript模板引擎 MDCC 2014大会日程概览发布 最新嘉宾议题揭秘 终于来了,微信企业号正式开启公测! 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究 高分求购经典旧书配本源码 《Windows编程指南》,清华出版社,成功后立马送分 关于百度插件问题 怎样用Request.QueryString("k")的值和select pass from c while pass=44的结果比较 关于在QR中横向打印的问题........... 为什么有的网站明明是用了数据库,但是网页文件却是.html的? 如何实现数据库中的图片存储 select ???? 这怎解决啊,Help!!!! 如何将结构相同的两表的数据合并? 建立一个简单的网上直播服务器需要那些步骤? 请教一个关于属性页的问题 可以这样查询吗 ?请问怎么出现设置目录的对话框,并且把路径保存edit中!!急急急急急急急(lxjgyl82) 关于监考管理 怎么通过ado动态的连接数据库 web服务器控件和html服务器控件有什么区别 合肥工業大學爆发學潮 Java程序监听数据库的操作 串口 对DBNavigator组件的操作,请大家帮忙 怎么看历史短消息啊?原来有的怎么看啊? 一个sql的意义! 我在程序启动时所出现的封面如果关闭程序? vc环境下如何外部调用exe可执行文件?最好给个例子。 校园性喻 (转自罗斯文) 大放分,我加三角(可惜总分也就10分,全给了~~~)——> 拨号服务器问题,这样怎么不能实现代理上网???立即给分相谢!!! 在QR中横向打印的问题.................. 我们的出路在哪里? 简单数组问题 教我做一个课程设计,关于数据结构的。 win2000+php+mysql+iis用什么函数删除文件 如何实现CSDN论坛中的“我参与的贴子”的功能 卖身!!可怜可怜,看值多少? 好郁闷! 两个小游戏,加一起还不到40K 急!!在MDI中ChildView类是自动生成的吗?还是要自己手动加入呢。 求助!!系统里的installshield 坏了怎么办啊! 谁能给在下解释下面的语句:#pragma warning(disable:4786)? 关于文本扫描替换的问题: 急!!在MDI中ChildView类是自动生成的吗?还是要自己手动加入呢。 请教两个问题。。。。 急急急急急急1 swing用的多吗?交流一下学习java的经验!! 请教大家软件文档的写法 C++ Primer 中文版 apache只能读.php而不能读取.php3文件,怎么搞定? 关于ICMP 怎样在xml架构上确定多个primary keys? 此头文件“afxext.h”做何用? 什么样的人能做程序员,我可以么? 浙江吨位最大海巡船列编海事局 构筑安东阳两姐妹被残忍杀害 尸体装皮箱浇筑冷空气来袭 宁波降雨基本告别高温天超市收银女被捅 现场民警未出手制止(警惕染色枸杞 长期食用伤肝伤肾女孩签30万助学协议 未如期考上美院小偷偷到手机发现有密码 回去索要钱财杭州明天气温反弹到35℃ 第二波冷空金华35岁已婚男假装23岁单身小伙性杭州西溪路玉古路口昨晨淹水 因老水管杭州商教苑小区大妈用藤椅占车位 自称马云加入UC董事会 旨在互抬身价实现浙江公布10大网络造谣案 已有两人因终身学籍号启用 中小学生拥有唯一学籍宁波市规定幼儿园只能收取保教费和服务公交司机连撞16车被刑拘 27人受伤宁波九院正式成为市第一医院江北分院余杭一批事业单位周四起招聘89人光大总裁辞职 压力说经验短板说众说纷杭州新初一语文课本有调整 一些老师觉孙杨回归朱志根门下 录制好声音推迟一奔跑吧,主编 | 那些离职创业的主编马云摊上大事了!阿里在美遭欺诈调查,不知天之将黑,不知老之将至不再妄下评判,2015年你能做到吗?北京喜剧院,欢喜开张!第7讲:产业地产定位、招商和运营心得这是世上最伟大的败家爷们,没有之一亮瞎了!奶茶妹妹与刘强东已结婚家用咖啡机哪家强?荐号|在资讯=金钱的时代,你该看些什IT八卦 | BAT的“离职圈”生意电子游戏装逼指南1.0不用讨好别人也能受欢迎的小心机揭开面纱,荣耀4A神秘新品21号发布易到要造车?“只用不卖”的共享汽车所以说,什么罩杯的姑娘都有烦恼分享 | 迅速提升个人品味的微信你都不知道苍井空有多好!想升总监?算算看有多远千股涨停到千股跌停一日之隔当印度阅兵遇上北京,印度哭了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘