文件拖拽到ListBox的问题

chenzhechenge 2004-09-03 06:29:23
我用下列代码实现文件拖拽到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识别我拖拽的是文件还是文件夹,除了判别文件后缀的方法外,还有其他方法吗?
...全文
120 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilowind 2004-09-03
  • 打赏
  • 举报
回复
根据文件的属性判断.

findfirst 的参数里有个 attr 其值为faDirectory 表示目录.
blazingfire 2004-09-03
  • 打赏
  • 举报
回复
识别你拖拽的是文件还是文件夹:
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;
zysmiracle 2004-09-03
  • 打赏
  • 举报
回复
用ExtractFileName()函数,函数本身会返回不含路径的文件名,
如果文件名为空,那么返回的是空字符串,也就是说这是个路径名。

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧