ProgressBarの表示が止まってしまう。

解決


gravisfreak  2007-07-23 23:55:28  No: 27170

繰り返し処理の中でProgressBarを使って進捗を表示したいと思っています。
下記のコードをコンパイルして実行すると、ProgressBarは、途中までは
スムーズに進むのですが、途中で止まってしまい暫くすると、急に
PosisionがMaxになり処理が完了します。

しかも、繰り返し処理の前にある'Label1.Caption:='Strat!';'を無くすと
スムーズに進みます。
試しにStatusBarで試してみましたが、こちらもスムーズに進みます。

さらにこの現象は、コンパイル済みのexeファイルでのみ発生します。
Delphiから実行したスムーズです。

PC環境に依存している様な感じがするのですが、どの環境でもProgressBarが
スムーズに動く様にするには、どの様にしたら良いのでしょうか?
ご教授願います。

ちなみに開発環境は、D6、winXPです。

procedure TForm1.Button1Click(Sender: TObject);
var
  i:Integer;
const
  M=300000;
begin
  ProgressBar1.Position:=0;
  ProgressBar1.Max:=M;

  Label1.Caption:='Strat!';
  StatusBar1.SimpleText:='Strat!';{※こっちだけなら大丈夫}

  for i:=0 to M do begin
    ProgressBar1.Position:=ProgressBar1.Position+1;
  end;
end;


deldel  2007-07-24 00:57:34  No: 27171

以下ではどうでしょう?
  for i:=0 to M do begin
    ProgressBar1.Position:=ProgressBar1.Position+1;
    Application.ProcessMessages;
  end;


gravisfreak  2007-07-24 01:19:28  No: 27172

deldelさん、ありがとう御座います。
出来ました。

そうです。こういうのを探してました。
自分なりに色々探したつもりだったのですが・・・
勉強になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加