Aunque ya se ha respondido, te amplio algo que yo utilizo, por si te esclarece más, que yo la primera vez me costó un poco:
Por ejemplo, para que el receptor del drag-and-drop sea un tmemo en tu form, puedes ampliar la clase TMemo con
Código Delphi
[-]
type
TMemo = class(Vcl.StdCtrls.TMemo) protected
procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
procedure CreateWnd; override;
procedure DestroyWnd; override;
end;
y estos metodos escribirlos:
Código Delphi
[-]
{$REGION 'Memo'}
procedure TMemo.CreateWnd;
begin
inherited;
DragAcceptFiles(Handle, true);
end;
procedure TMemo.DestroyWnd;
begin
DragAcceptFiles(Handle, false);
inherited;
end;
procedure TMemo.WMDropFiles(var Message: TWMDropFiles);
var
numfichs: integer;
fn: array[0..MAX_PATH-1] of char;
nomfichero,extension:string;
begin
numfichs := DragQueryFile(Message.Drop, $FFFFFFFF, fn, MAX_PATH);
if numfichs <> 1 then
begin
MessageBox(Handle, 'Solo un fichero.', 'Error descarga', MB_ICONERROR);
Exit;
end;
if DragQueryFile(Message.Drop, 0, fn, MAX_PATH) = 0 then
Exit;
nomfichero := fn; end;
{$ENDREGION 'Memo'}
con esto, cualquier tmemo que incluyas en tu form podra ser receptor de drag and drop, por ejemplo para cargar en el el contenido del fichero si es de tipo texto.
Tambien podrías cambiarlo para aplicarlo sobre un tedit y que el receptor fuera el tedit....