[Delphi:90544] 「只今 更新中です。」 を Form上に標示したい。

802 views
Skip to first unread message

大須賀

unread,
Jul 14, 2008, 9:19:20 AM7/14/08
to Del...@ml.users.gr.jp
大須賀ともうします。
Form 上に DBGrid1 を大きく配置しています。
DataSet更新処理が長引く為 DBGrid1 の前面に
「只今 更新中です。」 のメッセージを標示したいです。
更新終了後 自動的にメッセージを消したいです。

TLabel ですと
Label1.Visible := True, DBGrid1.Visible := False にしても TLabelが確認できません。

TMemo、TEdit ですと
枠は標示されますが 中のText が消えてしまいます。
よい案がございましたら是非お教えください。

osuk...@uv.tnc.ne.jp

dev

unread,
Jul 14, 2008, 9:45:34 AM7/14/08
to Del...@ml.users.gr.jp
大須賀さんの<000701c8e5b4$3a345000$4f18a8c0@D505>から

>大須賀ともうします。
>Form 上に DBGrid1 を大きく配置しています。
>DataSet更新処理が長引く為 DBGrid1 の前面に
>「只今 更新中です。」 のメッセージを標示したいです。
>更新終了後 自動的にメッセージを消したいです。

Refresh
Application.ProcessMessages

とか調べてみてください。


--
dev mailto:d...@arb-kids.net


石川元太郎

unread,
Jul 14, 2008, 11:57:51 AM7/14/08
to Del...@ml.users.gr.jp
大須賀さん、こんにちは。
石川と申します。

devさんがおっしゃる通り、Application.ProcessMessagesで解決します。

Label1.Visible := True;
//未処理のメッセージ処理してから時間のかかる処理を行なう
Application.ProcessMessages;

//時間がかかる処理

Label1.Visible := False;

あるいは、ダイアログをShowで表示させて、背面のフォームをいじれなく
することも、よく使う手段だと思います。

//TfmDialog・・・前面に表示するダイアログ
//ダイアログはBorderIconsプロパティからbiSystemMenuを除いて
//閉じるボタンを非表示にする
with TfmDialog.Create(Self) do
begin
try
//読み出しもとのマウス・キー入力を殺す
EnableWindow(Self.Handle, False) ;
Show;

//時間がかかる処理

Close;
Application.ProcessMessages;
//読み出しもとのマウス・キー入力を復活させる
EnableWindow(Self.Handle, True);
finally
Release;
end;
end;

大須賀

unread,
Jul 15, 2008, 7:32:44 AM7/15/08
to Del...@ml.users.gr.jp
Dev様、 石川元太郎様

早速のご回答有りがたく存じます。
最大のヒント(ProcessMessage)をいただきました。
少し 私にはハードルが高いとおもわれますが今晩よりがんばってみます。
はっきり申し上げてもう少し簡単なのかなと想像していました。
多少時間はかかるとおもいますが prg完成できればとっても嬉しいです。
まずは御礼申し上げます。

静岡市 大須賀明美
osuk...@uv.tnc.ne.jp

大須賀

unread,
Jul 15, 2008, 8:31:58 AM7/15/08
to Del...@ml.users.gr.jp

Dev様、 石川元太郎様

有り難うございました。できました。
更新中 message なしで 短時間でも作業者を待たせると
作業者は相当不安になります。
これは長い間やりたかったことです。
とっても嬉しいです。


静岡市 大須賀明美
osuk...@uv.tnc.ne.jp





Reply all
Reply to author
Forward
0 new messages