処理期間中の「実行中・・」の表示と消滅をさせるには?

解決


武田  2006-10-08 12:28:18  No: 23522

いつもお世話になっております。環境はDelphi 6 Personalです。
「質問」
起動中に、なにか時間のかかる処理をする間「ただ今・・・を実行中です。しばらくお待ちください。」というダイアログが表示されて、処理が終わったら自動的に消える場面がありますが、
これをやりたいのですが、方法が解りません。
メイン画面から、補助的な処理をさせたい場合(たとえば関連データファイルの整理整頓など)、処理が終わるまでメイン画面のあらゆる操作をできないようにしたいのです。

処理専用のサブフォームを作りShowModalで処理フォームを開けば、他の操作ができないだろうとやってみたのですが、実際にはフォームは表示しないで、処理が終わってから表示します。

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
    formSyori := TformSyori.Create(Form1);
    formSyori.ShowModal;
end;

処理フォーム
procedure TformSyori.FormShow(Sender: TObject); 
begin
  {処理コード}この処理が終わるまで、メイン画面の他の操作はさせたくない。
end;

補助的な処理(処理中はボタン操作はない。開始して終了を待つだけ)を開始するとダイアログを表示させて終わったら表示が消えるようにするには、なにかコンポーネントがあるのでしょうか?
ご教授をお願いいたします。m(_ _)m


まこと  2006-10-08 17:11:29  No: 23523

OnShowイベントではなく,OnActivateイベントを使用されては
どうでしょうか?

procedure TForm2.FormActivate(Sender: TObject);
begin
  {行いたい処理を書く。}
  PostMessage(Handle, WM_CLOSE, 0, 0); //処理後,自動でフォームを閉じる場合。
end;


武田  2006-10-08 20:45:43  No: 23524

まことさん。さっそく教えて頂いてありがとうございました。
うまくいきました。
じつは、ず〜っと解決できなくて、初歩的すぎるような気がして、
恥ずかしくて聞けなかったのです。
ありがとうございました。感謝します。m(_ _)m


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

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






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