Индикатор прогресса обновления Firemonkey OSX во время загрузки - PullRequest
2 голосов
/ 26 февраля 2012

Обновляемый индикатор выполнения отображается в Windows.В OSX индикатор выполнения отображается, но без смещения индикатора выполнения.

См. Код ниже.

procedure TForm1.Button1Click(Sender: TObject);
var
  m : TMemoryStream;
begin

   IdHTTP1.OnWork:= HttpWork;
  m := TMemoryStream.Create;

  IdHTTP1.Get('http://www.example.com/pictures.zip', m);

  m.SaveToFile('/users/demo/pictures.zip');
  m.Free;

end;

procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
var
  Http: TIdHTTP;

  ContentLength: Int64;

  Percent: Integer;
begin
  Http := TIdHTTP(ASender);

  ContentLength := Http.Response.ContentLength;

  Percent := 100 * AWorkCount div ContentLength;

  ProgressBar1.Value := Percent;

end;

Как обновить индикатор выполнения в OSX?

1 Ответ

2 голосов
/ 28 февраля 2012

Вот что у меня есть в коде, и он работает как на Windows, так и на Mac:

Percent := 100 * AWorkCount div ContentLength;
frmDownloadProgress.ProgressBar1.Value := Percent;
Application.ProcessMessages;

Application.ProcessMessages - это ключ для обновления индикатора выполнения, если компонент TIdHTTP находится в главном потоке.

...