2010-08-02 33 views
1

我在窗口中有一個TcxGridDBTableView,並且dragmode被設置爲dmAutomatic。當我將一行拖放到另一行上時,它工作正常。但是,當我拖放一行到窗口外,我沒有去到TcxGridDBTableView的'OnEndDrag'事件。如何處理TcxCustomGrid-TcxCustomGrid將對象拖動到窗口外部時拖放?

例:

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

我debuggin它,我已經在showmessage線斷點,但是當我把窗戶外面一排,程序不在該行停止。

我正在使用快速量子網格來實現它。

回答

0

拖放到另一個應用程序(我假設你的意思是「窗外」)不是微不足道的。
我發現最好的解決辦法是安德斯·梅蘭德的的DragDrop組件套件:
http://melander.dk/delphi/dragdrop

+0

我很欣賞的答案。但也許我的問題比看起來更簡單。我只需要一個標誌,通知我拖放操作是否成功完成。因爲我需要撤消我在拖放時沒有被接受的情況下所做的更改,例如,在拖動一行到Windows應用程序外部的情況下。 對不起,我英語不好。 – Haruki 2010-08-03 12:18:14

0

假設通過「窗口」你指的是應用程序窗口,這是因爲通過控制實施拖N - 下降是拖累只在應用程序內進行。對於從一個應用程序拖放到另一個應用程序,您需要使用OLE拖放操作。要麼自己實施(這不是太難),或者通過使用庫。

有關OLE拖放的MSDN文檔非常好。起點閱讀:Data Transfer (COM)

兩個圖書館,我意識到:

+0

我很欣賞答案。但也許我的問題比看起來更簡單。我只需要一個標誌,通知我拖放操作是否成功完成。因爲我需要撤消我在拖放時沒有被接受的情況下所做的更改,例如,在拖動一行到Windows應用程序外部的情況下。 對不起,我英語不好。 – Haruki 2010-08-03 12:17:38