4th february

Pascal

Delphi

VCL компоненты

CLX компоненты

Рисунки, значки, видео

Логотипы

Примеры программ

Инструменты

Статьи, примеры кода, советы

Ссылки

Примеры кода

Как использовать технологию drag'n'drop для приема файлов из Проводника?

type
  TMainForm = class(TForm)
  ...
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  ...
  private
    procedure WMDropFiles(var Msg: TWMDROPFILES); message WM_DROPFILES;
  ...
  end;

 ...
procedure TMainForm.FormCreate(Sender: TObject);
begin
{ регистрация приёмщика файлов }
  DragAcceptFiles(MainForm.WindowHandle, True);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
{ снятие регистрации приёмщика файлов }
  DragAcceptFiles(MainForm.WindowHandle, False);
end;

procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles);
var
  CFileName: array [0..MAX_PATH] of Char;
  WhichFiles: TStringList;
  I, FilesCount: Integer;
begin
  WhichFiles := TStringList.Create;
  try
    FilesCount := DragQueryFile(Msg.Drop, $FFFFFFFF, CFileName, MAX_PATH);
    for I := 0 to Pred(FilesCount) do
    begin
      if DragQueryFile(Msg.Drop, I, CFileName, MAX_PATH) > 0 then
      begin
        WhichFiles.Add(CFileName);
      end;
    end;

    if (WhichFiles.Count > 0) then
    begin
      Screen.Cursor := crHourGlass;
      for I := 0 to Pred(WhichFiles.Count) do
      begin
        { ваш код обработки списка файлов }
      end;
      Screen.Cursor := crDefault;
    end;
  finally
    DragFinish(Msg.Drop);
    WhichFiles.Free;
  end;
end;