大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 在Delphi中接受文件拖放

在Delphi中接受文件拖放

时间: 2021-07-31 作者:daque

很不爽的是,用delphi封装在form里的那些货色是没方法接收用户从我的电脑里拖放到你的form上的文献的,但在做软硬件的功夫这又是很需要的,我昨天接洽了一黄昏毕竟处置了这个题目。 开始,给你的project加一个unit,代码如次: unit untdrag; interface //用来报告windows你的form不妨接收文献拖放 {$externalsym dragacceptfiles}procedure dragacceptfiles(hwnd: cardinal; faccept: boolean); stdcall; //获得拖放文献名和文献个数的api {$externalsym dragqueryfile} function dragqueryfile(hdrop: cardinal; ifile: cardinal; lpszfile: pchar; cch: integer): integer; stdcall; //开释windows调配给拖放操纵的外存 {$externalsym dragfinish} procedure dragfinish(hdrop: cardinal); stdcall; //获得拖放的文献个数 function getdragfilecount(hdrop: cardinal): integer; //获得拖放的文献名,经过fileindex来指定文献编号,默许为第一个文献 function getdragfilename(hdrop: cardinal; fileindex: integer = 1): string; implementation procedure dragacceptfiles; external 'shell32'; function dragqueryfile; external 'shell32'; procedure dragfinish; external 'shell32'; function getdragfilecount(hdrop: cardinal): integer; const   dragfilecount=high(cardinal); begin   result:= dragqueryfile(hdrop, dragfilecount, nil, 0); end; function getdragfilename(hdrop: cardinal; fileindex: integer = 1): string; const   size=255; var   len: integer;   filename: string; begin   setlength (filename, size);   len:= dragqueryfile(hdrop, fileindex-1, pchar(filename), size);   setlength (filename, len);   result:= filename; end; end. 而后,在你须要处置拖放的form的oncreate内里加上这么一句: dragacceptfiles (handle, true); 在tform1的public内里加上如次证明: procedure mydrag (var msg: twmdropfiles); message wm_dropfiles; 底下是此进程的实行: procedure tform1.mydrag (var msg: twmdropfiles); var   hdrop: cardinal;   ... begin   hdrop:= msg.drop;  //这个是拖放句柄   ...(在这边不妨用getdragfilename和getdragfilecount)   //结果牢记要用这两句话:   dragfinish (hdrop);   msg.result:= 0; end; 固然,要在form的unit上头加上 uses untdrag;

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.