Как бороться с TcxCustomGrid-TcxCustomGrid Drag and Drop, когда я перетаскиваю объект за пределы окна?

У меня есть TcxGridDBTableView в окне, а режим перетаскивания установлен на dmAutomatic. Когда я перетаскиваю ряд над другим, он работает нормально. Но когда я перетаскиваю строку наружу окна, я не получаю событие TcxGridDBTableView'OnEndDrag'.

Напр.:

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

Я отлаживаю его, и у меня есть точка останова на строке showmessage, но когда я опускаю строку за пределы окна, программа не останавливается на этой строке.

Я использую экспресс квантовую сетку для реализации этого.

2 ответа

Предполагая, что под "окном" вы подразумеваете окно приложения, то есть потому, что перетаскивание, реализованное элементами управления, предназначено только для перетаскивания внутри приложения. Для перетаскивания из одного приложения в другое необходимо использовать OLE drag-n-drop. Либо реализовано самостоятельно (это не так уж сложно), либо с помощью библиотеки.

Документация MSDN по OLE drag-n-drop довольно хороша. Начальная точка для чтения: передача данных (COM)

Мне известны две библиотеки:

Перетаскивание в другое приложение (я полагаю, вы подразумеваете, что "за пределами окон") не является тривиальным.
Лучшее решение, которое я нашел, - это набор компонентов DragDrop от Anders Melander:
http://melander.dk/delphi/dragdrop

Другие вопросы по тегам