処理が長くなるとき、進行状況を表示したいのです。ShowMessageやMessageBox
ではボタンクリックするまで次へ進めません。
プログレスバーのような大げさなものじゃなくても良いのです。
「・・の処理中です しばらくお待ちください」のようなメッセージが
表示できるような機能はありませんか
TLabel使えば簡単?
TLabel適当に貼り付けて通常は Visible := False にでもしておく。
処理する時は
Visible := True
あとフォームの Enabled を False にでもすればいいのかな。
フォーム無効化するならtry..finallyで処理した方が安全です。
追記
TStatusBar も簡単に利用できると思います。
もっと簡易的にしたいのであれば
分からないので他の人にパスです。
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;
こうすれば問題なく表示されると思います。
邪さんの参考にRefreshでもいけました!
with CreateMessageDialog('・・の処理中です しばらくお待ちください', mtCustom, []) do begin
try
BorderIcons := [];
Show;
Refresh;
// 時間の掛かる処理
Close;
finally
Release;
end;
end;
ツイート | ![]() |