下面的代码是在网上找到的,但问题是只要拖放到窗体Form就会触发。
如何使之拖到具体控件(例如Memo1中)才触发,因为我想把文件拖到不同控件
处理不同事件,例如拖到Memo1中处理A事件,拖到Edit1中处理B事件?
先谢了!!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellApi, StdCtrls;type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure DropFiles(var Message:TMessage);message WM_DropFiles;
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm} procedure TForm1.DropFiles(var Message:TMessage);
var
bufsize,num:Cardinal;
FilePath:array of Char;
begin
num:=DragQueryFile(Message.wParam,$FFFFFFFF,nil,0); //取得文件个数
for num:=0 to num-1 do begin
bufsize:=DragQueryFile(Message.wParam,num,nil,0);
setlength(FilePath,bufsize+1);
DragQueryFile(Message.wParam,num,pchar(FilePath),bufsize+1);
showmessage(pchar(FilePath));
end;
dragfinish(Message.wParam);
end; procedure Tform1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle,True);
end;end.
修改为:
DragAcceptFiles(Memo1.Handle,True);DragAcceptFiles(Memo2.Handle,True);
是否除了修改DragAcceptFiles(Handle,True);为DragAcceptFiles(Memo1.Handle,True);
还要修改别的地方
因为,修改后虽然把文件拖到了Memo1中才出现那个拖动标志,但是却无法像拖到form上那样得到路径名字了!
请问如何解决,谢谢!
只能拖到Form上才触发,如何使之改成拖到Memo1时才显示出路径
我改成procedure TMemo1.DropFiles(var Message:TMessage);但不成功哪位再帮一下谢了!