2024年10月以下几个事件中代表“鼠标滑到”的事件是()(以下几个事件中代表鼠标滑到的事件是什么)

 更新时间:2024-10-12

  ⑴以下几个事件中代表“鼠标滑到”的事件是()(以下几个事件中代表鼠标滑到的事件是什么

  ⑵以下几个事件中代表鼠标滑到的事件是什么

  ⑶onMouseOver事件中代表鼠标滑到的事件。鼠标事件是指用户操作鼠标时触发的事件,分为以下两类。鼠标点击事件,鼠标移动事件.鼠标的按下和松开事件分别是onmousedown和onmouseup事件。其中,onmousedown事件用于在按下鼠标时触发事件处理程序,onmouseup事件是在松开鼠标时触发事件处理程序。用鼠标单击对象时,可以用这两个事件实现动态效果。

  ⑷会VB的帮忙做几个简单的题!

  ⑸#结束VB程序运行的命令是___End____.在文本框中通过____Text______属性能获得选取的文字。启动窗体时为了初始化窗体中的各控件,可以在窗体的__Load__事件中编写代码。产生一个—的随机整数的表达式是___rnd()*+____要使标签Label显示的文字为红色,在设计代码中可加入语句____Label.ForeColor=vbRed_____下列程序,文本框显示的结果是_________privatesubmand_click()Dimxasstring,yasstringx=””:y=””text.text=x+yendsub使命令按钮mand获得焦点,应使用语句____mand.SetFocus____使在某一条件下复选框check禁用,应使其__Enabled__属性值为__False__。打开菜单器进行菜单设计,应在VB的__工具__菜单下选取“菜单器”。要在列表框中第三条加上“上海”项目,应使用语句___list.list()=“上海“_____判断题VisualBasic是一个面象对象程序设计语言。(√双击设计窗体中某个控件,该控件将出现在窗体左上角(×标签控件只能显示文本信息,不能响应鼠标单击事件。(×VisualBasic是事件驱动的编程机制。(√VB中的所有对象都必须放置在窗体中。(×命令按钮控件能分别响应鼠标单击事件和双击事件。(×当窗体的Enabled属性为True时,窗体上的按钮、文本框等控件都会响应用户操作。(√当窗体的Enabled属性为False时,窗体上的按钮、文本框等控件就不会响应用户操作。(√当文本框编写有KeyPress事件时,在文本框中输入一个字符后,就立即执行了一次其KeyPress事件。(√Rem和英文单引号(‘都可用于注释语句(√多个IF语句可共有一个EndIF语句。(×DoUntil……Loop语句执行时,先判断条件,如果满足条件则执行循环体中的语句。(×Do……LoopWhile语句执行时,先判断条件是否满足以决定是否执行循环体中的语句。(×数组的下界一定是大于的整数。(×在调用函数时默认是按传值方式进行参数传递的。(×如果要让某单选按钮处于选中状态,则Value属性应设为。(×同一数组中的各元素的数据类型必须一致。(√使在某一条件下复选框check处于选中,应使其Index属性值为。(×如果要时钟控件每秒钟发生一个Timer事件,则Interval属性应设为。(×编程无图!如图是一个系统登录界面,请编写其VB功能代码,要求单击“确定”mand按钮时实现:(如果用户名不是admin,则提示用户出错;(如果密码不是“”,则提示密码错误,之后输口令的文本框text获得焦点;(文本框text获得焦点则其文本处于选定状态;(连输三次口令不正确则结束程序;(单击“取消”mand按钮则程序结束。’包含注释的答案dimnasintegerprivatesubmand_click()’(如果用户名不是admin,则提示用户出错;iftext.text《》“admin“thenmsgbox“用户出错“,,“提示“exitsubendif’(如果密码不是“”,则提示密码错误,之后输口令的文本框text获得焦点;iftext.text《》““thenmsgbox“密码错误“,,“提示“text.setfocus’(文本框text获得焦点则其文本处于选定状态;text.selstart=text.sellength=len(text.text)’(连输三次口令不正确则结束程序;n=n+ifn》=thenendexitsubendifendsub’(单击“取消”mand按钮则程序结束。privatesubmand_click()endendsub’没注释的完整答案dimnasintegerprivatesubmand_click()iftext.text《》“admin“thenmsgbox“用户出错“,,“提示“exitsubendififtext.text《》““thenmsgbox“密码错误“,,“提示“text.setfocustext.selstart=text.sellength=len(text.text)n=n+ifn》=thenendexitsubendifendsubprivatesubmand_click()endendsub保证合格!

  ⑹C#某对象,如按钮,事件中的MouseEnter和MouseMove还有MouseHover什么区别呢实验了,但是看不出来!

  ⑺MouseEnter事件响应鼠标(或触笔移入对象的边界区域就是鼠标进去按钮区域就会触发.MouseMove事件响应鼠标指针(或触笔跨对象内容区域的移动就是鼠标在按钮的区域内移动就会触发MouseHover是当鼠标悬停在控件周围指定区域(“悬停矩形”上时触发它的触发时间由MouseHoverTime属性控制就是可以设置在上面悬停多少ms时触发对应的时间.===============================================================你的问题可以定义一个变量bool_bKeep=false;在MouseEnter中写if(!_bKeep){boBox.DroppedDown=true;_bKeep=false;}在MouseLeave写if(!_bKeep){boBox.DroppedDown=false;}在DropDown事件中写入_bKeep=true;

  ⑻请教一个问题,关于jquery判断鼠标移动到当前div和离开div的

  ⑼jquery中有个对应的事件,那就是mouseover与mouseout。mouseover就是移动到元素触发的事件,mouseout就是离开元素触发事件。示例:当鼠标从元素上移开时,改变元素的背景色:jQuery代码:$(“div“).mouseout(function(){$(“div“).css(“background-color“,“#EEE“);});$(“div“).mouseover(function(){$(“div“).css(“background-color“,“yellow“);});

  ⑽VB窗体的窗体的事件及说明:

  ⑾在用form中可以这样用form中的过程,form.过程名()

  ⑿设置边界类型,取值为:

  ⒀None(无边界框架)

  ⒁FixedSingle(窗口大小固定不变的单线框架)

  ⒂Sizable(窗口大小可变的标准双线框架)

  ⒃FixedDialog(窗口大小固定的对话框窗体)

  ⒄FixedToolWindow(窗口大小固定的工具箱窗体)

  ⒅SizableToolWindow(窗口大小可变的工具箱窗体)

  ⒆窗体是计算机应用程序与人进行信息交互的图形界面。VB窗体中包含和设计好的属性和方法,开发人员可以直接使用,或基于窗体类(classForm定制自己的程序界面,无需从底层去编写每一个细节,大大简化了开发人员的工作量和复杂度,使程序员将更多的精力投入到程序的业务功能的设计和实现。

  ⒇以上内容参考:百度百科-VB窗体

  ⒈鼠标移动到一个元素上,会触发该元素的一个世界,jquery中表示该事件的方法是

  ⒉//当鼠标开始移动到按钮上一直到移除会依次出发mouseover-》mousemove-》mouseout//如果移动到按钮上面再点击一下在移出按钮范围的话,事件触发顺序为mouseover-》mousemove-》mousedown(可能会有mousemove)-》mouseup-》click-》mousemove-》mouseout//mousemove事件是mouse鼠标只要在按钮上面移动,就会触发的事件。所以在上面的过程中,就算是鼠标按下了之后有鼠标的移动也会触发mousemoveJquery里面$(“#元素id“).hover(function(){划入时间},function(){划出事件}).

  ⒊MotionEvent详解

  ⒋AndroidMotionEvent详解,之前用了两篇文章事件分发机制原理和事件分发机制详解来讲解事件分发,而作为事件分发主角之一的MotionEvent并没有过多的说明,本文就带大家了解MotionEvent的相关内容,简要介绍触摸事件,主要包括单点触控、多点触控、鼠标事件以及getAction()和getActionMasked()的区别。

  ⒌Android将所有的输入事件都放在了MotionEvent中,随着安卓的不断发展壮大,MotionEvent也开始变得越来越复杂,下面是我自己整理的MotionEvent大事记:

  ⒍以上仅仅是简要的说明几次比较大的变动,细小的修复和更新不计其数,此处就不一一列出了,反正也没人关心这些东西。MotionEvent负责集中处理所有类型设备的输入事件,但是由于某些设备使用的几率较小本文会忽略讲解,或者简要讲解,例如:、轨迹球只出现在最早的设备上,现代的设备上已经见不到了,本文不再叙述。、触控笔和手指处理流程基本相同,不再多说。、鼠标在手机上使用概率也比较小,会在文末简要介绍。

  ⒎单点触控就非常简单啦,入门的工程师都会用,上一篇文章也简要介绍过,主要涉及以下几个事件:

  ⒏单点触控一次简单的交互流程是这样的:

  ⒐手指落下(ACTION_DOWN)-》多次移动(ACTION_MOVE)-》离开(ACTION_UP)

  ⒑针对单点触控的事件处理一般是这样写的:

  ⒒相信小伙伴对此已经非常熟悉了,经常使用的东西,我也不啰嗦了。

  ⒓但其中有两个比较特殊的事件:ACTION_CANCEL和ACTION_OUTSIDE。为什么说特殊呢,因为它们是由程序触发而产生的,而且触发条件也非常特殊,通常情况下即便不处理这两个事件也没有什么问题。接下来我们就扒一扒它们的真面目:

  ⒔ACTION_CANCEL的触发条件是事件被上层拦截,然而我们在事件分发机制原理一文中了解到当事件被上层View拦截的时候,ChildView是收不到任何事件的,ChildView收不到任何事件,自然也不会收到ACTION_CANCEL了,所以说这个ACTION_CANCEL的正确触发条件并不是这样,那么是什么呢?

  ⒕事实上,只有上层View回收事件处理权的时候,ChildView才会收到一个ACTION_CANCEL事件。

  ⒖这样说可能不太容易理解,咱举个例子?

  ⒗ACTION_OUTSIDE的触发条件更加奇葩,从字面上看,outside意思不就是超出区域么?然而不论你如何滑动超出控件区域都不会触发ACTION_OUTSIDE这个事件。相信很多魔法师都对此很是疑惑,说好的超出区域呢?

  ⒘实际上这个事件根本就不是在这里用的,看官方解释(装一下逼):

  ⒙我们知道,正常情况下,如果初始点击位置在该视图区域之外,该视图根本不可能会收到事件,然而,万事万物都不是绝对的,肯定还有一些特殊情况,你可曾还记得点击Dialog区域外关闭吗?Dialog就是一个特殊的视图(没有占满屏幕大小的窗口),能够接收到视图区域外的事件(虽然在通常情况下你根本用不到这个事件),除了Dialog之外,你最可能看到这个事件的场景是悬浮窗,当然啦,想要接收到视图之外的事件需要一些特殊的设置。

  ⒚由于这个事件用到的几率比较小,此处就不展开叙述了,以后用到的时候再详细讲解。

  ⒛Android在.版本的时候开始支持多点触控,一旦出现了多点触控,很多东西就突然之间变得麻烦起来了,首先要解决的问题就是多个手指同时按在屏幕上,会产生很多的事件,这些事件该如何区分呢?

  为了区分这些事件,工程师们用了一个很简单的办法--编号,当手指第一次按下时产生一个唯一的号码,手指抬起或者事件被拦截就回收编号,就这么简单。

  第一次按下的手指特殊处理作为主指针,之后按下的手指作为辅助指针,然后随之衍生出来了以下事件(注意增加的事件和事件简介的变化):

  由于多点触控部分涉及内容比较多,也很复杂,我准备单独用一篇文章进行详细叙述,所以这里只叙述一些基础的内容作为铺垫:

  当多个手指在屏幕上按下的时候,会产生大量的事件,如何在获取事件类型的同时区分这些事件就是一个大问题了。

  一般来说我们可以通过为事件添加一个int类型的index属性来区分,但是我们知道谷歌工程师是有洁癖的(在自定义View分类与流程的onMeasure中已经见识过了),为了添加一个通常数值不会超过的index属性就浪费一个int大小的空间简直是不能忍受的,于是工程师们将这个index属性和事件类型直接合并了。

  int类型共位(x),他们用最低位(xff)表示事件类型,再往前的位(xff)表示事件编号,以手指按下为例讲解数值是如何合成的:

  注意:上面表格中用粗体标示出的数值,可以看到随着按下手指数量的增加,这个数值也是一直变化的,进而导致我们使用getAction()获取到的数值无法与标准的事件类型进行对比,为了解决这个问题,他们创建了一个getActionMasked()方法,这个方法可以清除index数值,让其变成一个标准的事件类型。、多点触控时必须使用getActionMasked()来获取事件类型。、单点触控时由于事件数值不变,使用getAction()和getActionMasked()两个方法都可以。、使用getActionIndex()可以获取到这个index数值。不过请注意,getActionIndex()只在down和up时有效,move时是无效的。

  目前来说获取事件类型使用getActionMasked()就行了,但是如果一定要编译时兼容古董版本的话,可以考虑使用这样的写法:

  虽然前面刚刚说了一个actionIndex,可以使用getActionIndex()获得,但通过actionIndex字面意思知道,这个只表示事件的序号,而且根据其说明文档解释,这个ActionIndex只有在手指按下(down)和抬起(up)时是有用的,在移动(move)时是没有用的,事件追踪非常重要的一环就是移动(move),然而它却没卵用,这也太不实在了( ̄Д ̄)?

  郑重声明:追踪事件流,请认准PointId,这是唯一官方指定标准,不要相信ActionIndex那个小婊砸。

  PointId在手指按下时产生,手指抬起或者事件被取消后消失,是一个事件流程中唯一不变的标识,可以在手指按下时通过getPointerId(intpointerIndex)获得。(参数中的pointerIndex就是actionIndex)

  关于事件流的追踪等问题在讲解多点触控时再详细讲解。

  由于我们的设备非常灵敏,手指稍微移动一下就会产生一个移动事件,所以移动事件会产生的特别频繁,为了提高效率,系统会将近期的多个移动事件(move)按照事件发生的顺序进行排序打包放在同一个MotionEvent中,与之对应的产生了以下方法:

  下面是官方文档给出的一个简单使用示例:

  获取事件发生的时间。

  MotionEvent支持获取某些输入设备(手指或触控笔)的与屏幕的接触面积和压力大小,主要有以下方法:

  获取接触面积大小和获取压力大小是需要硬件支持的。、非常不幸的是大部分设备所使用的电容屏不支持压力检测,但能够大致检测出接触面积。、大部分设备的getPressure()是使用接触面积来模拟的。、由于某些未知的原因(可能系统版本和硬件问题),某些设备不支持该方法。

  我用不同的设备对这两个方法进行了测试,然而不同设备测试出来的结果不相同,之后经过我多方查证,发现是系统问题,有的设备上只有getSize()能用,有的设备上只有getPressure()能用,而有的则两个都不能用。

  由于获取接触面积和获取压力大小受系统和硬件影响,使用的时候一定要进行数据检测,以防因为设备问题而导致程序出错。

  由于触控笔事件和手指事件处理流程大致相同,所以就不讲解了,这里讲解一下与鼠标相关的几个事件:

  这些事件类型是安卓.(API)才添加的。、使用getActionMasked()获得这些事件类型。、这些事件不会传递到onTouchEvent(MotionEvent)而是传递到onGenericMotionEvent(MotionEvent)。

  输入设备类型判断也是安卓.(API)才添加的,主要包括以下几种设备:

  使用getToolType(intpointerIndex)来获取对应的输入设备类型,pointIndex可以为,但必须小于getPointerCount()。

  文章搬运自安卓自定义View进阶-MotionEvent详解

  flash中on(rollover)函数的常用法

  语句是on()事件处理函数;指定触发动作的鼠标事件。语法格式:on(mouseEvent){}“()”小括号中的mouseEvent参数是鼠标事件,常用的有以下几种鼠标事件:Press---当鼠标指针经过按钮时按下鼠标。release---当鼠标指针经过按钮时按下再释放鼠标按钮。releaseOutside---当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。rollOut---鼠标指针滑出按钮区域。rollOver---鼠标指针滑过按钮。

  在Delphi中怎样抓取鼠标形状

  {鼠标:右击,左击,单击,双击,滚轮,拖曳}Delphi程序设计中的鼠标控制在Windows环境下,鼠标和键盘是主要的输入设备。在Delphi中几乎每个对象都具有反映鼠标控制的事件,这些事件的主要功能包括改变鼠标指针的形状,移动、触发、拖动鼠标等。鼠标控制的三个相关属性是Cursor、DragCursor、DragMode;鼠标(拖拽)控制的三个对象方法是BeginDrag、Dragging、EndDrag;鼠标控制的七个事件包括OnDragDrop等。一、改变鼠标指针的形状改变鼠标指针的形状在Windows环境下是不可缺少的功能。当应用程序在执行一个较长时间的指令或动作时,我们可以改变鼠标指针的形状来通知用户程序执行的状态,等到执行的动作完成之后,再把鼠标指针的形状变回来。此外,在拖动的过程中我们也可以改变鼠标指针的形状,使拖动的过程更加清楚。在过程中,我们可以用属性Cursor和DragCursor改变鼠标指针的形状,前者是记录鼠标指针在对象上出现的情况;后者是设定对象被拖动时鼠标指针的形状。对于这两个属性,Delphi提供了如下值供用户选择:cdDefault、crArrow、cdCross、crBeam、crSize等十几个属性值。二、鼠标的移动鼠标移动时会触发事件OnMouseMove,语法如下:procedureObjectMouseMove(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事件,其语法如下:procedureObjectMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);参数Button指出按下的鼠标键是哪一个,可以是{mbLeft,mbRight,mbMiddle}三者之一。参数Shift可以反映按下的键盘键与鼠标的关系,其值是由{ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble}所组合而成的集合,这些参数值分别代表Shift,Alt,Ctrl键、鼠标的左、中、右键,及同时按下左右键。例如,同时按下鼠标的右键和Alt键,参数Shift的值就是{ssAlt,ssRight}。四、鼠标的拖动(细节(一启动拖动状态拖动状态的方式及启动是根据属性DragMode值的设定而决定的,可以分成两类情况:.不必程序控制如果DragMode的值是dmAutomatic,当鼠标左键一按,对象就自动进入拖动状态。.需要程序控制如果DragMode的值是dmManual,要使对象进入拖动状态,可以调用方法BeginDrag。此外,Delphi提供一个对象方法Dragging,让程序判断对象是否进入拖动状态。如果返回值是TRUE,代表已进入拖动状态,否则就是没有。要使对象进入拖动状态,可以调用对象方法BeginDrag。当对象进入拖动状态时,事件OnStartDrag会被触发,有关语法如下:对象方法Dragging语法如下:functionDragging:Boolean;对象方法BeginDrag语法如下:ProcedureBeginDrag(Immediate:Boolean);事件OnStartDrag语法如下:ProcedureObjectStartDrag(Sender:TObject;VarDragObject:TDragObject);(二拖动中的事件关于对象在拖动状态的事件有两个:OnDragDrop和OnDragOver。假设把对象A拖动并放入对象B中,此时对象B的事件OnDragDrop会被触发。其语法如下:procedureObjectDragDrop(Sender,Source:TObject;X,Y:Integer);参数Sender和Source分别代表目标对象B及被拖动的对象A,参数X,Y代表拖动结束时的位置坐标,此坐标是以目标对象的坐标为参考的,而实际上拖动中的对象并不是真的移动,所以以X,Y的值将对象移到新的位置。(三)停止拖动如果要停止拖动,可以使用对象方法EndDrag来完成;其语法如下:procedureObjectEndDrag(Drop:Boolean);参数Drop若是Ture,被拖动的对象将被放置于与目前所在的位置;否则,对象的拖动就被放弃,而回到原来的位置。例如下面的程序段就代表对象Lable放弃拖动,并恢复原状:Lable.EndDrag(False);而停止拖动会触发事件OnEndDrag,其语法如下:ProcedureObjectEndDrag(Sender,Target:TObject;X,Y:Integer);不管是放弃拖动或是对象已经拖动到目标对象,均会触发这个事件。参数Sender和Target分别指向被拖动对象(源)及目标对象,但是如果拖动没有成功,则Target值为nil。补充:DELPHI中拖放的操作拖放(DragDrop)是Windows提供的一种快捷的操作方式。作为基于Windows的开发工具,Delphi同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了Delphi的强大功能和方便性。Delphi提供的所有控件(Control,即能获得输入焦点的部件)都支持拖放操作,并有相应的拖放属性、拖放事件和拖放方法。下面我们先介绍控件的拖放支持,而后再给出开发拖放操作的一般步骤和应用实例。.控件的拖放支持拖放操作中控件可以分为源控件和目标控件两类。绝大部分控件既可以作为源控件也可以作为目标控件。但也有一部分控件只能支持其中的一种。..拖放属性拖放属性主要有两个:●DragMode:拖动模式它们都是在拖放的源控件中设置。DragMode控制用户在运行时间内当在控件上按下鼠标时控件如何反应。如果DragMode置为dmAutomatic,那么当用户在控件上按下鼠标时拖动自动开始;如果DragMode置为dmManual(这是缺省值),则将通过处理鼠标事件来判断一个拖动是否可以开始。●DragCursor用于选择拖动时显示的光标,缺省值是CrDrag,一般不要去修改它。在程序设计过程中通用的界面规范应该得到开发者的尊重。但有时候为了特定的目的,开发者也可以把自己设计的光标赋给DragCursor。..拖放事件拖放事件主要有三个(?):●OnDragOver:拖动经过时激发●OnDragDrop:拖动放下时激发●OnEndDrag:拖动结束时激发●OnStartDrag:拖动开始时激发(?)前两个事件由目标控件响应,后一个事件由源控件响应。●OnDragOver事件最主要的功能是确定当用户就地放下拖动时控件是否可以接受。它的参数包括:Source:TObject;{源控件}X,Y:Integer;{光标位置}State:TDragState;{拖动状态}varAept:Boolean{能否接受}●TDragState是一个枚举类型,表示拖放项目与目标控件的关系。typeTDragState=(dsDragEnter,dsDragLeave,dsDragMove);不同取值的意义如下表:表.DragState的取值与意义━━━━━━━━━━━━━━━━━━━━━━━━━━━取值意义───────────────────────────dsDragEnter拖动对象进入一个允许拖动对象放的控件中。为缺省状态。dsDragLeave拖动对象离开一个允许拖动对象放下的控件。dsDragMove拖动对象在一个允许拖动对象放下的控件内移动。━━━━━━━━━━━━━━━━━━━━━━━━━━━用户可以利用提供的参数来确定放下的拖动是否可被接受,如:●判断源控件类型:Aept:=SourceisTLabel;●判断源控件对象:Aept:=(Source=TabSet);●判断光标位置:见(.),(.)中的例程。●判断拖动状态:If(SourceisTLabel)and(State=dsDragMove)thenbeginsource.DragIcon:=’New.Ico’;Aept:=True;endelseAept:=False当Aept=True时,目标控件可以响应OnDragDrop事件,用于确定拖动被放下后程序如何进行处理。●OnDra}typeTForm=class(TForm)procedureFormCreate(Sender:TObject);private{Privatedeclarations}lstMyRect:TList;//类似于控件数组Flag_Dragging:boolean;StartPoint,LastPoint:TPoint;//记录鼠标按下的点和移动后的点NowRect:TRect;//组件对象的边框procedurePrepareToMove(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);procedureMoving(Sender:TObject;Shift:TShiftState;X,Y:Integer);procedureMoveEnd(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);public{Publicdeclarations}endrocedureTForm.FormCreate(Sender:TObject);vars:string;i:integer;TempLabel:TLabel;beginFlag_Dragging:=FalselstMyRect:=TList.Create;//动态创建TLabel对象,并保存fori:=todobegintempLabel:=TLabel.Create(SenderasTForm);tempLabel.Caption:=’iloveyou’;tempLabel.Top:=+i*;tempLabel.Left:=+i*;tempLabel.Parent:=Form;tempLabel.OnMouseDown:=PrepareToMove;//设置三个事件tempLabel.OnMouseMove:=Moving;tempLabel.OnMouseUp:=MoveEnd;lstMyRect.Add(tempLabel);end;end{当鼠标按下时,记录下开始点,并得到组件对象的边框,在移动的时候给用户以参照,并且把该边框画出}rocedureTForm.PrepareToMove(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);varTmpLabel:TLabel;beginTmpLabel:=SenderasTLabel;Flag_Dragging:=True;StartPoint:=Point(X,Y);LastPoint:=Point(X,Y);NowRect:=Rect(TmpLabel.Left,TmpLabel.Top,TmpLabel.Left+TmpLabel.Width,TmpLabel.Top+TmpLabel.Height);Form.Canvas.DrawFocusRect(NowRect);end;{当鼠标移动的时候,计算出移动的距离,消隐上一个位置的边框,计算新位置的边框并画出}rocedureTForm.Moving(Sender:TObject;Shift:TShiftState;X,Y:Integer);varTmpLabel:TLabel;DeltaX,DeltaY:integer;beginTmpLabel:=SenderasTLabel;ifFlag_DraggingthenbeginDeltaX:=X-LastPoint.X;//计算移动的横纵距离DeltaY:=Y-LastPoint.Y;LastPoint:=Point(X,Y);//保存新点Form.Canvas.DrawFocusRect(NowRect);//消隐上一个位置的边框NowRect:=Rect(NowRect.Left+DeltaX,NowRect.Top+DeltaY,NowRect.Right+DeltaX,NowRect.Bottom+DeltaY);//计算新边框的位置Form.Canvas.DrawFocusRect(NowRect);end;end{当鼠标放开时,不用再画边框,直接计算释放处与开始处的距离,然后把组件对象移动过来}rocedureTForm.MoveEnd(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);varTmpLabel:TLabel;Deltax,Deltay:integer;beginTmpLabel:=SenderasTLabel;ifFlag_DraggingthenbeginFlag_Dragging:=False;LastPoint:=Point(X,Y);Deltax:=LastPoint.X-StartPoint.X;Deltay:=LastPoint.Y-StartPoint.Y;TmpLabel.Top:=Deltay+TmpLabel.Top;//重新设置组件对象的位置TmpLabel.Left:=Deltax+TmpLabel.Left;end;end第二种:OnStartDrag,OnEndDrag,OnDragDrop,OnDragOver{--:OnStartDrag,OnEndDrag,OnDragDrop,OnDragOver在delphi中实现托拽版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明end.

  以下几个事件中代表鼠标滑倒

  以下几个事件中代表“鼠标滑到”的事件是(c)。A.OnMouseup...以下几个事件中代表“鼠标滑到”的事件是(c)。A.OnMouseupB.OnMouseOutC.OnMouseOverD.OnouseDown...百度教育

您可能感兴趣的文章:

相关文章