当我将一个对象拖到窗口外面时,如何处理Bl_CustomGrid-Tcx自定义网格拖放?

时间:2010-08-02 22:06:42

标签: delphi drag-and-drop devexpress delphi-2007 quantumgrid

我在窗口中有一个TcxGridDBTableView,并且dragmode设置为dmAutomatic。当我将一行拖放到另一行上方时,它可以正常工作。但是,当我将一行拖放到窗口外部时,我没有进入TcxGridDBTableView的'OnEndDrag'事件。

例:

procedure TfrmMyForm.cxGridDBTableViewEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  ShowMessage('ClassName: ' + Sender.ClassName );
end;

我正在调试它,并且我在showmessage行有一个断点,但是当我在窗口外面放一行时,程序不会停在该行。

我正在使用快速量子网格来实现它。

2 个答案:

答案 0 :(得分:0)

拖放到另一个应用程序(我认为你的意思是“窗外”)不是一件容易的事。
我找到的最佳解决方案是Anders Melander的DragDrop组件套件:
http://melander.dk/delphi/dragdrop

答案 1 :(得分:0)

假设“窗口”是指应用程序窗口,这是因为控件实现的拖放操作仅适用于应用程序中的拖放操作。对于从一个应用程序拖放到另一个应用程序,您需要使用OLE拖放操作。要么自己实现(不是太难),要么使用库。

关于OLE drag-n-drop的MSDN文档非常好。阅读的起点:Data Transfer (COM)

我知道的两个库: