All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
delphi不同程序间的拖曳操作方法-实例

Writer: aaa Article type: Programming skills(编程技巧) Time: 2014/7/19 0:08:59 Browse times: 344 Comment times: 0

delphi不同程序间的拖曳操作方法-实例


Head photo

Go homepage
Upload pictures
Write articles

delphi不同程序间的拖曳操作方法|实例|技巧

不同程序间的拖曳操作
不同程序间的拖曳是经常用到的,比如将.doc 文件直接拖曳到打开的Word 里,即可以打开此.doc文件。
现在编写一个文件拖曳的示例程序,利用拖曳操作时触发WM_DROPFILES 消息。要实现文件的拖曳,需要在自己的程序中捕获并处理该消息。下面示例的功能是在Windows 系统中选中一个或多个文件,将这些文件拖曳到本应用程序上,应用程序利用WM_DROPFILES 消息得到拖曳到本程序的文件的路径及名称。
(1)新建一个项目。在窗体中添加一个Memo 组件,用于显示获得拖曳文件的路径及名称。
(2)程序代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls,ShellApi;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMDROPFILES(var Message: TWMDROPFILES);message WM_DROPFILES;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, True);
end;
procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES);
var
NumFiles : longint;
i : longint;
buffer : array[0..255] of char;
begin
NumFiles := DragQueryFile(Message.Drop,$FFFFFFFF,nil,0);
//有多少文件被放下
for i := 0 to (NumFiles - 1) do begin
//循环处理放下的文件,此处只是显示其文件名
DragQueryFile(Message.Drop,
i,
@buffer,
sizeof(buffer));
//获取文件名,保存到buffer
Form1.Memo1.Lines.Add(buffer);
//显示文件名
end;
DragFinish(Message.Drop);
//拖曳完毕,释放系统在传输文件名时分配的内存
end;
end.
(3)保存并执行程序,使用鼠标将选中的文件拖曳到示例程序中,可以看到Memo 组件中列出了相应文件的路径及文件名.





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.