下面的代码是在网上找到的,但问题是只要拖放到窗体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.

解决方案 »

  1.   

    DragAcceptFiles(Handle,True);
    修改为:
    DragAcceptFiles(Memo1.Handle,True);DragAcceptFiles(Memo2.Handle,True);
      

  2.   

    请问aiirii
    是否除了修改DragAcceptFiles(Handle,True);为DragAcceptFiles(Memo1.Handle,True);
    还要修改别的地方
    因为,修改后虽然把文件拖到了Memo1中才出现那个拖动标志,但是却无法像拖到form上那样得到路径名字了!
    请问如何解决,谢谢!
      

  3.   

    由于procedure TForm1.DropFiles(var Message:TMessage);
    只能拖到Form上才触发,如何使之改成拖到Memo1时才显示出路径
    我改成procedure TMemo1.DropFiles(var Message:TMessage);但不成功哪位再帮一下谢了!