五步实现文件的拖放功能

用过Winamp的朋友都知道,Winamp支持文件拖放,当你想欣赏某个MP3文件时,只需将 文件拖到Winamp的窗口上,然后放开鼠标就行了。如何让自己的程序也实现这样的功能呢?下面就以Delphi环境中的ListBox组件为例,向大家 介绍一个如何实现支持文件拖放功能的方法。
1.新建一个工程,在Form1中添加一个Listbox控件和一个Label控件,分别为Listbox1和Label1。
2.本文主要使用到两个Windows API 函数:DragAcceptFile和dragqueryfile,它们都包含Shellapi单元中,所以必须在Uses部分加入Shellapi单元后才能使用这两个函数。
3.在public部分声明以下过程:
    procedure dropfiles(var message:tmessage);message wm_dropfiles;
4.程序实现代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
  //初始本窗口可接受文件拖放
  Dragacceptfiles(Form1.handle,true);
end;
procedure TForm1.dropfiles(var message:tmessage);
var
  p:array[0..254] of char;
  i:word;
begin
  // 取拖下文件的数量
  I:=dragqueryfile(message.wparam,$ffffffff,nil,0);

  //在Label1中显示拖动文件的数量
  Form1.Label1.Caption:='这次拖动了'+inttostr(i)+'个文件';

  // 循环取每个拖下文件的全文件名
  for I:=0 to I-1 do
  begin
    // 取文件名
    dragqueryfile(message.wparam,i,p,255);
    //将文件名添加到Listbox1中
    Form1.ListBox1.Items.Add(p);
  end;
end;
5.程序编写完成后按下F9试运行程序,然后从外部向Form1拖入数个文件,那么这些文件的文件路径及其名称就会被添加到Listbox1中,Label1是用来显示一次中拖放文件的数量。
通过简单的五个步骤,就实现了文件的拖放功能,只要编写相应的处理代码,就可以实现完整的拖放功能了。

 

>>>http://blog.csdn.net/beingstudio/archive/2007/02/13/1508804.aspx

你可能感兴趣的:(windows,api,Delphi)