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


sspm  2007-06-07 15:39:29  No: 26539  IP: 192.*.*.*

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

編集 削除
Ru  2007-06-07 15:48:38  No: 26540  IP: 192.*.*.*

TLabel使えば簡単?

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

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

編集 削除
Ru  2007-06-07 17:07:08  No: 26541  IP: 192.*.*.*

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

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

編集 削除
 2007-06-26 11:39:08  No: 26542  IP: 192.*.*.*

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 10:36:23  No: 26543  IP: 192.*.*.*

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

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

編集 削除