Delphi для всех

Реализовать "перетаскивание" файлов

В Windows распространен механизм "перетаскивания" файлов мышью . Этот пример добавляет в список имена файлов, перенесенных в программу.

Функция DragAcceptFiles разрешает или запрещает переносить файлы в вашу программу, DragQueryFile(HF, $FFFFFFFF, nil, 0) возвращает количество файлов, а DragQueryFile(HF, i, s, 1024) возвращает имя файла номер i.

...
procedure WMDropFiles(var Msg: TWMDropFiles); // добавте эту строчку
message WM_DROPFILES; // добавте эту строчку
private
...
uses ShellAPI;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
HF: THandle;
s: array [0..1023] of char;
i, FileCount: integer;
begin
HF := Msg.Drop;
FileCount := DragQueryFile(HF, $FFFFFFFF, nil, 0);
for i := 0 to FileCount - 1 do begin
DragQueryFile(HF, i, s, 1024);
if FileExists(s)
then ListBox1.Items.Add(s)
else ListBox1.Items.Add(s + ' - error');
end;
DragFinish(HF);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, true);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, false);
end;

Хостинг от uCoz