オープンソースのAbbreviaコンポーネントを使用して、いくつかのファイルを1つのZipにアーカイブしていますが、これが発生している間、進行状況を表示するためにTAbMeterゲージを使用しています。
ただし、代わりにこの目的でTProgressBarを使用することをお勧めします(Windowsとの標準インターフェイスを維持します)。
TAbMeterの代わりにTProgressBarを使用するにはどうすればよいですか?進捗状況を自分でコーディングできることはわかっていますが、AbbreviaコンポーネントがすでにTAbMeterでこれを行っているので、書き直しても意味がありません。
TAbMeterのPositionプロパティにアクセスできれば、TAbMeterと同期することで、TProgressBarの進行状況をシミュレートできます。
これがスニペットです。FileNamesはアーカイブするファイル名を含む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;