版权所有:nicrosoft
文章来源:东日制作室
用过winamp的朋友都知道,winamp的界面能支持文件拖放,当你想欣赏某mp3文件时,只需要
将文件拖到winamp的窗口上,然后放开鼠标就行了。那我们如何让自己的程序也实现这样的功能
呢?我们可以通过改进开发工具提供的标准组件来实现。下面以delphi环境中的listbox组件为
例,让listbox支持文件拖放。
首先介绍一下要用到的api函数:
dragacceptfiles() 初始化某窗口使其允许/禁止接受文件拖放
dragqueryfile() 查询拖放的文件名
dragfinish() 释放拖放文件时使用的资源
实现的基本原理如下:首先调用dragacceptfiles()函数初始化组件窗口,使其允许接受文件
拖放,然后等待wm_dropfiles消息(一旦用户进行了拖放文件操作,组件窗口即可获得此消息),获得消息后即可使用dragqueryfile()函数查询被拖放的文件名,最后调用dragfinish()释放资
源。
因为在vcl类库中,listbox组件,所属类名为:tlistbox,所以我们可以从tlistbox继承建立自己的组件。新组件名为:tdropfilelistbox,它比标准tlistbox增加了一个ondropfiles事件和一个dropenabled属性。当dropenabled为true时即可接受文件拖放,文件拖放完成后激发
ondropfiles事件,该事件提供一个filenames参数让用户获得文件名。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器