Pet*_*háč 4 delphi user-interface escaping event-handling onkeypress
在我几年前开发的代码中,我一直在使用它来关闭当前表单,随时按下Escape键:
procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then close;
end;
Run Code Online (Sandbox Code Playgroud)
此行为是为TForm定义的.表单的KeyPreview
属性设置为True
让表单在任何其他组件之前对按键做出反应.这一切都工作得很好了程序的最好的部分,然而,当同时TEDIT组件的重点是健全按下Esc键(一丁的声音由Windows用来表示无效操作)发出.它仍然工作正常,但我从来没有完全摆脱声音.
这有什么问题?
重新创建的步骤:
在"事件"选项卡上,双击onKeyPress事件并输入虚拟代码:
如果key =#27则;
将TListBox,TCheckBox,TEdit添加到表单并运行应用程序
Jim*_*eth 22
你得到了ding,因为你在输入中离开了ESC.看看Key是一个var?将其设置为#0,即可消除叮当声.这使它无法进一步处理.
procedure TSomeForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then
begin
key := #0;
close;
end;
end;
Run Code Online (Sandbox Code Playgroud)
KeyPreview就是这样,预览将传递给控件的内容,除非你停止它.
归档时间: |
|
查看次数: |
3247 次 |
最近记录: |