加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在TEdit聚焦时按下Escape时避免叮当声?

发布时间:2020-12-15 09:44:06 所属栏目:大数据 来源:网络整理
导读:在我几年前开发的代码中,我一直在使用它来关闭当前表单,随时按下Escape键: procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);begin if key = #27 then close;end; 此行为是为TForm定义的.表单的KeyPreview属性设置为True,以使表单在任何
在我几年前开发的代码中,我一直在使用它来关闭当前表单,随时按下Escape键:

procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if key = #27 then close;
end;

此行为是为TForm定义的.表单的KeyPreview属性设置为True,以使表单在任何其他组件之前对按键做出反应.这一切对于程序的最佳部分都非常有效,但是,当TEdit组件聚焦时按下Escape键时会发出声音(Windows用来表示无效操作的声音).它仍然工作正常,但我从来没有完全摆脱声音.

这有什么问题?

重新创建的步骤:

>新的VCL Forms应用程序,将表单的KeyPreview设置为true
>在“事件”选项卡上,双击onKeyPress事件并输入虚拟代码:

如果key =#27则;
>将TListBox,TCheckBox,TEdit添加到表单并运行应用程序
>在应用程序中尝试按Esc和NOTHING,如虚拟代码所指定
>关注TEdit并按Esc.没有任何事情发生,但声音播放.

解决方法

你得到了ding,因为你在输入中离开了ESC.看看Key是一个var?将其设置为#0,即可消除叮当声.这使它无法进一步处理.

procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if key = #27 then 
    begin
      key := #0;
      close;
    end;
end;

KeyPreview就是这样,预览将传递给控件的内容,除非你停止它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读