Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.11.2016, 06:56
r302coder r302coder вне форума
Прохожий
 
Регистрация: 10.02.2015
Сообщения: 4
Версия Delphi: 7,2009
Репутация: 10
Восклицание Drag&Drop виртуальной папки в проводник

Здравствуйте, ситуация следующая:
написал на delphi+synapse свой ftp-клиент мечты
всё бы ок, но застрял на такой проблеме:

как перетащить виртуальную папку (папку с ftp-сервера) в проводник со всеми её файлами внутри?

с переносом самих файлов проблем нет, нужно именно перетягиванием вытащить папку со всем её содержимым.
хотелось бы увидеть рабочий код, и желательно с пояснениями.

Сам я для переноса в проводник пользовался компонентом FWOleDragDrop http://rouse.drkb.ru/files/fwoledragdrop.zip
Из коллекции Rouse (http://rouse.drkb.ru/winapi.php)
Ответить с цитированием
  #2  
Старый 21.11.2016, 09:00
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Делается это рекурсивным (или не очень) обходом папки на сервере и вытягиванием файлов.
Код не дам, жди филантропов, либо сам догадаешься как это сделать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 21.11.2016, 09:44
r302coder r302coder вне форума
Прохожий
 
Регистрация: 10.02.2015
Сообщения: 4
Версия Delphi: 7,2009
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Делается это рекурсивным (или не очень) обходом папки на сервере и вытягиванием файлов.
Код не дам, жди филантропов, либо сам догадаешься как это сделать.
да с рекурсией то проблем нет,я же drag&drop из проводника на сервер реализовал полностью (и фалов и папок),
у меня сейчас всё упирается в виртуальную папку (IShellFolder) когда идёт перенос с сервера (через клиент) в проводник,
как в виртуальную папку вложить файлы?
из того что у меня получилось это перенос пустой папки, а файлы оказывались не внутри этой папки а снаружи.
не понимаю я этих хитросплетений OLE и Ishellfolder вот в чём загвоздка по сути

Последний раз редактировалось r302coder, 21.11.2016 в 09:48.
Ответить с цитированием
  #4  
Старый 21.11.2016, 13:39
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от r302coder
...из того что у меня получилось это перенос пустой папки, а файлы оказывались не внутри этой папки а снаружи...
После создания директории на диске она видимо не учитывается в пути до перетягиваемых файлов, поскольку при получении папка для проводника выглядит только как нулевой файл с меткой папки - похоже ещё нужно добавлять её имя перед именем файла или может перейти в неё, без примера кода процедуры перетаскивания конкретики не видно
Ответить с цитированием
  #5  
Старый 21.11.2016, 17:36
r302coder r302coder вне форума
Прохожий
 
Регистрация: 10.02.2015
Сообщения: 4
Версия Delphi: 7,2009
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
После создания директории на диске она видимо не учитывается в пути до перетягиваемых файлов, поскольку при получении папка для проводника выглядит только как нулевой файл с меткой папки - похоже ещё нужно добавлять её имя перед именем файла или может перейти в неё

то что она не учитывается это понятно,
в этом и вопрос как это дело связать (виртуальную папку с виртуальными файлами), чтобы файлы транслировались в дропнутую папку.
я просто не силён в OLE API и всё что связанно с IDataObject, IShellFolder ... и т.д.

Цитата:
Сообщение от Alegun
без примера кода процедуры перетаскивания конкретики не видно

на счёт кода, 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  
Старый 21.11.2016, 19:14
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Так это ведь всё из примеров, а должно из "...у меня получилось это перенос пустой папки, а файлы оказывались не внутри этой папки а снаружи...", как это вы организовали, за раз такое происходит или в цикле, поштучно - конкретика, это куда и когда новый кусок пути с папкой засунуть, а на свой лисапет варганить жалко времени
Ответить с цитированием
  #7  
Старый 21.11.2016, 22:24
r302coder r302coder вне форума
Прохожий
 
Регистрация: 10.02.2015
Сообщения: 4
Версия Delphi: 7,2009
Репутация: 10
По умолчанию

всё нашёл куда копать, с мёртвой точки сдвинулся,
спасибо что откликнулись

Последний раз редактировалось r302coder, 21.11.2016 в 22:26.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter