일부 파일을 하나의 Zip으로 압축하기 위해 Open Source Abbrevia 구성 요소를 사용하고 있는데, 진행 상황을 표시하기 위해 TAbMeter Gauge를 사용하고 있습니다.Abbrevia ProgressBar
대신 (Windows와 표준 인터페이스를 유지하면서)이 목적으로 TProgressBar를 사용하는 것을 선호합니다.
어떻게 TAbMeter 대신 TProgressBar를 사용할 수 있습니까? 진행 상황을 직접 코딩 할 수는 있지만 Abbrevia 구성 요소가 TAbMeter에서 이미 수행 된 것을 볼 때, 다시 작성하는 데에는 아무런 의미가 없습니다.
TAbMeter의 Position 속성에 액세스 할 수 있다면 TAbMeter와 동기화하여 TProgressBar의 진행 상황을 시뮬레이션 할 수 있습니다. 여기
는 조각이다, 파일 이름은 파일 이름은 아카이브가 포함 된 TStringList를 ..procedure ArchiveFiles(SaveAs: string; ProgressBar: TAbMeter);
var
AZipper: TAbZipper;
i: Integer;
begin
AZipper := TAbZipper.Create(nil);
try
AZipper.AutoSave := False;
AZipper.BaseDirectory := ExtractFilePath(SaveAs);
AZipper.ArchiveSaveProgressMeter := ProgressBar;
AZipper.FileName := SaveAs;
AZipper.StoreOptions := AZipper.StoreOptions + [soStripDrive, soRemoveDots]
- [soStripPath];
AZipper.TempDirectory := GetTempDirectory;
try
Screen.Cursor := crHourGlass;
ProgressBar.Visible := True;
for i := 0 to FileList.Count - 1 do
begin
AZipper.AddFiles(FileList.Strings[i], 0);
end;
finally
AZipper.Save;
AZipper.CloseArchive;
ProgressBar.Visible := False;
Screen.Cursor := crDefault;
end;
finally
AZipper.Free;
end;
end;
정보를 제공해 주셔서 감사합니다. 콜백을 사용하거나 관리하는 방법을 모르므로 제공된 정보를 기반으로 여기 TProgressBar를 구현하는 방법을 모르겠습니다. –
그래, 내가 당신을 도우려고 갱신했습니다. 버튼 OnClick 이벤트 핸들러와 같은 방식으로 진행 콜백을 생각해보십시오. –
그게 전부 좋고, 완벽하게 작동합니다. David, 나는 새로운 것을 배웠습니다. :) –