Вы, вероятно, устанавливаете ArchiveSaveProgressMeter
где-то в своем коде.Вы можете просто прекратить это делать и вместо этого установить событие OnArchiveSaveProgress
.Затем вам нужно указать событие с такой подписью:
procedure(Sender: TObject; Progress: Byte; var Abort: Boolean) of object;
Чтобы ответить на получение такого события, обновите значение Position
индикатора выполнения в вашем пользовательском интерфейсе.
Метод, который отображает это событие прогресса, также обрабатывает версию индикатора выполнения:
procedure TAbCustomZipper.DoArchiveSaveProgress(
Sender: TObject; Progress: Byte; var Abort : Boolean);
begin
Abort := False;
if Assigned(FArchiveSaveProgressMeter) then
FArchiveSaveProgressMeter.DoProgress(Progress);
if Assigned(FOnArchiveSaveProgress) then
FOnArchiveSaveProgress(Self, Progress, Abort);
end;
Таким образом, разработчики компонента просто предоставили два альтернативных маршрута для получения прогресса: счетчик или обратный вызов.
Чтобы обработать прогресс от обратного вызова, вам нужно написать метод, подобный этому:
procedure TMyMainForm.OnArchiveSaveProgress(
Sender: TObject; Progress: Byte; var Abort: Boolean);
begin
FProgressBar.Position := Progress;
end;
Затем вы назначаете этот обработчик события на OnArchiveSaveProgress
, скорее всего, в IDE.Это идентичная процедура присвоения события OnClick
кнопке.
Примечание: Я никогда не использовал Abbrevia, поэтому я мог выбрать другой компонент из одноготы используешь.Тем не менее, все компоненты, которые взаимодействуют со счетчиками, также обеспечивают прогресс посредством обратного вызова, поэтому этот базовый подход будет работать независимо от того, какой компонент вы используете.