Классическое перетаскивание
Дневник №16, 19 марта. То, что выглядит самым простым, порой оказывается очень сложным. С другой стороны, иногда бывает и наоборот. По крайней мере это справедливо для внутренних 1 операций перетаскивания в приложениях Delphi.
Во время работы над приложением мне захотелось выделить объект и связать его с определенной датой, перетаскивая и бросая его на календарь, расположенный на той же форме. Сначала я выяснил, что для этого требуется.
Оказалось, любая операция перетаскивания начинается с четырех предвари тельных действий:
- Инициализация метода BeginDrag исходного компонента (источника), выполняемая при обработке событий мыши, происходящих в зоне этого компонента.
- Создание обработчика события OnDragOver
компонента-приемника, чтобы указать, в каком месте допускается сбрасывание перетаскиваемого объекта.
- Создание обработчика события OnDragDrop
компонента-приемника, чтобы определить, какие действия должны выполняться при сбрасывании перетаскиваемого объекта.
- Создание обработчика события OnDragEnd
компонента-источника. Если три предыдущих шага необходимы для любой операции перетаскивания, последний шаг выполняется лишь в том случае, если при завершении перетаскивания в исходном компоненте необходимо «убрать мусор» (это событие происходит даже при отмене перетаскивания).
Содержание раздела