Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2398|回复: 3

Lazarus 文件拖放操作

[复制链接]

该用户从未签到

发表于 2014-5-30 10:29:38 | 显示全部楼层 |阅读模式
最近在将一个Delphi 程序变为Lazarus 发现似乎不行,请教各位如何改进
貌似WMDROPFILES 没有触发到。

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    // 当文件拖放至窗体中后,系统将向窗体发送WM_DRAPFILES事件,
    // 因此我们可以在WMDROPFILES过程中获取文件总数及文件名。
    procedure WMDROPFILES(var Msg: TMessage);message WM_DROPFILES;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  // 当程序启动时,启用文件拖放功能。当第二个参数True时,
  // 启用文件拖放,如果为False则禁止文件拖放。
  DragAcceptFiles(Handle, True);
end;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
var
  FilesCount: Integer; // 文件总数
  i: Integer;
  FileName: array[0..255] of Char;
begin
  Memo1.Clear;
  // 获取文件总数
  FilesCount := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0);
  Memo1.Lines.Add('文件总数为:' + IntToStr(FilesCount));

  // 获取文件名
  for i := 0 to FilesCount - 1 do
  begin
    DragQueryFile(Msg.WParam, i, FileName, 256);
    Memo1.Lines.Add(FileName)
  end;
  
  // 释放
  DragFinish(Msg.WParam);
end;
end.

评分

参与人数 1金钱 +10 贡献值 +1 收起 理由
bugxiong + 10 + 1 Lazarus有你更精彩

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2014-6-8 16:13:33 | 显示全部楼层
lazarus中的form中有个event可以使用,即 onDropFiles  ,是否这个已经提前处理了WMDROPFILES。

看看lazarus自带的例子,很简单的。
D:\lazarus12\examples\dropfiles
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-6-9 11:07:15 | 显示全部楼层
谢谢,看了示例明白很多。其实Lazarus 实现Dropfiles 比Delphi 简单的多,只要ApplicationProperties1DropFiles在定义相关代码就可以。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-6-11 21:40:17 | 显示全部楼层
haigang 发表于 2014-6-9 11:07
谢谢,看了示例明白很多。其实Lazarus 实现Dropfiles 比Delphi 简单的多,只要ApplicationProperties1DropF ...

是很简单,只是有bug。上个版本可以用,这个版本又突然不行了……
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 22:41 , Processed in 0.048732 second(s), 15 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表