我使用壓縮文件夾中所有文件的演示代碼。但是,進度條顯示的不是總進度,而是每個文件的進度。簡單的方法來修改現有的Delphi代碼中的進度條?
是否有任何簡單的方法來修改代碼,以便進度條顯示總進度而不是每個文件的進度?
procedure DoProgress(Sender: TObject; Position, Total: Integer);
procedure DoCompressFile(Sender: TObject; const Filename: string);
....
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;
完全取決於TJvZlibMultiple.CompressDirectory的實現。看看源代碼或文檔,看看是否有辦法做你想做的事。 – jpfollenius
根據每個文件需要多長時間,用戶可能會喜歡雙進度條顯示 - 保留您在此處實現的進度條,並添加一個進度欄,通過對每個完整文件進行遞增來顯示整體進度。 – Argalatyr