delphi 拖曳文件 到程序窗口 获取文件路径  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 拖曳文件 到程序窗口 获取文件路径


delphi 拖曳文件 到程序窗口 获取文件路径

在 Delphi 中,您可以通过处理 WM_DROPFILES 消息来实现将文件拖放到程序窗口并获取文件路径。以下是一个示例,展示如何实现这一功能:
在表单上放置一个 TLabel 组件(例如,命名为 Label1),用于显示拖放的文件路径。
在表单的 OnCreate 事件中,调用 DragAcceptFiles 函数来启用拖放功能。
重写表单的 WndProc 方法来处理 WM_DROPFILES 消息。
以下是完整的代码示例:
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ShellAPI;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  // 启用拖放功能
  DragAcceptFiles(Handle, True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  // 禁用拖放功能
  DragAcceptFiles(Handle, False);
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
  FileCount, I: Integer;
  FileName: array[0..MAX_PATH] of Char;
begin
  try
    // 获取拖放的文件数量
    FileCount := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0);
    // 处理每个拖放的文件
    for I := 0 to FileCount - 1 do
    begin
      // 获取文件路径
      DragQueryFile(Msg.Drop, I, FileName, MAX_PATH);
      // 显示文件路径
      Label1.Caption := FileName;
    end;
  finally
    // 释放拖放的文件句柄
    DragFinish(Msg.Drop);
  end;
end;
end.
在这个示例中,我们在表单的 OnCreate 事件中调用 DragAcceptFiles(Handle, True) 来启用拖放功能,并在 OnDestroy 事件中调用 DragAcceptFiles(Handle, False) 来禁用拖放功能。
我们重写了表单的 WndProc 方法来处理 WM_DROPFILES 消息。在 WMDropFiles 方法中,我们使用 DragQueryFile 函数获取拖放的文件路径,并将其显示在 Label1 上。
请确保在使用此代码之前,已经在表单上放置了一个 TLabel 组件,并将其命名为 Label1。



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.037195920944214 seconds