TDropper - Компонент для перетаскивания файлов
Автор: Матвеев Игорь
Все наверное знают, что существует такая технология обмена данными
как Drag&Drop (переводится как "Перетащи и брось"). Суть в том, что пользователь
может перетаскивать какие-то данные (например файлы) из одной программы в другую.
Например, в проводнике
Windows файла и группы файлов можно перетаскивать между разными
экземплярами проводника. В результате файл или группа файлов просто копируется в
место назначения, а исходные данные - удаляются.
Такая архитектура обмена данными позволяет значительно упростить работу
конечного пользователя. Например в архиваторе файлов WinRar
встроены возможности не только принимать файлы, перетащенные в окно программы, и
упаковывать их в текущий архив, но и перетаскивать файлы из архива, извлекая их
в место назначения. Эти возможности приближают работу с архивами в
WinRar к работе с обычными файлами в проводнике.
Принимать файлы легко - это сделать можно средствами
API и ShellAPI, а вот как сделать, чтобы файлы
можно было таскать из вашего приложения? Я думал над этим вопросом еще год назад
и думал что это будет легко, а недавно мне это было просто необходимо для моего
архиватора файлов.
В итоге решение было найдено - создан
компонент TDropper, который позволяет внедрять в ваши
проекты возможность перетаскивания файлов из окна вашей программы в окно
проводника Windows или другой программы.
Загрузить компонент
Работа с компонентом очень проста, вы должны установить свойство
Enabled в True и в нужное
время (в момент начала перетаскивания) вызвать метод
TDropper.StartDrag. При этом курсор мыши меняется на стрелочку с
плюсиком. А когда пользователь отпускает клавишу мыши вызывается событие
TDropper.OnDropUp, в нем вы должны вписать в список
Files имена файлов для перетаскивания.
Примечание: При работе из под Delphi, при
перетаскивании могут возникнуть ошибки, которые ловятся
Delphi, но в итоговом приложении они не обнаруживаются.
Компонент свободен для коммерческого и некоммерческого использования, а
с предложениями и пожеланиями - пишите.
|