导航:
论坛 -> 论坛精华贴
斑竹:liumazi,iamdream
作者:
2004/2/4 17:12:50
标题:
如何在Delphi程序中支持文件拖放
浏览:9304
加入我的收藏
楼主:
unit uDropFile; {=========================如何在Delphi程序中支持文件拖放========================} //支持文件拖放关键在于两点 : //1 、使程序能接收WM_DROPFILES消息 ; //2 、在WM_DROPFILES消息的响应程序中取得被拖放的文件名,然后进行相应处理。 // 使程序能接收WM_DROPFILES消息 // 首先,需要调用WINAPI DragAcceptFiles(Handle, True); // 其中的Handle为要接收WM_DROPFILES消息的控件的Handle 。 // 例如,我们要让RichEdit接收该消息,则调用形式为: // DragAcceptFiles(DropFileFrm.RichEdit.Handle, True); // 其次,要在收到 WM_DROPFILES 消息时做处理,需要用自己的代码替换该控件的WindowProc方法。 // 在替换前,要保存原来的WindowProc方法以便处理其他消息。 // 为此,我们定义一个全程变量OldWndProc: TWndMethod保存原来的WindowProc方法; // 再在窗体定义的Public段定义了一个方法: // procedure DragFileProc(var Message: TMessage); // 作为新的WindowProc方法。在Unit的implementation段内写下DragFileProc的完整代码, // 当消息为其他消息地调用OldWndProc来处理,当消息为WM_DROPFILES时,作相应处理。 // 取得被拖放的文件名,然后进行相应处理 // 在WM_DROPFILES消息的响应程序中,先调用: // DragQueryFile(Message.wParam, $FFFFFFFF, nil, 0); // 返回值为拖放的文件总数。再循环调用: // DragQueryFile(Message.wParam, FileNum, Buf, Len); // 取得拖放文件全名。FileNum为0到拖放的文件总数减1的值,buf为Pchar型, // 是存放文件名的缓冲区,Len为文件名缓冲区长度。至于取得文件名后的处理,就悉听尊便了。 // 一定要注意 Pchar 和 String 的转换! {===============================================================================} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellApi, ComCtrls; type TDropFileFrm = class(TForm) RichEdit: TRichEdit; procedure FormCreate(Sender: TObject); private { Private declarations } public procedure DragFileProc(var Message: TMessage); { Public declarations } end; var DropFileFrm: TDropFileFrm; implementation var OLDWndProc: TWndMethod; {$R *.dfm} procedure TDropFileFrm.DragFileProc(var Message: TMessage); var FileNum: Word; p: array[0..254] of char; begin if Message.Msg = WM_DropFiles then begin Self.RichEdit.Clear; FileNum := DragQueryFile(Message.WParam,$FFFFFFFF,nil,0); // 取得拖放文件总数 for FileNum := 0 to FileNum - 1 do begin DragQueryFile(Message.WParam, FileNum , p ,255); // 取得拖放文件名 //Self.MemoDrag.Lines.add(StrPas(p)); //对文件的处理 RichEdit.Lines.LoadFromFile(StrPas(p)); end; end else // 其他消息,调用原来的处理程序 OLDWndProc(Message); end; procedure TDropFileFrm.FormCreate(Sender: TObject); begin DragAcceptFiles(Self.RichEdit.Handle, True); OLDWndProc := Self.RichEdit.WindowProc; // 保存原来的 WindowProc Self.RichEdit.WindowProc := Self.DragFileProc; // 设置新的 WindowProc RichEdit.Lines.Clear; end; end.
----------------------------------------------
主页名称:Delphi编程驿站 主页网址:http://www.delphidak.com 版主网名:刀剑如梦 QQ号码:1917208 主页简介: Delphi编程驿站,以Delphi为主题的编程站点,明确的主题、一致的版面。本站的宗旨:与您共同进步、成长!
作者:
2004/2/27 17:02:31
1楼:
好,我狂顶
----------------------------------------------
-
作者:
2004/9/3 21:24:21
2楼:
不错
----------------------------------------------
-警钟是人类的声音, 时钟是上帝的声音!
作者:
2004/11/13 9:54:44
3楼:
好貼啊。。。。。。。
----------------------------------------------
作者:
jevons (jevons)
★☆☆☆☆
-
盒子活跃会员
2004/11/13 11:37:03
4楼:
顶
----------------------------------------------
-
作者:
lcq419 (^&^ 超 旗)
★☆☆☆☆
-
盒子活跃会员
2004/11/23 10:35:30
5楼:
写得很好,可是,我怎么样才能知道那么多API还不消息的用法呢
----------------------------------------------
-
作者:
2005/12/16 16:32:54
6楼:
楼主你的帖子非常不错,但是我有个疑问 得到的拖放文件名是没错,但是可以得到的不仅仅是文件名还包括了文件路径 请问如何能只得到文件名而不包括文件路径呢? 我现在正在做个程序就是只要文件名而不要路径的,也是通过拖放的方式得到。 请帮帮我
----------------------------------------------
-
作者:
2005/12/16 17:14:12
7楼:
好帖,收藏
----------------------------------------------
没有必要做的事,就有必要不去做。
作者:
2010/4/6 14:51:21
9楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/6/23 17:16:14
11楼:
有这样一个故事,干旱的村子缺水,村里决定雇布鲁诺和柏波罗把附近河里的水运到深圳龙岗搬家公司 村广场的蓄水池里,每天按运送的水量付钱,布鲁诺每天起早贪黑地工作,挣了不少收入;而柏波罗则用一部分时间运水,而用另一部分时间和周末休息日来建造深圳南山搬家公司 他的管道。与柏波罗相比,布鲁诺挣的钱要多很多,很快富裕起来了。但几年以后,柏波罗的管道修成了,从此无论是吃饭还是睡觉,或是出去游玩,水都在源源不断地流进村里,而财富也不分昼夜地流进柏波罗的口袋。而深圳福田搬家公司 布鲁诺却失了业,因为村子再也不需要他背着水桶运水了。这本六七万字的小书告诉人们,不要忘了修建你的财富管道,管道是你的生命线。书里还有一句很有味道的话,“今天,成为一名百万富翁深圳罗湖搬家公司 不是一种机会,而是一种选择”。有一条管道的确是个美好的梦想,当你休息、休闲、休假的时候,管道不休息,源源不断地把财富送来,挡都挡不住。世界上深圳龙华搬家公司 有些人的确是幸运,生下来就有这种管道,比如屁股底下坐着石油的人,只需要找根管子,一头接在地下,一头接在钱包上,就剩下数钱了,稍稍把阀门拧小点,每桶75块,还是美元;还有的人生下来就有权有势,只需要找几根管子把深圳宝安搬家公司 几个图章连在一块儿就行了。而绝大多数人则要修建自己的管道。文人里面,据我所知鲁迅、巴金和李敖是修了管道的,鲁迅生前身后版税可观,巴老则从未拿过工资,《家》、《春》、《秋》等几部巨著的版税能让老人家衣食无忧,所以老人说了很多深圳罗湖搬家公司 自己想说的话;李敖早就不靠着工资活着了,所以把“李敖有话说”玩儿得汪洋恣肆,淋漓尽致。建造管道的确是有力的,如果学会了炒股赚钱,一天一个涨停板,从下午三点闭市到第二天上午九点开盘,您歇着,股市可没歇着,还为您赚钱呢。甭多,就深圳福田搬家公司 一万元起家,一天一个板,一年就赚中国22年的GDP,所以套牢了那么多人。对一个普通人来说,修建管道有很多困难,但心里有这个事儿,就很有意义,一个深圳南山搬家公司 有准备的头脑肯定也会碰到更多的机会。与管道相比,我对勺子更感兴趣,勺子就是工作的收入。世界上的资源就那么多,锅就那么大,大家都在从锅里往外舀,只是深圳搬家公司 有人用大勺,有人用小勺,有人用挖耳勺。要想多舀一点,就得把勺子做大。所以,要念书,要读学位,要考证,要跳槽,要争取升职,要读《怎样让老板离不开你》、《拒绝借口》、《怎样与女上司相处》,诸如深圳龙岗搬家公司 此类老板和中层主管希望你读的书。读MBA、PHD、CFA、CPA,洗脑充电,恨不得把自个儿的DNA都改变了,就是为了把勺子做大。曾把上海“第一的哥”的那套绝活儿给一位天津的哥讲,这深圳宝安搬家公司 老兄也说了不少经验,早上七点到九点在小区等活儿,九点到下午五六点蹲写字楼,六七八点蹲饭店,夜晚蹲宾馆、歌厅、洗浴,写字楼要看多少层、有没有什么大公司,宾馆要看晚上亮多少灯,哪儿的活儿“肥瘦”心中有数,道路哪儿通哪儿堵深圳空调拆装 了然于胸,还有个不赚钱的?说起有些在一个地方“死蹲”的主儿,这老兄嗤之以鼻,“有活儿就拉,没活儿就玩牌”,那叫干活儿么?干活儿得琢磨,得动脑子!当时就感觉茅塞顿开,受益匪浅———是呀,干活儿得“动脑子”。倒退深圳空调移机 二三十年,工人里很有些手巧的,自己动手,丰衣足食,偶尔从单位“顺”点什么,从盖小厨房、攒自行车、打家具,有的还能鼓捣点电器,攒收音机,还有自个儿攒电视的。不少人退休后还能找到个地方补差,有的还挺抢手。现在车钳刨铣磨的熟练工都供不应求,会修数控机床的更是奇缺。据统计,现在中国制造业发展的瓶颈不是资源、资金,却是缺少熟练的技术工人。当然,从单位“顺”东西不好,但深圳空调回收 曾有一家日本公司从不禁止工人、技术员从企业拿元器件回家做试验,结果是凝聚了最出色的员工,因为他们找不到第二家企业能够享受这个待遇,企业相信你的诚实,鼓励你的创造力。“干深圳旧货回收 一行,爱一行,干一行,钻一行”,这句老话到了资本时代,看来还是挺适用。按照经济学理论,收入取决于你工作的可替代性,可替代性越低,收入越高,反之就是收入越低。而可替代性就取决于你干活儿是不是动脑子。
----------------------------------------------
深圳龙岗搬家公司 深圳南山搬家公司 深圳福田搬家公司 深圳罗湖搬家公司
作者:
2011/6/26 23:55:26
12楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/7/3 21:22:41
13楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/7/3 21:27:00
14楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/7/3 21:35:35
15楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/7/3 21:41:31
16楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2011/7/8 22:46:31
17楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2012/9/22 20:11:05
19楼:
春水堂
----------------------------------------------
春水堂