| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Drag-Drop из ListView в File Manager |
| Автор: Teran 3.8.2006, 19:14 |
| не подскажите как можно реализовать Drag-Drop из ListView в File Manager Допустим у меня в ListView имеется список файлов как можно реализовать "перетаскивание" их в Exsplorer ? т.е. мне необходимо узнать место куда эти файлы будут копироваться? |
| Автор: Alexeis 3.8.2006, 23:49 | ||||
Для этого есть специальный компонентик называется TDropper
Прикрепляю архив |
| Автор: Teran 4.8.2006, 08:56 |
| Спасибо за компонент но он все делает автоматически, но мне нужно не копировать а производить определенные действия связанные путем. Можно ли отдельно получить путь куда будут скопированы файлы? |
| Автор: Snowy 4.8.2006, 09:12 |
| http://forum.vingrad.ru/index.php?showtopic=84137 |
| Автор: Teran 4.8.2006, 10:27 |
Snowy если не трудно приципи пожалуйста компонент который ты нашел, а то что-то я или не тот взял или он не ставится у меня |
| Автор: Snowy 4.8.2006, 10:40 |
| Распакуй куда-нить. Открой дельфи. Скажи "Установить компонент" и выдели все файлы в папке Components. Появится новая закладка "Drag&Drop" - все компоненты там. Добавлено @ 10:41 Справка и примеры тамже в комплекте. |
| Автор: Teran 4.8.2006, 11:42 |
| Все действия вешаются только н асобытия ListView1MouseDown и ListView1MouseMove, а вто где создавать TDropFileSource динамически? |
| Автор: Snowy 4.8.2006, 11:50 |
| В примере, который я рисовал по вышеприведённой ссылке, ставить создание треда нужно вместо DropFileSource1.Files.Clear. А уже при создании треда создавай и заполняй источник. При умирании треда соответственно его убивай. |
| Автор: Teran 4.8.2006, 11:57 |
но если мы будем создавать поток в ListView1MouseMove, то будет большая трата ресурсов т.к. все содание и уничтожение будет происходить сильно часто(при движении мыши).... или не прав?? |
| Автор: Snowy 4.8.2006, 12:06 |
| Нет, эта часть кода работает уже только в том случае, если мы куда-то потащили наши итемы. Если просто возюкать мышью, то до туда не доходит - см. первые 2 условия. |
| Автор: Teran 4.8.2006, 12:25 | ||||
вот изменил твой пример но чтото не работает:
и сам поток:
программа доходит до строки DropFileSource1.Files.clear; в TMyThread.Execute; и все.... (похоже что её тоже не выполняет) |
| Автор: Teran 4.8.2006, 13:06 |
| я думаю что Программа не прорабатывает конструктор потока и не выполняет DropFileSource1:=TDropFileSource.Create но что тут не правильного не понимаю?? |
| Автор: Snowy 4.8.2006, 13:39 |
| Нда уж... Я уже тоже всё перепробовал. С тредом ничего не выйдет. Операция драгндропа слишком синхронная. Асинхронность хоть и напрашивается, но... Никак. |
| Автор: Teran 4.8.2006, 14:29 |
жаль конечно, ну неочень (меньше мороки будет) Snowy Огромное спасибо за помощь |
| Автор: Snowy 4.8.2006, 14:41 |
| Всегда пожалуйста. Я пока тоже с ним воевал, получился небольшой пример именно не с готовыми файлами, а с пока не существующими. В примере сделал просто файлы размером 100 метров, забитые символом 'S', но можно заменить этот кусок на распаковку и т.п. Приклеиваю проектик. |