数年前に開発したコードでは、これを頻繁に使用して、Escapeキーを押したときに現在のフォームを閉じています。
procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then close;
end;
この動作はTFormに対して定義されています。フォームのKeyPreview
プロパティはTrue
、他のコンポーネントの前にフォームがキーの押下に反応するように設定されています。プログラムの最良の部分ではすべて完全に機能しますが、TEditコンポーネントがフォーカスされているときにEscキーを押すと、サウンド(Windowsが無効な操作を示すために使用する音)が鳴ります。それでも問題なく動作しますが、私は音を完全に取り除くことができませんでした。
これの何が問題なのですか?
再作成する手順:
- 新しいVCLフォームアプリケーション。フォームのKeyPreviewをtrueに設定します
[イベント]タブで、onKeyPressイベントをダブルクリックし、ダミーコードを入力します。
key =#27の場合;
TListBox、TCheckBox、TEditをフォームに追加し、アプリケーションを実行します
- アプリケーションでEscキーを押してみてください。ダミーコードで指定されているように、何も起こりません。
- TEditにフォーカスを合わせ、Escキーを押します。何も起こりませんが、音が鳴ります。