検索/置換ダイアログへのペーストにCtrl+V(ショートカットキー)を使う方法
|
DelphiのDialogsにある検索/置換ダイアログは、Windows標準の検索/置換ダイアログを 呼び出すクラスです。しかし、ちょっと問題があります。 それは、検索/置換ダイアログを使ってエディタを作成した場合、検索/置換ダイアログの エディットボックスにCtrl+Vでペーストしようとすると、エディタにペーストされてしまいます。 これを回避する方法がDelphi-MLに 載っています。 しかし、この方法だけでは、VCLのバグ(Delphi 7.0以下、8.0以上は不明)のため メモリリークを起こします。これは、メッセージをHookしたらアプリケーション終了時に WM_EndSessionメッセージを送ってHookを解放する必要があるのですが、VCLではそれが 抜けているようです。そのため、フォームをDestroyする際に、UnHookする一文を追加すると メモリリークを防ぐことができます。 具体的には次のコードになります。
Delphi Tipsの 「サブフォームがアクティブな時は メインフォームのアクセラレータキー・ショートカットキーを無効にしたい 」によると、 ショートカットキーだけでなくアクセラレータキーもHookできるようです。この場合は上と同様に Destroyに一文を追加してください。 |