ESCキーの無効について


MRS  2017-04-10 15:08:17  No: 48629  IP: 192.*.*.*

初めての利用で不足がありましたら申し訳ございません。

ModalResultにmrCancelが設定されているボタンが配置されているダイアログで、
ESCキーを押下すると、ダイアログが閉じてしまう動作を無効にしたいです。
いろいろ試してみましたが、ModalResultにmrCancelを設定しているボタンが配置されていると、
ESCキー押下時にOnKeyDownや、OnKeyPressのイベントでVK_ESCAPEをひろうことができません。
(そもそもイベントにとんでこないと思います)
調べてみたところ、「PreTranslateMessage」という関数が使えるとできるような気がしますが…。
プログラム起動時にESCキーそのものを無効にしてしまう方法はあるようですが、それ以外で方法はないでしょうか。

環境:
Delphi2010
Windows7  SP1  ビルド7601

編集 削除
igy  2017-04-10 15:12:13  No: 48630  IP: 192.*.*.*

ちなみに、ボタンのCancelプロパティは、Falseになってますか?

編集 削除
MRS  2017-04-10 15:30:52  No: 48631  IP: 192.*.*.*

igyさん、レスありがとうございます。

書き忘れてしまいましたが、CancelプロパティはFalseになっています。
これをTrueにすると確かにESCキーは効かないのですが、事情があってそれができないのです。
ややこしくてすみません。。。

編集 削除
Mr.XRAY  2017-04-10 17:49:29  No: 48632  IP: 192.*.*.*

キーフックではダメでしょうか ?

編集 削除
tor  2017-04-10 18:02:10  No: 48633  IP: 192.*.*.*



ボタンにヘメが設定されているのが問題なら、設定しなければいいのでは……?
ボタン自体のヘメはホにしておいて、
ボタンが押されたらそのイベントの中でヲサヤニョヘメヲサを設定してやれば同じ効果になるはずです。

ちなみにトにはミヤヘというものは使えません。
ナモテなどの特殊キーをニで受け取りたいという目的なら、ヒミをヤにしてみてはどうでしょうか。
スススススススススススススススススススススススススススススススススススススススス
ニコ ヒ
トコ イーアキッーエッアーィ月ゥ イイコアーコオー シ  スュアセシ中級者セ シッニセシノヘヌ ス「コッッョョョッッイョ「 ス「ー「セ 書込者ノト:ロ ヲゥヲ ン

プロパティを変える事が何かの事情で出来ないのなら、
その確認ダイアログのキーフックでロナモテンキーを捉えてみてはどうでしょう?

ヲサヲサ
ヲサヲサヲサヲサヲサラヘヒトィヲサヲサヘヲサコヲサヤラヘヒトヲサゥサヲサヘヲサテペテネノフトヒナルサ





、メヲサェョ

ヲサヤニイョラヘヒトィヲサヲサヘヲサコヲサヤラヘヒトヲサゥサ


ヲサヲサヲサヘョテテヲサ
ヲサヲサヨピナモテチミナヲサコ
ヲサヲサヲサヲサヲサヲサヘョメヲサコスヲサアサ
ヲサヲササ

スススススススススススススススススススススススススススススススススススススススス
ニコ おかぽん
トコ イーアキッーエッアアィ火ゥ アーコオーコアエ  書込者ノト:ロ 「。」」、 ン

ヲサヲサ書き忘れてしまいましたが、テプロパティはニになっています。ヲサ
ヲサヲサこれをヤにすると確かにナモテキーは効かないのですが、事情があってそれができないのです。ヲサ
プロパティのヤッニが逆のような気がするけど

ミヘヲサとかヲサヘヘヲサでヲサヨスニャモテスナヲサのヘノを作れば、捕らえることができますが、
完全に捕まえてしまうので、ヘノのイベントで、ヘメを設定する。
のは、どうでしょう。
スススススススススススススススススススススススススススススススススススススススス
ニコ ヘョリメチル
トコ イーアキッーエッアエィ金ゥ アクコオキコウオ  書込者ノト:ロ 」。ァ   ン

ヲサヲサヲサこれをヤにすると確かにナモテキーは効かないのですが、事情があってそれができないのです。ヲサ
ヲサプロパティのヤッニが逆のような気がするけどヲサ

ですね.それはともかく,このようなことは難しいです.
開発グループ,あるいは共同開発者の間で,作成したフォームのプロパティなどは操作しないこと,
という取り決めがあるかも知れません.
あるいは,「俺の作ったフォームのコードをいじるんじゃないヲサ。。」という場合もあるかも知れません.

でも,題材としては面白そうなので記事にしてみました.

ロイオカンヲサローエ゜ローカルキーフックによる特定のキー操作の無効化ン
コッッョョョットッモッイオカ゜フネヒヘョ」ーエ

からページの最後までが該当します.
  
スススススススススススススススススススススススススススススススススススススススス
ニコ ヘメモ
トコ イーアキッーエッアキィ月ゥ アアコウアコウケ シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「「。。 ン
モコ 

亀レスで申し訳ございません。

みなさま、ご回答いただきましてありがとうございました。
ヘョリメチル様の仰る通り、開発グループの中でフォームのプロパティはいじってはいけないルールなのです。
そして、ご指摘の通り、ヤッニと動作の説明が逆になってしまっておりました。
申し訳ございません。

少しやってみたのですが、キーフックでとらえる方法が上手くいきそうです。
記事にまでしていただいて、大変勉強になります、ありがとうございます。

ということで、遅くなりましたが解決済みとさせていただきます。
皆さま、本当にありがとうございました。

編集 削除