|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Drag&Drop виртуальной папки в проводник
Здравствуйте, ситуация следующая:
написал на delphi+synapse свой ftp-клиент мечты всё бы ок, но застрял на такой проблеме: как перетащить виртуальную папку (папку с ftp-сервера) в проводник со всеми её файлами внутри? с переносом самих файлов проблем нет, нужно именно перетягиванием вытащить папку со всем её содержимым. хотелось бы увидеть рабочий код, и желательно с пояснениями. Сам я для переноса в проводник пользовался компонентом FWOleDragDrop http://rouse.drkb.ru/files/fwoledragdrop.zip Из коллекции Rouse (http://rouse.drkb.ru/winapi.php) |
#2
|
||||
|
||||
Делается это рекурсивным (или не очень) обходом папки на сервере и вытягиванием файлов.
Код не дам, жди филантропов, либо сам догадаешься как это сделать. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Цитата:
у меня сейчас всё упирается в виртуальную папку (IShellFolder) когда идёт перенос с сервера (через клиент) в проводник, как в виртуальную папку вложить файлы? из того что у меня получилось это перенос пустой папки, а файлы оказывались не внутри этой папки а снаружи. не понимаю я этих хитросплетений OLE и Ishellfolder вот в чём загвоздка по сути Последний раз редактировалось r302coder, 21.11.2016 в 09:48. |
#4
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Цитата:
то что она не учитывается это понятно, в этом и вопрос как это дело связать (виртуальную папку с виртуальными файлами), чтобы файлы транслировались в дропнутую папку. я просто не силён в OLE API и всё что связанно с IDataObject, IShellFolder ... и т.д. Цитата:
на счёт кода, c компонентом http://rouse.drkb.ru/files/fwoledragdrop.zip в комплекте идёт пример dropsource , там показывается пример с перетаскиванием виртуальных файлов из ресурсов программы. примера с папкой нет, единственное что нашёл в коде самого компонента это Код:
procedure TFWDataObject.AddFolder(const FileName: string); var Descriptor: TFileDescriptor; j:integer; begin ZeroMemory(@Descriptor, SizeOf(TFileDescriptor)); Descriptor.dwFlags := FD_ATTRIBUTES; Descriptor.dwFileAttributes := FILE_ATTRIBUTE_DIRECTORY; Move(FileName[1], Descriptor.cFileName[0], Length(FileName) * SizeOf(Char)); AddDescriptor(Descriptor); end; Так вот, папку то получается создать, а как в это дело файлы транслировать не представляю. Сам TFWDataObject это типа надстройка над оригинальным IDataObject. TFWDataObject = class(TInterfacedObject, IDataObject) Последний раз редактировалось r302coder, 21.11.2016 в 17:42. |
#6
|
||||
|
||||
Так это ведь всё из примеров, а должно из "...у меня получилось это перенос пустой папки, а файлы оказывались не внутри этой папки а снаружи...", как это вы организовали, за раз такое происходит или в цикле, поштучно - конкретика, это куда и когда новый кусок пути с папкой засунуть, а на свой лисапет варганить жалко времени
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
всё нашёл куда копать, с мёртвой точки сдвинулся,
спасибо что откликнулись Последний раз редактировалось r302coder, 21.11.2016 в 22:26. |