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