Определение интерфейса
Желательно, чтобы перетаскивание по возможности работало так же, как стандартные события Delphi. Поскольку мы не создаем новый нестандарт ный элемент, нам не удастся определить событие OnFMDD и организовать его обработку в режиме конструирования. Придется имитировать нечто похожее во время выполнения. Для этого мы должны:
- Определить тип TFMDDEvent для обработчика события.
- Объявить обработчик OnFMDRagDrop в закрытой (private) секции формы.
- При создании формы передать адрес обработчика интерфейсу FMDD — то есть сообщить ему о том, что наша форма желает принимать брошенные файлы.
- Когда происходит событие перетаскивания (то есть в тот момент, когда форма получает сообщение WM_DROPFILES), интерфейс FMDD вызывает обработчик OnFMDragDrop и передает ему объект TDragDropInfo.
- При закрытии формы обратиться к интерфейсу FMDD и сообщить о том, что форма прекращает принимать перетаскиваемые файлы.
Описанная схема превращается в интерфейсную секцию, приведенную в листинге 3.6.