указатель появился над компонентом; dsDragLeave
type TDragState = (dsDragEnter, dsDragLeave, dsDragMove);
dsDragEnter — указатель появился над компонентом; dsDragLeave — указатель покинул компонент; dsDragMove — указатель перемещается по компоненту.
Приемник должен предусматривать выполнение некоторых действий в случае, если источник завершит перенос именно на нем. Для этого используется метод-обработчик
type TDragDropEvent = procedure(Sender, Source: TObject; X, Y: Integer)
of object;
property OnDragDrop: TDragDropEvent;
который вызывается при отпускании левой кнопки мыши на компоненте-приемнике. Доступ к источнику и приемнику обеспечивают параметры Source и Sender соответственно. Координаты мыши возвращают параметры X и Y.
При завершении переноса элемент управления — источник — получает соответствующее сообщение, которое обрабатывается методом
type TEndDragEvent = procedure(Sender, Target: TObject; X, Y: Integer)
of object;
property OnEndDrag: TEndDragEvent;
Источник и приемник определяются параметрами Sender и Target соответственно. Координаты мыши определяются параметрами X и Y.
Для программной остановки переноса можно использовать метод EndDrag источника (при обычном завершении операции пользователем он не используется):
procedure EndDrag(Drop: Boolean);
Параметр Drop = True завершает перенос. Значение False прерывает перенос.
Теперь настало время закрепить полученные знания на практике. Рассмотрим небольшой пример. В проекте DemoDragDrop на основе механизма Drag-and-Drop реализована передача текста между текстовыми редакторами и перемещение панелей по форме (рис. 27.1).
Рис. 27.1. Главная форма проекта DemoDragDrop
Листинг 27.1. Секция implementation модуля главной формы проекта DemoDragDrop
implementation
{$R *.DFM)
procedure TMainForm.EditlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, У: Integer);
begin if Button = mbLeft
then TEdit(Sender).BeginDrag(True);
end;
procedure TMainForm.Edit2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий