Как бороться с 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)
Мне известны две библиотеки:
- Raize DropMaster: http://www.raize.com/DevTools/DropMaster/Default.asp
- Набор компонентов для перетаскивания Anders Melander: http://melander.dk/delphi/dragdrop
Перетаскивание в другое приложение (я полагаю, вы подразумеваете, что "за пределами окон") не является тривиальным.
Лучшее решение, которое я нашел, - это набор компонентов DragDrop от Anders Melander:
http://melander.dk/delphi/dragdrop