Как реализовать перетаскивание с Explorer
Пример кода:
type TForm1 = class(TForm) Memo_AttachedFiles: TMemo; procedure FormCreate(Sender: TObject); private public procedure WMDROPFILES ( var Msg: TMessage); message WM_DROPFILES; end; { ... } uses ShellAPI; procedure TForm1.WMDROPFILES(var Msg: TMessage); var i,amount,size: integer; Filename: PChar; begin inherited; Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255); for i := 0 to (Amount - 1) do begin size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; Filename:= StrAlloc(size); DragQueryFile(Msg.WParam,i , Filename, size); // Filemame содержит приложенный файл (ы) Memo_AttachedFiles.Lines.Add(StrPas(Filename)); StrDispose(Filename); end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Form1.Handle, true); end;
Комментарии