При завышении перетаскивания, вне зависимости от готовности приемника всегда возникает еще одно событие:
Code: |
property OnEndDrag: TEndDragEvent; TEndDragEvent =procedure(Sender, Target: TObject; X, Y: Integer) of object; |
Его параметры идентичны описанным выше.
Для управления перетаскиванием вручную (в режиме dmManual) есть следующие возможности. Начало перетаскивания происходит при вызове метода:
Code: |
procedure BeginDrag(Immediate: Boolean); |
Программист должен связать вызов этого метода с каким-либо событием в системе. (Если свойство DragMode установлено в dmAutomatic, BeginDrag вызывается функцией окна при нажатии левой кнопки мыши). Параметр Immediate определяет, когда именно возникает состояние Drag&Drop: в случае True немедленно, в случае False — после смещения мыши с нажатой левой кнопкой на 5 точек по любой из осей. Последний вариант дает возможность использовать нажатие левой кнопки и для перетаскивания, и для регистрации щелчков на элементе управления (скажем, на кнопке). В режиме dmAutomatic такой возможности нет. Метод:
Code: |
procedure DragDrop(DragObject: TObject; X, Y: Integer); dynamic; |
вызывает обработчик события OnDragDrop, а производит все завершающие действия метод
Code: |
procedure EndDrag(Drop: Boolean); |
Он инициирует события OnDragDrop (при возможности приема) и OnEndDrag.
Метод
Code: |
function Dragging: Boolean; |
возвращает True, если данный элемент в настоящий момент перетаскивается.
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!