⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dropfilelistbox.pas

📁 本光盘是《Delphi 7应用教程》一书的配套光盘
💻 PAS
字号:
unit DropFileListBox;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ShellApi; //增加ShellApi单元,因为所使用的三个API函数声明于此单元文件中
type
  TMyNotifyEvent = procedure (Sender: TObject;FileNames:TStringList) of object;
   //自定义事件类型。
  TDropFileListBox = class(TListBox) //新的类从TListBox继承
private
  FEnabled:Boolean; //属性DropEnabled的内部变量
protected
  FDropFile:TMyNotifyEvent; //事件指针
  procedure DropFiles(var Mes:TMessage);message WM_DROPFILES;
  procedure FDropEnabled(Enabled:Boolean); //设置DropEnabled属性的过程
public
  constructor Create(AOwner: TComponent);override;
  destructor Destroy;override;
published
  property OnDropFiles:TMyNotifyEvent read FDropFile write FDropFile;
  property DropEnabled:Boolean read FEnabled write FDropEnabled;
end;

procedure Register;

implementation

procedure Register;
begin
   RegisterComponents('ZYKJ', [TDropFileListBox]); //注册组件到组件板上
end;
constructor TDropFileListBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FEnabled:=true; //类被构造时,使DropEnabeld的默认值为True
end;
destructor TDropFileListBox.Destroy;
begin
  inherited Destroy;
end;
//改变属性DropEnabled的调用过程
procedure TDropFileListBox.FDropEnabled(Enabled:Boolean);
begin
  FEnabled:=Enabled;
  DragAcceptFiles(Self.Handle,Enabled);//设置组件窗口是否接受文件拖放
end;
//接受WM_DropFiles消息的过程
procedure TDropFileListBox.DropFiles(var Mes:TMessage);
  var FN:TStringList;
  FileName:array [1..256] of char;
  sFN:String;
  i,Count,p:integer;
begin
  FN:=TStringList.Create;
  Count:=DragQueryFile(Mes.WParam,$FFFFFFFF,@FileName,256);//得到拖放文件的个数
  For i:=0 to Count-1 do
    begin
       DragQueryFile(mes.WParam,i,@FileName,256);//查询文件名称
       sFN:=FileName;
       p:=pos(chr(0),sFN);//去掉文件名末尾的ASCII码为0的字符
       sFN:=copy(sFN,1,p-1);
       FN.Add(sFN);
    end;
   DragFinish(mes.WParam); //释放所使用的资源
   if Assigned(FDropFile) then
       FDropFile(self, FN); //调用事件,并返回文件名列表参数
   FN.Free;
 end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -