没有合适的资源?快使用搜索试试~ 我知道了~
Delphi程序设计中的鼠标控制.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 20 浏览量
2022-07-09
15:41:10
上传
评论
收藏 44KB DOCX 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/85980566/0001-6950bfee3277225bdc14e6c07c049d30_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
23页
Delphi程序设计中的鼠标控制.docx
资源推荐
资源详情
资源评论
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/release/download_crawler_static/85980566/bg1.jpg)
Delphi 程序设计中的鼠标控制
2008-06-28 20:15
在 Windows 环境下,鼠标和键盘是主要的输入设备。
在 Delphi 中几乎每个对象都具有反映鼠标控制的事件,
这些事件的主要功能包括改变鼠标指针的形状,移动、触发、拖动鼠标等。
鼠标控制的三个相关属性是 Cursor、DragCursor、DragMode;
鼠标(拖拽)控制的三个对象方法是 BeginDrag、Dragging、EndDrag;
鼠标控制的七个事件包括 OnDragDrop 等。
一、改变鼠标指针的形状
改变鼠标指针的形状在 Windows 环境下是不可缺少的功能。
当应用程序在执行一个较长时间的指令或动作时,
我们可以改变鼠标指针的形状来通知用户程序执行的状态,
等到执行的动作完成之后,再把鼠标指针的形状变回来。
此外,在拖动的过程中我们也可以改变鼠标指针的形状,使拖动的过程更加清楚。
在编辑过程中,我们可以用属性 Cursor 和 DragCursor 改变鼠标指针的形状,
前者是记录鼠标指针在对象上出现的情况;后者是设定对象被拖动时鼠标指针的形状。
对于这两个属性, Delphi 提供了如下值供用户选择: cdDefault、crArrow、cdCross、crBeam、
crSize 等十几个属性值。
二、鼠标的移动
鼠标移动时会触发事件 OnMouseMove,语法如下:
procedure ObjectMouseMove(Sender:TObject;Shift:TshiftState;X,Y:Integer)
其中参数 Sender 代表((目标对象)),参数 Shift 代表鼠标移动时需同时按下的组合键,
由{ssShift,ssAlt,ssCtrl,ssRight,ssLeft,ssMiddle,ssDouble}组成。
此外, 我们也可以利用参数X 和 Y 取得鼠标移动的坐标位置, 通常我们使用 OnMouseMove
事件时,最重要的就是这两个参数。
三、鼠标按键
鼠标按键在窗口环境中也是最重要的输入方法之一,
同时还可以配合 Shift,Alt,Ctrl 三个键而发挥不同的作用。
和鼠标按键有关的事件有 OnMouseDown 和 OnMouseUp。
当用户按下鼠标的一个键后,会触发 OnMouseDown 事件,其语法如下:
procedure ObjectMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,
Y:Integer);
参数 Button 指出按下的鼠标键是哪一个,可以是{mbLeft,mbRight,mbMiddle}三者之
一。
参数 Shift 可以反映按下的键盘键与鼠标的关系,
其值是由{ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble}所组合而成的集
合,
![](https://csdnimg.cn/release/download_crawler_static/85980566/bg2.jpg)
这些参数值分别代表 Shift,Alt,Ctrl 键、鼠标的左、中、右键,及同时按下左右键。
例如,同时按下鼠标的右键和Alt 键,参数 Shift 的值就是{ssAlt,ssRight}。
![](https://csdnimg.cn/release/download_crawler_static/85980566/bg3.jpg)
四、鼠标的拖动(细节)
( 一 ) 启 动 拖 动 状 态
拖动状态的方式及启动是根据属性DragMode 值的设定而决定的,可以分成两类情况:
1.不必程序控制 如果 DragMode 的值是 dmAutomatic,当鼠标左键一按,对象就自
动进入拖动状态。
2.需要程序控制 如果 DragMode 的值是 dmManual,要使对象进入拖动状态, 可以调
用方法 BeginDrag。
此外, Delphi 提供一个对象方法 Dragging,让程序判断对象是否进入拖动状态。
如果返回值是 TRUE,代表已进入拖动状态,否则就是没有。
要使对象进入拖动状态,可以调用对象方法BeginDrag。
当对象进入拖动状态时,事件 OnStartDrag 会被触发,有关语法如下:
对象方法 Dragging 语法如下:
function Dragging:Boolean;
对象方法 BeginDrag 语法如下:
Procedure BeginDrag(Immediate:Boolean);
事件 OnStartDrag 语法如下:
Procedure ObjectStartDrag(Sender:TObject;Var DragObject:TDragObject);
( 二 ) 拖 动 中 的 事 件
关于对象在拖动状态的事件有两个: OnDragDrop 和 OnDragOver。
假设把对象 A 拖动并放入对象 B 中,此时对象 B 的事件 OnDragDrop 会被触发。其语法如
下:
procedure ObjectDragDrop(Sender,Source:TObject;X,Y:Integer);
参数 Sender 和 Source 分别代表目标对象 B 及被拖动的对象 A,
参数 X ,Y 代表拖动结束时的位置坐标,此坐标是以目标对象的坐标为参考的,
而实际上拖动中的对象并不是真的移动,所以以X,Y 的值将对象移到新的位置。
(三)停止拖动
如果要停止拖动,可以使用对象方法EndDrag 来完成;其语法如下:
procedure ObjectEndDrag(Drop:Boolean);
参数 Drop 若是Ture,被拖动的对象将被放置于与目前所在的位置;
否则,对象的拖动就被放弃,而回到原来的位置。
例如下面的程序段就代表对象 Lable1放弃拖动,并恢复原状:
Lable1.EndDrag(False);
而停止拖动会触发事件 OnEndDrag,其语法如下:
Procedure ObjectEndDrag(Sender,Target:TObject;X,Y:Integer);
不管是放弃拖动或是对象已经拖动到目标对象,均会触发这个事件。
参数 Sender 和 Target 分别指向被拖动对象(源)及目标对象,但是如果拖动没有成功,则Target
值为 nil。
补充:
DELPHI 中拖放的操作
![](https://csdnimg.cn/release/download_crawler_static/85980566/bg4.jpg)
拖放(DragDrop)是 Windows 提供的一种快捷的操作方式。作为基于Windows 的开发工
具, Delphi 同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了
Delphi 的强大功能和方便性。
剩余22页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
Cheng-Dashi
- 粉丝: 108
- 资源: 1万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 织梦cms站长导航网站源码.zip
- 基于SSM+MySQL的网络投票调查问卷系统源码+数据库(java期末大作业).zip
- 基于jsp+servlet的宠物商城网站系统源码+数据库(java期末大作业).zip
- 基于Python+Tensorflow实现声纹识别+源代码+文档说明.zip
- java-leetcode题解之第112题路径总和.zip
- java-leetcode题解之第111题二叉树的最小深度.zip
- java-leetcode题解之第110题平衡二叉树.zip
- java-leetcode题解之第109题有序链表转换二叉搜索树.zip
- java-leetcode题解之第108题将有序数组转换为二叉搜索树.zip
- java-leetcode题解之第107题二叉树的层序遍历II.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)