首页 / 软件开发 / C++ / C++ Builder中实现拖放功能
C++ Builder中实现拖放功能2008-01-05Windows中的拖放功能大家一定很熟悉了,如文件的转移,拷贝等操作用鼠标轻轻一拖即可,在编写程序中有时也用到拖放,那么如何实现呢?现以C++ Builder5(简称CB5)为例,分析拖放功能的具体实现。一.工具条的拖放---- 要实现拖放功能,首先必须了解几个与拖放有关的属性和方法, 对于TControl控件,CB5提供了三个属性,DockSite,DragKind和DragMode。灵活运用这三个属性会得到意想不到的效果。这三个属性的意义是:---- DockSite:指定当前控件是否接受Drag-and-Dock类型的操作---- DragKind:拖放种类,分为dkDrag和dkDock两种---- DragMode:拖放模式,分为自动和手动模式两种---- 其中Dock操作是指某控件脱离它的Parent,转而成为另一个控件的Child,也就是两个控件合并。若某一控件的DockSite为True,表明它接受执行Dock操作的某控件,并成为它的Parent。---- 著名的工具条可以随意拖放,其实实现起来很简单:在Form上放一CoolBar控件,再在CoolBar控件上随意放几个ToolBar控件,它们的属性设置代码如下:CoolBar1.DockSite=true;ToolBar1.DragKind=dkDock;ToolBar1.DragMode= dmAutomatic;---- 其它ToolBar的属性设置与ToolBar1的属性设置相同,编译运行程序,拖动工具条试试,Cool极了吧。二、任何两上控件间的拖放---- 与此操作有关的几个函数有:---- BeginDrag:开始执行拖放操作,如果控件的DragMode为dmManual,则必须调用此函数,如果DragMode为dmAutomatic,则不用调用。---- OnDragOver:当被拖放的对象经过此控件时触发此事件,其中的参数Accept表示是否接受拖放的对象。