2009-09-19 22 views
0

我使用壓縮文件夾中所有文件的演示代碼。但是,進度條顯示的不是總進度,而是每個文件的進度。簡單的方法來修改現有的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; 
+0

完全取決於TJvZlibMultiple.CompressDirectory的實現。看看源代碼或文檔,看看是否有辦法做你想做的事。 – jpfollenius

+2

根據每個文件需要多長時間,用戶可能會喜歡雙進度條顯示 - 保留您在此處實現的進度條,並添加一個進度欄,通過對每個完整文件進行遞增來顯示整體進度。 – Argalatyr

回答

0

或者更好的辦法是,將文件大小加到總大小和增加的位置處理的字節數上。

0

一個簡單的方法是計數用的FindFirst和FindNext中的目錄中的文件,然後設置pbProgress.Max到,然後由1遞增pcProgress.Position DoCompressFile。

相關問題