掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
時間のかかる処理を行う際、進捗を表示させているModalダイアログの右上の×ボタンを押したときに処理を中断する方法 (ID:150186)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
先日は貴重なご助言をいただき、ありがとうございました。 先日より、いただいたコードの内容を確認し、意味をインターネットで調べていたのですが、 その際、「いただいたコードはマウスで×ボタンをクリックしたときの動作を拾うものだが、 マウス動作だけでなく、Alt+F4のキー操作が行われたときも同様に動作するのが自然ではない か?」という考えに至りました。 いただいたコードですと、OnActiveイベントの実行中であってもイベントとして拾えるよう でしたので、マウスクリック以外にも「閉じる」操作が行われたときの動作を拾えるメッセージ がないか、改めて探してみました。 その結果、以下のようなコードに行きつきました。 private procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; procedure TForm2.WMSysCommand(var Msg: TWMSysCommand); begin if Msg.CmdType = SC_CLOSE then begin CannotProgress := True; Msg.Result := 0; // OnActivateの動作が無事終わった後、WM_Closeを送って閉じるので、ここでは閉じない end else begin inherited; end; end; 現在のところ、これで良好に動いているようです。当面、様子を見て、これで処理を する方向で考えてみたいと思います。 もともとはイベントの順番などを単純に変えれば行けるのではないかと思い、四苦八苦 しておりましたが、Mr.XRay様のコードを見て、飛んでくるメッセージの利用という別の 切り口から解決のめどを立てることができました。ご助言、誠にありがとうございました。 大変助かりました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.