用过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