Учись программированию на C++ Builder бесплатно!

Описание


Событие OnDragOver начинается в момент, когда перетаскиваемый объект пересек границу данного компонента и оказался внутри его контура. Заканчивается событие, когда объект, покидая компонент, пересек его границу. Обработчик события OnDragOver используется для того, чтобы дать сигнал о готовности компонента принять перетаскиваемый объект в случае, если пользователь отпустит его над данным компонентом. Если компонент готов принять объект, в обработчике надо задать значение параметра Accept, равное true. Впрочем, это значение по умолчанию равно true, так что его можно не задавать. Вообще в предельном случае обработчик может быть пустым, что будет означать готовность компонента принять любой объект. Но даже пустой обработчик нужен, так как иначе сообщения о приеме компонента приложение не получит.

Во время перетаскивания над компонентом объекта, который может быть принят, форма курсора мыши может изменяться, сигнализируя пользователю о готовности компонента принять объект. Чтобы это было так, надо до момента события OnDragOver (а обычно - во время проектирования) задать соответствующее значение свойства компонента DragCursor.

Параметр Source определяет перетаскиваемый объект, параметр Sender - сам компонент, параметры X и Y - координаты точки экрана в пикселах. Параметр State типа TDragState определяет состояние перетаскиваемого объекта по отношению к другим объектам.

Классы


TControl

Определение


typedef void (__closure *TDragOverEvent)(System::TObject* Sender, System::TObject* Source, int X, int Y, TDragState State, bool &Accept);
__property TDragOverEvent OnDragOver

Таблица состояния:

Значение Описание
dsDragEnter Курсор мыши входит в пределы компонента.
dsDragMove Курсор мыши перемещается в пределах компонента.
dsDragLeave Курсор мыши выходит за пределы компонента.

Пример


Обработчик события OnDragOver сигнализирует о том, что компонент готов принять перетаскиваемый объект, если это компонент ListBox1.

void __fastcall TForm1::ListBox1DragOver (TObject *Sender,TObject *Source, int X, int Y, TDragState State, bool SAccept)
{
Accept = (((TControl*)Sender)->Name == "ListBox1");
}

Поиск по сайту