delphi 实现拖拽打开文件

步骤如下,delphi 7测试通过

1、在uses 中增加 ShellAPI
2、增加拖拽的消息处理函数
  1.   //声明
  2.   protected
  3.     procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;
  4. //实现
  5. procedure TForm1.WMDROPFILES(var Msg: TMessage);
  6. var a : Integer;
  7.    Buffer: Array[0..255of Char;
  8. begin
  9.   a := DragQueryFile(Msg.wParam, $FFFFFFFF, Buffer, 255);
  10.   for a := 0 to a - 1 do begin    //处理选择多个文件
  11.      DragQueryFile(Msg.wParam, a, Buffer, 255);
  12.      //文件名就在Buffer里面了,
  13.      ShowMessage(Buffer);
  14.   end;
  15.   DragFinish(Msg.wParam);
  16. end;
3、指定接收拖拽的窗口句柄
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   DragAcceptFiles(Handle, True);//使窗口句柄可以接收拖拽操作
  4. end;
说明:上面代码可以使窗口的任何部位都可以接收拖拽文件,包含菜单、按钮、工具条等,photo shop就是窗口的任何部分都可以接收拖拽文件。可以修改FormCreate中的 DragAcceptFiles(Handle, True)函数的第一个参数,这样可以指定一个小的区域来接收拖拽文件,比如一个listbox或memo等,这时需要修改 procedure  WMDROPFILES( var  Msg : TMessage); message WM_DROPFILES; 因为该函数只是处理窗口的拖拽事件,而不处理子窗口的拖拽事件,一个变通的方式是做一个能够处理所有消息的函数,然后从中过滤出拖拽事件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值