第九章-Delphi拖放编程(3)

9.2.2 接收拖动项目 

一个控件能否接收拖动项目是由该控件的OnDragOver事件决定的。在TabSet拖动中,主要是利用鼠标的位置进行判断。  

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

State: TDragState; var Accept: Boolean);

var

DropPos: Integer;

begin

if Source = TabSet1 then

begin

DropPos := TabSet1.ItemAtPos(Point(X, Y));

Accept := (DropPos > -1) and (DropPos <> TabSet1.TabIndex) and

(DropPos < TabSet1.Tabs.Count);

end;

else

Accept := False;

end; 

9.2.3 放下拖动项目 

当OnDragOver事件处理过程返回的Accept为True且项目被放下时,由OnDragDrop事件处理过程来完成拖动放下后的响应。在TabSet拖放实例中是改变标签的位置。 

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

var

OldPos: Integer;

NewPos: Integer;

begin

if Source = TabSet1 then

begin

OldPos := TabSet1.TabIndex;

NewPos := TabSet1.ItemAtPos(Point(X, Y));

if (NewPos > -1) and (NewPos <> OldPos) then

TabSet1.Tabs.Move(OldPos, NewPos);

end;

end; 

9.2.4 结束拖动操作 

结束拖动操作的方式有两种:或者是用户释放了鼠标键或者是程序用EndDrag方法强行中止拖动。结束拖动操作的后果有两种:放下被接受或放下被忽略。

拖动操作结束后源控件都要收到一条消息响应拖动结束事件OnEndDrag。 

时间: 2025-01-20 13:10:20

第九章-Delphi拖放编程(3)的相关文章

第九章-Delphi拖放编程(4)

9.3 拖放应用实例:文件管理器的拖放支持 在第六章最后开发的文件管理器应用实例,虽然功能上已初具规模,但在操作上与Windows的文件管理器相比还有很大不足.其中最大的缺陷是它不支持文件的拖放移动和拖放拷贝.在这一章结束的时候,我们可以来弥补这一缺陷了. 文件拖放移动指的是当用户把一个文件拖动到目录树下的某一目录并放下时,文件将自动移动到该目录中:文件拖放拷贝指的是当用户把一个文件拖动到某个驱动器标签上并放下时,文件将自动拷贝到该驱动器的当前目录下.作为源控件的文件列表框和作为目标控件的目录树

第九章-Delphi拖放编程(2)

9.1.3 拖放方法 拖放方法有三个: ●BeginDrag : 人工方式下开始一个拖动 ●EndDrag : 结束一个拖动 ●Dragging : 判断一个控件是否正被拖动 这三个方法都被源控件使用. 当DragMode置为dmManual时,拖动必须调用控件的BeginDrag方法才能开始.BeginDrag有一个布尔参数Immediate.如果输入参数为True,拖动立即开始,光标改变到DragCursor的设置.如果输入参数为False,直到用户将光标移动了一定的距离(5个象素点)后才改

第九章-Delphi拖放编程(1)

拖放(DragDrop)是Windows提供的一种快捷的操作方式.作为基于Windows的开发工具,Delphi同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了Delphi的强大功能和方便性. Delphi提供的所有控件(Control,即能获得输入焦点的部件)都支持拖放操作,并有相应的拖放属性.拖放事件和拖放方法.下面我们先介绍控件的拖放支持,而后再给出开发拖放操作的一般步骤和应用实例. 9.1 控件的拖放支持 拖放操作中控件可以分为源控件和目标控件两类.绝大部分控件既可以作为

《.net编程先锋C#》第九章 配置和调度(转)

编程 第九章 配置和调度在上一章,你学到如何创建一个通用语言运行时(CLR)组件,且如何在一个简单的测试应用程序中使用它.虽然CLR组件就要准备装载了,但你还是应该思考以下技术之一:.条件编译.文档注释.代码版本化 9.1 条件编译 没有代码的条件编译功能,我就不能继续工作.条件编译允许执行或包括基于某些条件的代码:例如,生成应用程序的一个查错(DEBUG)版本.演示(DEMO)版本或零售(RELEASE)版本.可能被包括或被执行的代码的例子为许可证代码. 屏幕保护或你出示的任何程序.在C#中,

第二章-Delphi面向对象的编程方法(三)(2)

2.1.9.4 字符串类型 字符串类型事实上是一个一维的字符数组.当您说明一个字符串型的变量时,您应当指明这个字符串的大小,下面是说明字符串类型的例子: type MyString: string[15]; var MyName: MyString; 则变量MyName被说明成为最多可以包含15个字符.如果您没有说明字符串的大小,Delphi会认为字符串包含最大值255个字符.给字符串赋值可以直接使用单引号括起的字串赋值: MyName := 'Frank.Smith'; 或MyName :=

新手求教 谢谢-c primer plus 编程练习第九章

问题描述 c primer plus 编程练习第九章 设计函数chline(ch, i, j),实现指定字符在i列到j列的输出,并用一个简单的驱动程序测试该函数. #include<stdio.h> void chline(char ch , int i , int j); int main(void) { int i = 0; int j = 0 ; char ch = ' '; printf("enter the char you want to print:"); c

3D编程:第九章 Normal Mapping and Displacement Mapping

第九章 Normal Mapping and Displacement Mapping 本章主要讲述两种图形学技术,支持在不增加objects的poly primitive的情况下,在场景中增加更多的细节.第一种是normal mapping,通过创建一些"fake" geometry(虚设的多边形图元)模拟光照作用.第二种是displacement mapping,根据纹理数据moving vertices actually(与"fake"相对应,这里指真实的移动

第十九章-Delphi自定义部件开发(一)(1)

Delphi除了支持使用可视化部件所见即所得地建立应用程序外,还支持为开发应用而设计自己的部件. 在本章中将阐述如何为Delphi应用程序编写部件.这一章将达到两个目的: ● 教你如何自定义部件 ● 使你的部件成为Delphi环境的有机组合部分 19.1 Delphi部件原理 19.1.1 什么是部件 部件是Delphi应用程序的程序构件.尽管大多数部件代表用户界面的可见元素,但部件也可以是程序中的不可见元素,如数据库部件.为弄清什么是部件可以从三个方面来考察它:功能定义.技术定义和经验定义.

022_《Delphi模式编程》

<Delphi模式编程> Delphi 教程 系列书籍 (022) <Delphi模式编程> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf   作者: 刘艺 丛书名: Borland/Inprise核心技术丛书 出版社:机械工业出版社 ISBN:7111149491 上架时间:2004-9-11 出版日期:2004 年9月 开本:16开 页码:509 版次:1-1 内容简介 <delphi模式编程>是一本delphi程序员的模式入门和