Windows中的拖放功能大家一定很熟悉了,如文件的轉移,拷貝等操作用鼠標輕輕一拖即可,在編寫程序中有時也用到拖放,那麼如何實現呢?現以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表示是否接受拖放的對象。