delphi拖放编程的要素、事件流程和可能的陷阱

本文深入探讨了Delphi中拖放编程的关键要素,详细解析了拖放操作的事件流程,并警示了在实现过程中可能遇到的编程陷阱,帮助开发者规避错误,提升代码质量。
摘要由CSDN通过智能技术生成
一、拖放的要素
鼠标拖放的二个操作对象:源对象(source)和目标对象(Target)。鼠标左键在源控件(source)上按下拖动,直至可接收目标控件(Target)上放下,即完成一次拖放操作。有四个事件拖放事件依序发生:OnStartDrag,OnDragOver,OnDragDrop,OnEndDrag。按事件名的字义理解这四个事件就对了,OnDragOver和OnDragDrop由目标对象(Target)激发,OnStartDrag和OnEndDrag由源对象(source)激发,下面简单的讲解下四个事件。

注:下文中的拖放对象,指在拖放状态的鼠标,而非TDragObject对象。


二、事件流程
    1、OnStartDrag(Sender: TObject; var DragObject: TDragObject);
大多数的组件具有DragMode属性, 表示拖放操作的开始方式。DragMode 属性的默认值为dmManual,也就是要在源对象的OnMouseDown 事件的处理过程中调用BeginDrag过程才开始拖放操作,因此属性值为dmManual时,不需要处理OnStartDrag事件,而代之以OnMouseDown事件(当然此情形下OnStartDrag事件还会发生)。如果将DragMode 属性设置为dmAutomatic,则鼠标左键在源对象上按下后就自动开始拖放操作,这时就可在OnStartDrag事件中进行处理。
    procedure TControl.BeginDrag(Immediate: Boolean; Threshold: Integer=-1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值