進行状況を表示したいのです


sspm  2007-06-08 00:39:29  No: 26539

処理が長くなるとき、進行状況を表示したいのです。ShowMessageやMessageBox
ではボタンクリックするまで次へ進めません。
プログレスバーのような大げさなものじゃなくても良いのです。
「・・の処理中です  しばらくお待ちください」のようなメッセージが
表示できるような機能はありませんか


Ru  2007-06-08 00:48:38  No: 26540

TLabel使えば簡単?

TLabel適当に貼り付けて通常は Visible := False にでもしておく。
処理する時は
Visible := True
あとフォームの Enabled を False にでもすればいいのかな。

フォーム無効化するならtry..finallyで処理した方が安全です。


Ru  2007-06-08 02:07:08  No: 26541

追記
TStatusBar  も簡単に利用できると思います。

もっと簡易的にしたいのであれば
分からないので他の人にパスです。


  2007-06-26 20:39:08  No: 26542

CreateMessageDlgを使って表示させればいいんじゃないでしょうか。

with CreateMessageDialog('・・の処理中です  しばらくお待ちください', mtCustom, []) do begin
  try
    BorderIcons := [];
    Show;
    // 時間の掛かる処理
    Close;
  finally
    Release;
  end;
end;

但しこれだとShowを呼び出した後、即「時間の掛かる処理」に入るので文字が表示されません。
そこで強引に

with CreateMessageDialog('・・の処理中です  しばらくお待ちください', mtCustom, []) do begin
  try
    BorderIcons := [];
    Show;
  (Components[0] as TLabel).Canvas.Brush.Color := (Components[0] as TLabel).Color;
  (Components[0] as TLabel).Canvas.TextOut(0,0,'・・の処理中です  しばらくお待ちください');
    // 時間の掛かる処理
    Close;
  finally
    Release;
  end;
end;

こうすれば問題なく表示されると思います。


通りがかり  2007-06-27 19:36:23  No: 26543

邪さんの参考にRefreshでもいけました!

with CreateMessageDialog('・・の処理中です  しばらくお待ちください', mtCustom, []) do begin
  try
    BorderIcons := [];
    Show;
    Refresh;
    // 時間の掛かる処理
    Close;
  finally
    Release;
  end;
end;


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

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






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