在现有的Delphi代码中修改进度条的简单方法?
我使用的演示代码压缩文件夹中的所有文件。但是,它的进度条显示的不是总进度,而是每个文件的进度 有没有简单的方法来修改代码,使进度条显示总进度,而不是每个文件的进度在现有的Delphi代码中修改进度条的简单方法?,delphi,progress-bar,Delphi,Progress Bar,我使用的演示代码压缩文件夹中的所有文件。但是,它的进度条显示的不是总进度,而是每个文件的进度 有没有简单的方法来修改代码,使进度条显示总进度,而不是每个文件的进度 procedure DoProgress(Sender: TObject; Position, Total: Integer); procedure DoCompressFile(Sender: TObject; const Filename: string); 一种简单的方法是使用Findfirst和Findnext对目录中的文
procedure DoProgress(Sender: TObject; Position, Total: Integer);
procedure DoCompressFile(Sender: TObject; const Filename: string);
一种简单的方法是使用Findfirst和Findnext对目录中的文件进行计数,然后将pbProgress.Max设置为该值,然后在DoCompressFile中将pcProgress.Position增加1。或者更好,根据处理的字节数,将文件大小相加到总大小和增量位置。完全取决于TJVZLIBMULITY.CompressDirectory的实现。查看源代码或文档,看看是否有办法实现您想要的功能。根据每个文件所需的时间,用户可能希望显示双进度条-保留您在此处看到的实现的进度条,并添加一个进度条,通过随每个完成的文件递增来显示总体进度。
procedure TJvZLibMultipleMainForm.DoCompressFile(Sender:TObject;const Filename:string);
begin
lblFilename.Caption := Filename;
Update;
end;
procedure TJvZLibMultipleMainForm.btnCompressClick(Sender: TObject);
var
z : TJvZlibMultiple;
begin
ForceDirectories(ExtractFilePath(edFilename.Text));
z := TJvZlibMultiple.Create(nil);
Screen.Cursor := crHourGlass;
try
lblFilename.Caption := '';
pbProgress.Position := 0;
z.OnProgress := DoProgress;
z.OnCompressingFile := DoCompressFile;
z.CompressDirectory(edSrcFolder.Text,true,edFilename.Text);
finally
z.Free;
Screen.Cursor := crDefault;
end;
pbProgress.Position := 0;
lblFilename.Caption := 'Ready';
end;
procedure TJvZLibMultipleMainForm.DoProgress(Sender: TObject; Position, Total: Integer);
begin
pbProgress.Max := Total;
pbProgress.Position := Position;
Update;
end;