Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2007, 11:41   #1
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию Перетасчить кучу файлов

Вот какой вопрос, я могу сделать, чтобы перетаскивать на форму по одному файлу, НО неполучается выделить много файлов и перетасчить на форму, причём чтобы все файлы по очереди обработались?

Вот код перетаскивания "по одному":

Код:
  protected
   procedure WMDropFiles (var Msg: TMessage); message wm_DropFiles;
Код:
procedure TForm2.WMDropFiles(var Msg: TMessage);
var
FileName: array[0..256] of char;
i:integer;
my_key:integer;
sDecrypted,s,s1:String;
begin
DragQueryFile(THandle(Msg.WParam), 0, FileName, SizeOf(Filename));
{Обрабатываем перетаскиваемый файл}
kol:= kol+1;
s1:=Panel1.Caption;
Panel1.Caption:=Copy(s1,0,Pos('(',s1))+IntToStr(kol)+')';
{Обработка закончена}
DragFinish(THandle(Msg.WParam));
end;

Чего нехватает?
Nez вне форума Ответить с цитированием
Старый 17.03.2007, 17:44   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

По событию OnMouseDown выбираем все заранее выделенные файлы, например, в TStrings (или TListBox), "драгим" их, а процедуру WMDropFiles доделываем, чтобы она обрабатывала этот список, а не один-единственный файл. Вот и все...
mihali4 вне форума Ответить с цитированием
Старый 18.03.2007, 03:39   #3
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Дело в том, что там перетаскиваются файлы из проводника.. То есть реальные файы, а не из ListBox-ов...
Nez вне форума Ответить с цитированием
Старый 18.03.2007, 19:08   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
procedure TForm1.WMDropFiles(var msg : TMessage);
var
  i, n  : word;
  size  : word;
  fname : string; 
  hdrop : word;
begin
  {1. Получаем хэндл для drop.}
  hdrop := msg.WParam;
  {2. Определяем кол-во файлов для drop.}
  n := DragQueryFile(hdrop, $ffff, nil, 0);
  {3. В цикле читаем имена файлов с путями.}
  for i := 0 to (n - 1) do begin
    {4. Определяем размер файла.}
    size := DragQueryFile(hdrop, i, nil, 0);
    {5. Длина имени не более 255 символов}
    if size < 255 then begin
      fname[0] := Chr(size);
      {6. Берем следующий файл.}
      DragQueryFile(hdrop, i, @fname[1], size + 1);
      {и повторяем все для оставшихся файлов}
    end;
  end;
  {7. Признак завершения - ноль.}
  msg.Result := 0;
  {8. Передаем управление "родному" обработчику.}
  inherited;
end;

Последний раз редактировалось rpy3uH; 27.01.2009 в 11:56.
mihali4 вне форума Ответить с цитированием
Старый 20.03.2007, 06:56   #5
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Вот как-то непонятно, а как у меня будут отдельно все файлы то обрабатываться? то есть единственное что я могу сделать в данном случае, так это "успевать" записывать пути к файлам в Memo к примеру и потом по очереди обрабатывать?

А вот можно просто вставить в мой листинг
Код:
  n := DragQueryFile(hdrop, $ffff, nil, 0);
  for i := 0 to (n - 1) do begin
    size := DragQueryFile(hdrop, i, nil, 0);
    if size < 255 then begin
      fname[0] := Chr(size);
      DragQueryFile(hdrop, i, @fname[1], size + 1);
end;

{Вот здесь делать описание фалй, где файл: @fname - массив (256) типа char}

end;

Ну и End процедуры
???
Nez вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
Копирование файлов Artificial Помощь студентам 5 05.06.2008 18:42
Печать pdf файлов из списка файлов в Excel АПС Microsoft Office Excel 5 15.04.2008 16:04
обработчики в кучу CyberMerlin Общие вопросы Delphi 15 15.08.2007 13:42