文件拖拽到ListBox的问题
我用下列代码实现文件拖拽到ListBox时,ListBox显示文件路径:
procedure Tform1.DropFiles(var msg :tmessage);
var
char1:array[0..128] of char ;
char2:pchar;
i,sum:integer;
begin
sum:=dragqueryfile(msg.WParam,$FFFFFFFF,nil,0);
char2:=@char1;
for i:=0 to sum-1 do
begin
dragqueryfile(msg.WParam,i,char2,128);
ListBox1.Items.Add(char2);
end;
dragfinish(msg.WParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
dragacceptfiles(listbox1.handle,true);
end;
我只想让ListBox显示文件的路径,而不显示文件夹的路径,如何实现Listbox识别我拖拽的是文件还是文件夹,除了判别文件后缀的方法外,还有其他方法吗?
问题点数:50、回复次数:3Top
1 楼zysmiracle(奇迹)回复于 2004-09-03 20:00:06 得分 30
用ExtractFileName()函数,函数本身会返回不含路径的文件名,
如果文件名为空,那么返回的是空字符串,也就是说这是个路径名。Top
2 楼blazingfire(烈焰)(对.net极度憎恨中....)回复于 2004-09-03 20:02:29 得分 15
识别你拖拽的是文件还是文件夹:
function GetFileType(const FilePath: String): Integer;
{ Return value -1:Error; 0:File; 1:Directory }
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FilePath), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if FindData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
Result := 1
else
Result := 0;
end
else
Result := -1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if GetFileType('D:') = 1 then
ShowMessage('Dir');
end;
Top
3 楼wilowind(杂而不精)回复于 2004-09-03 20:04:10 得分 5
根据文件的属性判断.
findfirst 的参数里有个 attr 其值为faDirectory 表示目录.Top




