在ZipForge中手动创建事件处理程序

时间:2011-08-03 04:12:18

标签: delphi event-handling unzip

我曾经在表单上删除TZipForge组件,因此我可以使用它的事件处理程序。现在,我正在使用几个线程工作程序来提取一些zip文件,因此我创建了一个TZipForge类的实例作为局部变量。如何在Object Inspector中使用Event选项卡创建事件处理程序?

1 个答案:

答案 0 :(得分:3)

要手动创建事件hanlder,您必须创建一个与目标事件声明匹配的过程,然后将该过程的 Address 分配给该类事件,例如,如果您需要要为OnFileProgress事件创建事件句柄,您必须在类中创建这样的过程。

procedure  FileProgress(Sender: TObject; FileName: string;
Progress: Double; Operation: TZFProcessOperation;
ProgressPhase: TZFProgressPhase; var Cancel: Boolean);

检查此样本

procedure TForm1.FileProgress(Sender: TObject; FileName: string;
  Progress: Double; Operation: TZFProcessOperation;
  ProgressPhase: TZFProgressPhase; var Cancel: Boolean);
begin
     //do your stuff here
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Archiver : TZipForge;
begin
  Archiver := TZipForge.Create(nil);
  try          
      Archiver.OnFileProgress:=FileProgress;//<- Here the event handler is assigned
      Archiver.FileName := 'compressedfile.zip';
      Archiver.OpenArchive(fmOpenRead);
      try
        Archiver.BaseDir := 'C\Foo';
        Archiver.ExtractFiles('*.*');
      finally
        Archiver.CloseArchive();
      end;
  finally
    Archiver.Free;
  end;
end;