Как перетащить файлы на форму из Проводника Windows

Чтобы формы могла принимать файлы, требуется вызов процедуры DragAcceptFiles. Затем нужно обработать сообщение WM_DROPFILES.
Для примера поместите на форму компонент TMemo (Memo1). В нем мы будем выводить имена файлов, которые мы перетащили на форму. Далее запишите следующий код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ShellApi;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMDropFiles(
var Msg: TWMDropFiles); message WM_DROPFILES;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
{ Готовим форму принимать файлы }
DragAcceptFiles(Handle, true);
Memo1.Clear;
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
const
MAXFILENAME = 255;
var
i: integer;
fileCount: integer;
fileName: array [0..MAXFILENAME] of Char;
begin
{ Сколько файлов перетаскивать }
fileCount:= DragQueryFile(
Msg.Drop, $FFFFFFFF, fileName, MAXFILENAME);
{ Связываем с именами файлов }
for i:= 0 to fileCount - 1 do
begin
DragQueryFile(Msg.Drop, i, fileName, MAXFILENAME);
{ перечисляем все файлы }
Memo1.Lines.Insert(0, fileName);
end;
{ Освобождаем память }
DragFinish(Msg.Drop);
end;
end.
Форма может принимать файлы.
Комментарии