Delphi 从外部拖拽文件

阅读更多

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ComCtrls, StdCtrls;

 

type

  TForm1 = class(TForm)

    ListView1: TListView;

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

    procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;

    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

uses ShellAPI;

 

{$R *.dfm}

 

procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);

var  

  WMD: TWMDropFiles;

begin  

  if Msg.message = WM_DROPFILES then

  begin

    WMD.Msg := Msg.message;

    WMD.Drop := Msg.wParam;

    WMD.Unused := Msg.lParam;

    WMD.Result := 0;

    WMDropFiles(WMD);  

    Handled := TRUE;

  end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  DragAcceptFiles(listview1.Handle, True);

  Application.OnMessage := AppOnMessage;

end;

 

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);

var  

  N: Word;

  buffer: array[0..180] of Char;

  item: TListItem;

begin

  with Msg do

  begin

    for N := 0 to DragQueryFile(Drop, $FFFFFFFF, buffer, 1) - 1 do

    begin

      DragQueryFile(Drop, N, Buffer, 80);

      Item := ListView1.Items.Add;

      item.Caption := StrPas(Buffer);

    end;

    DragFinish(Drop);

  end;

end;

 

end.

 

1.引用 ShellAPI单元

2.定义AppOnMessage,拦截处理拖拽文件操作

3.设置接收拖拽文件的对象。DragAcceptFiles(listview1.Handle, True);

4.定义对拖拽文件的具体操作WMDropFiles(var Msg: TWMDropFiles);

示例下载见附件

 

  • Prj从外部拖拽文件示例.zip (253 KB)
  • 下载次数: 37

你可能感兴趣的:(Delphi,拖拽,文件)