All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
跟我学SQL:(一)数据查询_mssql学习_编程技术
ASP.NET,MVC+LINQ开发一个图书销售站点(5)-创建逻辑层接口_[Asp.Net教程]
在系统中生成Excel流并传给用户_[Asp.Net教程]
Web开发常用命名空间和类介绍(.net,framework)_[Asp.Net教程]
GridView列数字、货币和日期的显示格式_[Asp.Net教程]
利用GridView显示主细表并添加删除、打开、关闭功能(续)_[Asp.Net教程]
怎样正确理解.NET和SQL,Server中“空值”_.net资料_编程技术
Linux下Apache并发连接数和带宽控制_php资料_编程技术
PHP中session详解_[PHP教程]
利用SQL,Server发邮件_[SQL,Server教程]
Reading number is top 10 pictures
世界五大海盗
Beauty Sun Feifei
奇趣的世界记录1
The Soviet union swimsuit exposure in the 70 year1
mythology hero1
Female model behind the bitterness, often being overcharged2
我国房地产真相
泳装名模阿尔贝特妮写真2
做运动的校花2
Sora aoi on twitter2
Download software ranking
linux高级编程
实战黑客不求人
Such love down(擒爱记)
Ashlynn Video3
Popkart Cracked versions Mobile phone games
Unix video tutorial5
Ashlynn Video4
White deer villiage
打鸟视频
WebService在.NET中的实战应用教学视频 → 第5集
aaa published in(发表于) 2014/7/19 0:11:37 Edit(编辑)
delphi拖曳事件实例

delphi拖曳事件实例

delphi拖曳事件实例|教程

拖曳事件

拖曳事件是指在图形界面中,按下鼠标左键不放并将其拖动到某个位置。如在Windows 系统里,可以选中文件或文件夹并将其拖放到其他文件夹,能够实现文件或文件夹的复制或移动操作。

拖曳事件能够方便用户操作,不需要多层命令的选择,只需要利用鼠标拖放即可。以下是常用的拖曳事件。

1.OnDragDrop 事件

在拖曳事件开始时会产生一个OnDragDrop 事件。

2.OnDragOver 事件

当拖曳对象跨过一个组件时会产生一个OnDragOver 事件。

3.OnEndDrag 事件

当拖曳事件结束后会产生一个OnEndDrag 事件。

利用上面的拖曳事件,可以很方便地实现一些拖曳操作,具体过程如下。

(1)拖曳操作开始

大多数的组件具有DragMode 属性, 表示拖曳操作的开始方式。DragMode 属性的默认值为dmManual,也就是要在被拖动组件的OnMouseDown 事件的处理过程中调用BeginDrag 过程才开始拖曳操作。如果将DragMode 属性设置为dmAutomatic,则鼠标左键在被拖动组件上按下后就自动开始拖曳操作。

(2)接受拖曳操作

当拖动一个组件经过第2 个组件的时候,第2 个组件会产生一个OnDragOver 事件。在该事件的处理过程中有一个布尔类型的参数,该参数的设置直接影响是否产生OnDragDrop 事件。

一般情况下,在OnDragOver 事件的处理过程中,事件根据参数Source 判断拖曳操作的源。如果是可以接受的源,则将Accept 参数设置为True;否则,将其设置为False。

(3)处理拖曳操作

在第2 个组件的OnDragDrop 事件的处理过程中,根据拖曳操作的源做一些相应的处理。

(4)拖曳操作结束

拖曳操作完成后释放鼠标左键,在第1 个组件中会产生一个OnEndDrag 事件,该事件可以根据参数Target 的数值进行相应的处理。如果参数Target 的值为nil,则表示拖曳操作没有被接受;如果Target的值不为nil,则Target 的值就是接受拖曳操作的组件。

为了让读者明白以上事件的用法,下面用一个小示例来简要说明拖曳操作的实现过程。本示例窗体上有一个TEdit 组件和一个TMemo 组件,运行后可以在TEdit 组件中输入文字,然后将鼠标移动到TEdit 组件上并按下左键,拖动到TMemo 组件后放开,TEdit 组件中的文字就被添加到TMemo 组件中了。

创建一个新的工程。在窗体中添加一个TEdit 组件和一个TMemo 组件。其中,将TMemo 组件的ReadOnly 属性设置为True。

选择TEdit 组件,为其添加OnMouseDown 事件的处理过程,相应代码如下:

procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Button = mbLeft then //开始进行拖动操作

(Sender As TEdit).BeginDrag(False);

end;

注意:过程BeginDrag 具有一个布尔型的参数,如果该参数设置为False,表示当按下鼠标左键并拖动一小段距离后才进行拖曳操作;如果设置为True,表示当按下鼠标左键后立即进行拖曳操作。通常将该参数设置为False。

选中Memo 组件并在对象编辑器中为其添加OnDragOver 事件和OnDragDrop 事件的处理代码如

下:

procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

begin

if Source Is TEdit then // 可以接受拖动操作

Accept:=True;

end;

procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin

if(Sender Is TMemo) and (Source Is TEdit) then

// 将Edit 组件中的内容添加到Memo 组件的最后

(Sender As TMemo).Lines.Add((Source As TEdit).Text);

end;

保存并运行程序。在Edit1 中输入一些文字,然后将其拖动到Memo1 组件中。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.