在我几年前开发的代码中,我经常使用它来关闭当前窗体,随时按 Escape 键:
procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then close;
end;
此行为是为 TForm 定义的。表单的
KeyPreview
属性设置为 True
以让表单在任何其他组件之前对按键使用react。对于程序的最佳部分,这一切都运行良好,但是,当在 TEdit 组件聚焦的同时按下 Escape 键时,会发出声音(Windows 用来表示无效操作的 clang )。它仍然可以正常工作,但我从来没有完全摆脱过这种声音。这有什么问题?
重建步骤:
如果键=#27 那么;
最佳答案
你得到 ding 是因为你在输入中留下了 ESC。看看 Key 是 var 吗?将其设置为 #0 并消除 clang 。这会将其从进一步处理中移除。
procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then
begin
key := #0;
close;
end;
end;
KeyPreview 就是这样,预览将传递给控件的内容,除非您停止它。
关于delphi - 如何避免在聚焦 TEdit 时按下 Escape 时的 clang ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/770207/