Внешний вид сайта:

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

В приложениях Windows часто используются операции перетаскивания файлов(Drag&Drop). При работе с Проводником Windows, Вы можете перемещать, копировать и даже удалять файлы. Как же реализовать это в нашем приложении?

Перетаскивание (Drag and Drop файлов на форму из Проводника 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.

Форма может принимать файлы.

Комментарии

Нет комментариев. Ваш будет первым!