Delphi实现文件的拖放功能

uses  shellapi;

 

private
    { Private declarations }
     procedure DragFileProc1(var Message: TMessage);//拖放文件引用1 单元shellapi
     procedure DragFileProc2(var Message: TMessage);//拖放文件引用1
     procedure WMNCHitTest(var Msg:TWMNCHitTest);message WM_NCHITTEST; //点击标题栏响应事件

 

procedure TForm1.DragFileProc1(var Message: TMessage);  //拖放文件引用1
var
  FileNum: Word;
  p: array[0..254] of char;
begin
  if Message.Msg = WM_DropFiles then
  begin
    //Self.Edit1.Clear;
    FileNum := DragQueryFile(Message.WParam, $FFFFFFFF, nil, 0);
    // 取得拖放文件总数
    for FileNum := 0 to FileNum - 1 do
    begin
      DragQueryFile(Message.WParam, FileNum, p, 255);
      // 取得拖放文件名
      //Self.MemoDrag.Lines.add(StrPas(p));
      //对文件的处理
      if (Pos('.jpg',StrPas(p))<>0) then begin
       Edit1.text:= StrPas(p);
       xianshi(StrPas(p));
       end else Memo1.Lines.Add('提示:请拖入Jpg格式图片!') ;
    end;
  end
  else // 其他消息,调用原来的处理程序
    OLDWndProc1(Message);
end;

procedure TForm1.DragFileProc2(var Message: TMessage);  //拖放文件引用2
var
  FileNum: Word;
  p: array[0..254] of char;
begin
  if Message.Msg = WM_DropFiles then
  begin
    //Self.Edit1.Clear;
    FileNum := DragQueryFile(Message.WParam, $FFFFFFFF, nil, 0);
    // 取得拖放文件总数
    for FileNum := 0 to FileNum - 1 do
    begin
      DragQueryFile(Message.WParam, FileNum, p, 255);
      // 取得拖放文件名
      //Self.MemoDrag.Lines.add(StrPas(p)); 
      //对文件的处理
      if (Pos('.zip',StrPas(p))<>0) or  (Pos('.rar',StrPas(p))<>0) or (Pos('.7z',StrPas(p))<>0) then Edit2.text:= StrPas(p) else Memo1.Lines.Add('提示:请拖入Zip、Rar、7z格式文件!') ;
    end;
  end
  else // 其他消息,调用原来的处理程序
    OLDWndProc2(Message);
end;

 

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Self.edit1.Handle, true);     //拖放文件引用1
DragAcceptFiles(Self.edit2.Handle, true);     //拖放文件引用2
OLDWndProc1 := Self.edit1.WindowProc;         //拖放文件引用1
Self.edit1.WindowProc := Self.DragFileProc1;  //拖放文件引用1
OLDWndProc2 := Self.edit2.WindowProc;         //拖放文件引用2
Self.edit2.WindowProc := Self.DragFileProc2;  //拖放文件引用2
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值