Как принять файлы, брошенные на мою форму по drag & drop в Delphi?

Нужно сообщить Windows, что ваша форма принимает файлы по drag & drop с помощью функции Shell API DragAcceptFiles.(в обработчике события form create) Затем нужно реагировать на события drag & drop чтобы принять файлы.

unit Unit1; 
  
interface
  
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 
  
type
  TForm1 = class(TForm) 
    Memo1: TMemo; 
    procedure FormCreate(Sender: TObject); 
  private
    procedure WMDROPFILES(var Message: TWMDROPFILES); 
    message WM_DROPFILES; 
  { Private declarations }
  public
  { Public declarations }
end; 
 
var
  Form1: TForm1; 
  
implementation
  
{$R *.DFM}
  
uses ShellApi; 
  
procedure TForm1.FormCreate(Sender: TObject); 
begin
  {Let Windows know we accept dropped files}
  DragAcceptFiles(Form1.Handle, True); 
end; 
  
procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES); 
var
  NumFiles : longint; 
  i : longint; 
  buffer : array[0..255] of char; 
begin
  {How many files are being dropped}
  NumFiles := DragQueryFile(Message.Drop,-1,nil,0); 
  {Accept the dropped files}
  for i := 0 to (NumFiles - 1) do
  begin
    DragQueryFile(Message.Drop,i,@buffer,sizeof(buffer)); 
    Form1.Memo1.Lines.Add(buffer); 
  end; 
end; 
  
end. 
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (11 оценок, среднее: 5,00 из 5)
Загрузка...
Добавить комментарий