Как перетащить файлы на форму из Проводника 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.
Форма может принимать файлы.
Комментарии