Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag-Drop из ListView в File Manager, Как реализовать? 
V
    Опции темы
Teran
  Дата 3.8.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



не подскажите как можно реализовать Drag-Drop из ListView в File Manager
Допустим у меня в ListView имеется список файлов как можно реализовать "перетаскивание" их в Exsplorer ?
т.е. мне необходимо узнать место куда эти файлы будут копироваться?
 smile  smile  smile 


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Alexeis
Дата 3.8.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Для этого есть специальный компонентик называется TDropper

Цитата

  TDropper - это компонент, который позволит Вам       ]
[ сделать возможным перетаскивание файлов из Вашего      ]
[ приложения в проводник Windows и другие программы, как ]
[ это делает WinRAR.   


Цитата

  В момент, когда необходимо начать процесс          
перетаскивания, вызовите метод TDropper.StartDrop, а 
в событии TDropper.OnDropUp в списке Files, укажите  
файлы для перетаскивания (Файлв должны существовать).
  Событие TDropper.OnDropUp происходит когда         
пользователь отпускает кнопку.     


Прикрепляю архив


Это сообщение отредактировал(а) alexeis1 - 3.8.2006, 23:49

Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  tdropper.zip 6,54 Kb


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Teran
Дата 4.8.2006, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Спасибо за компонент но он все делает автоматически, но мне нужно не копировать а производить определенные действия связанные путем. Можно ли отдельно получить путь куда будут скопированы файлы?


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Snowy
Дата 4.8.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



PM MAIL   Вверх
Teran
Дата 4.8.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(Snowy @  4.8.2006,  09:12 Найти цитируемый пост)
index.php?showtopic=84137 


Snowy если не трудно приципи пожалуйста компонент который ты нашел, а то что-то я или не тот взял или он не ставится у меня



--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Snowy
Дата 4.8.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Распакуй куда-нить.
Открой дельфи. Скажи "Установить компонент" и выдели все файлы в папке Components.
Появится новая закладка "Drag&Drop" - все компоненты там.

Добавлено @ 10:41 
Справка и примеры тамже в комплекте.

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  DragDrop.zip 189,31 Kb
PM MAIL   Вверх
Teran
Дата 4.8.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



пасибо все поставилось 
еще не подскажеш в каком месте нужно делать create TDropFileSource 
Цитата(Snowy @  22.2.2006,  14:51 Найти цитируемый пост)
Добавлено @ 15:00 
Я тут еще подумал. Еще логичней будет создавать TDropFileSource динамически.
Тогда ты сможешь спокойно перетаскивать файлы еще раз, в то время, пока предыдущая операция по перетаскиванию продолжает работать в фоне.

 smile  smile  smile 



--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Teran
Дата 4.8.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Все действия вешаются только н асобытия ListView1MouseDown и ListView1MouseMove, а вто где создавать TDropFileSource динамически?


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Snowy
Дата 4.8.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



В примере, который я рисовал по вышеприведённой ссылке, ставить создание треда нужно вместо DropFileSource1.Files.Clear.
А уже при создании треда создавай и заполняй источник.
При умирании треда соответственно его убивай.
PM MAIL   Вверх
Teran
Дата 4.8.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(Snowy @  4.8.2006,  11:50 Найти цитируемый пост)
создание треда нужно вместо DropFileSource1.Files.Clear

но если мы будем создавать поток в ListView1MouseMove, то будет большая трата ресурсов т.к. все содание и уничтожение будет происходить сильно часто(при движении мыши)....
или не прав??


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Snowy
Дата 4.8.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Нет, эта часть кода работает уже только в том случае, если мы куда-то потащили наши итемы.
Если просто возюкать мышью, то до туда не доходит - см. первые 2 условия.
PM MAIL   Вверх
Teran
Дата 4.8.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



вот изменил твой пример но чтото не работает:
Код

......
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i: integer;
  MyThread: TMyThread;
begin
  //Make sure mouse has moved at least 10 pixels before starting drag ...
  if (DragPoint.X = -1) or ((Shift <> [ssLeft]) and (Shift <> [ssRight])) or
     ((abs(DragPoint.X - X) <10) and (abs(DragPoint.Y - Y) <10)) then exit;
  //If no files selected then exit...
  if Listview1.SelCount = 0 then exit;

  MyThread:=TMyThread.Create(false);
end;

и сам поток:
Код

unit Unit1;

interface

uses
  Classes,Windows,DropSource;

type
  TMyThread = class(TThread)
  private
    DragPoint: TPoint;
    DropFileSource1: TDropFileSource;
    { Private declarations }
  protected
    constructor Create(CreateSuspended: Boolean);
    destructor Destroy;
    procedure Execute; override;
  end;

implementation

uses Main;

{ MyThread }
constructor TMyThread.Create(CreateSuspended: Boolean);
begin
DropFileSource1:=TDropFileSource.Create(Form1.ListView1);
inherited Create(CreateSuspended);
end;

destructor TMyThread.Destroy;
begin
DropFileSource1.Free;
inherited;
end;

procedure TMyThread.Execute;
var
  i: integer;
begin
  FreeOnTerminate:= true;

  //Delete anything from a previous dragdrop...
  DropFileSource1.Files.clear;

  //Fill DropSource1.Files with selected files in ListView1
  for i := 0 to Form1.Listview1.items.Count-1 do
    if (Form1.Listview1.items.item[i].Selected) then
      DropFileSource1.Files.Add(Form1.Listview1.items.item[i].caption);

  //Start the dragdrop...
  //Note: DropFileSource1.DragTypes = [dtCopy]
  DropFileSource1.execute;
  { Place thread code here }
end;
end.

программа доходит до строки DropFileSource1.Files.clear;
 в TMyThread.Execute; и все.... (похоже что её тоже не выполняет)



--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Teran
Дата 4.8.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



я думаю что Программа не прорабатывает конструктор потока и не выполняет DropFileSource1:=TDropFileSource.Create 
но что тут не правильного не понимаю??


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Snowy
Дата 4.8.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Нда уж...
Я уже тоже всё перепробовал.
С тредом ничего не выйдет.
Операция драгндропа слишком синхронная.
Асинхронность хоть и напрашивается, но... Никак.
PM MAIL   Вверх
Teran
Дата 4.8.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(Snowy @  4.8.2006,  13:39 Найти цитируемый пост)
С тредом ничего не выйдет.

жаль конечно, ну неочень (меньше мороки будет)

Snowy Огромное спасибо за помощь


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1008 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.