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

制作可移动的窗体的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上,就成了可以在窗体上任意移动的控件了,就这么简单!

[TUP第31期]《浪潮之巅》吴军:硅谷3.0助力中国企业走向国际 SequoiaDB创始人:比MongoDB领先一到两年 打造企业级NoSQL数据库 [对话CTO]甲骨文熊光樑:全球研发模式开发出接地气产品 GitHub中国游记之长城——跨越那堵看不见的墙 IE11开发人员工具:UI响应工具详解 2013 Linux领域年终盘点 腾讯云俱乐部深圳站成功落幕 开创移动开发新篇章 解读云计算、大数据、物联网等九大IT技术发展趋势 苹果已证实收购Topsy或将涉足社交领域 触摸未来:Tactus微流体技术2014年来袭 Windows的未来:一个核心 多个版本 Github项目中使用率最高的Java/Ruby/JS库 2013中国大数据技术大会盛大开幕 从黑色星期五找到的六个规则 帮助网站转化 移动开发者的自学宝典:十大在线编程学习网站 MIT新技术:远程触摸和操纵实物 创新人机交互 中国移动研究院业务支撑研究所所长孙少陵:大数据实时处理技术发展趋势及中国移动实践和展望 “第一届中国大数据技术创新与创业大赛”主办方发言及创新分赛颁奖 中国移动研究院业务支撑研究所所长孙少陵:大会及与会嘉宾介绍 中国工程院院士、大数据专家委员会主任李国杰:能挖掘出价值的数据就是好数据 阿里飞天平台总架构师唐洪:飞天开放平台 百度大数据首席架构师林仕鼎:新计算时代 金山发布全系列IaaS平台 Google无人驾驶汽车与机器人组合,秒杀无人机 Google欲推新Chrome应用:适用于Android、iOS平台 comScore:美国市场苹果手机独占鳌头 Android和iOS双寡头垄断 一周消息树:新技术实现远程触摸和操纵实物 创新人机交互 研发周报:帮助网站转换的六大黑色星期五规则 【开源专访】JFinal作者詹波:以极简方式实现Web项目的极速开发 2013中国智能交通与大数据技术峰会:迎接交通大数据新时代 大数据应用技术(上):加速创新,重塑世界 大家帮忙看看为什么这段代码不工作? ████ 这个帖子骂人,请斑竹秉公处理!!!!!!!████ 怎么样让时间加一个差值; 在另一个类中,怎样给Radio或Combobox赋值 ~~~~向各位高人请教三层线程模型,分可以另开贴加。 new出来的idicmpclient的onreply事件怎么响应? 那位大虾帮我看一下这断代码(JSP高分请教) 帮帮忙啦,哪位同志用过mscomm控件做点对点拨号通讯的 AspRunner是个不错的辅助编写ASP页面的工具,请问哪里有破解下载的啊?谢谢了! 在vc#中如何删除目录下的所有文件? 急 关于分级菜单 求救,如何在注册表中得到一个硬件设备(如猫)的驱动文件名称? 一个难题,希望高手能解决,急切等待! 关于网络状况测试的问题 新手上路,问一个很初级的问题,呵呵。。。 请问如何实现在同一个窗口中的自动跳转? 为什么不能调用类? 关于SQL语句求助 如何在asp和asp.net里面共享信息 溢出错误,麻烦来看看! 知道汉字的国标(gb?)码值,如何显示汉子,急求救!!!! 在SQL2000怎样建立全文索 Cannot start SQL Server Agent 能用case when 举一个例子吗?如果工资>1000 职务='处长',如果工资<1000 职务='科员' 如何将从xml文件中读取的文本在网页上保持格式的显示? sql语句求助!1 有宁波考高程的吗?有参加班的吗? 水晶报表问题???高手请进!!!!!! 使用openquery建立视图。急!急!急!急!急!急! 小问提 交个朋友 Blob类型的字段为什么不能做为Lookup或Calculated字段 有谁知道Any to Icon 的 注册码 怎么实现不同文件中的变量互访? ICS 的FTP控件问题:怎样建目录,我这样做不出错,但是就是建不出来: 数据库出错 怎样将weblogic7和MS sql 2000连接起来? sql语句求助! 关于文件关联的问题,不是那么简单的哦.!!!!!! 一个MM每天回家后做的事 [贴图] 我需要得到记录集中的一条记录 关于MODEN的问题 如何编写Delphi的DLL为C++Buider调用? 我将数据库连接作为一个bean封装,怎么样在sevlet中引用它? 源文件,修改?? 我该怎么做? IIS为什么不能解析中文? Exchange怪问题,求救求救...... 请问VB写的ActiveX DLL,其中的函数如何声明为导出函数?在线等待!! 寻求组件上传多图片源代码 很菜的问题!各位帮帮忙啊!在线等。。 开水到底能不能泡饭吃? 若detA=0,证明detA*=0 是不是只有当底面是矩形时,四棱柱的外接球直才是体对角线? 直三棱柱和它所截三棱锥的外接球是一个吗直三棱柱abc-ABC它所截三棱锥a-ABC 根据局以及首字母提示完成句子1.Tomorrow I won't be free.I will be b_____ with my English exam.2.--- Your h___ is beautiful.--- Yes,everything has changed these years.3.The weather in Beijing is colder t____ that in Australia.4.The river 用汤泡饭吃会怎样?开水泡饭吃又怎样?我的亲人说吃不下饭用开水泡着吃 CAXA实体设计如何将零件内的某个特征提取出来成为新零件?如图,框选部分是一个零件,左侧框选部分是一个特征.我想将这个特征分离出来,单独成为一个零件. But there's a thing you can do for me baby 用开水泡饭吃好吗?为什么? 我的台灯的线路板烧了!请问谁有台灯的线路图!我的台灯是-百利威-MT612型的.昨天,我的台灯正亮着呢!突然不亮了,我以为是没电,所以我拔下灯管用万用表测测灯管那是否有电,可没想到台灯内 在黑暗的屋子里台灯亮的时候为什么能看见书上的字,光传播的路线是什么样的 执政联盟候选人赢得格鲁吉亚总统选举美被曝一月内监听西班牙超6000万个纽约华裔社区灭门案震惊美国 凶手提审迪拜将推出专供叫车服务出租车迪拜将推出专供叫车服务出租车土耳其青睐中国防控系统向西方国家扇了日本诺贝尔医学奖得主为募资发薪水跑马穆兄会领导人将首次在埃及受审 原定于为表彰军犬贡献 美军方为军犬设国家纪日本一男子摔死1岁女儿 只因其哭闹不德国男子以点燃自家公寓要胁 欲与市长中国3座城市成为“全球创意城市网络”电影《黄克功案件》突出从严治党思想“丁满”中原行:12只非洲细尾獴来郑百年前盛京彩照记录法国人眼中的沈阳河北曹妃甸成京津冀协同发展重要支点新疆玛纳斯县农民喜领第一批棉花目标价新疆玛纳斯县六户地镇开展\"国际残疾印度第四次成功发射烈火 4远程弹道导沪指“巨震”涨0.58% 两市创历史俄拟推行汽车回收利用计划以应对车市销台媒称大公报助理总编遭间谍策反 抛妻
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘