我过去常常把TZipForge组件放在表单上,这样我就可以使用它的事件处理程序。现在,我使用几个线程工作器来提取一些zip文件,因此我创建了一个TZipForge类的实例作为一个局部变量。我如何使事件处理程序没有事件选项卡在对象检查器?
要手动创建一个事件处理程序,你必须创建一个与目标事件声明匹配的过程,然后将该过程的地址分配给类的事件,例如,如果你想为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 := 'CFoo';
Archiver.ExtractFiles('*.*');
finally
Archiver.CloseArchive();
end;
finally
Archiver.Free;
end;
end;