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