CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

文件拖拽到ListBox的问题

楼主chenzhechenge()2004-09-03 18:29:23 在 Delphi / VCL组件开发及应用 提问

我用下列代码实现文件拖拽到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

相关问题

  • 如何编写一个支持拖放操作的ListBox,就是把文件拖放入ListBox时,ListBox显示这些文件的全路径+文件名
  • 如何得到拖拽的文件的文件图标?
  • 怎么实现文件的拖拽?
  • 向listbox添加文件
  • 如何把FileListBox中的文件名拖放到ListBox中去,并在ListBox中显示该文件的全径路。谢谢!
  • 一个关与用ListBox控件实现文件的拖放功能问题!谢谢
  • 如何可以拖动一个文件到我的程序的窗口的Listbox中?
  • 怎样获取被拖拽文件的路径及名称
  • 在cbuilder中如何实现wave文件的拖拽播放?
  • 如何拖文件

关键词

  • 文件
  • 文件夹
  • listbox
  • 拖拽
  • finddata
  • 路径
  • handle
  • wparam
  • procedure tform
  • 显示

得分解答快速导航

  • 帖主:chenzhechenge
  • zysmiracle
  • blazingfire
  • wilowind

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo