Jer*_*dge 2 delphi audio keyboard-shortcuts delphi-7
在我的应用程序中,当我按下时CTRL + S
,我的表单(启用了键预览)捕获并保存文档.但是当焦点在例如编辑控件中时,我会听到令人讨厌的"丁"声,或者通常是窗口声.我该如何避免这种声音?
这是我的表格捕获这个关键事件......
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
C: String;
begin
if not fChanging then
Modified;
if ssCtrl in Shift then begin
C:= LowerCase(Char(Key));
if C = 's' then begin
DoSave;
Key:= 0; //Tried this but didn't work
end else
if C = 'c' then begin
//Copy selected item(s)
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
PS - 是否有更标准的方法来捕获这些事件?因为我确定我做错了什么,而且我确信我还有另一种方法可以在没有声音的情况下获得这些关键事件.
有几件事:
FormKeyPress
而不是FormKeyDown
.这将使Key := 0;
代码工作......你需要手动处理CTRL检查,通过使用类似的东西GetKeyState()
(我原来在GetAsyncKeyState()
这里,但正如Rob Kennedy指出的那样,GetKeyState() is a much better option)
.TActionList
表单,就可以双击,添加一个动作,并设置它的热键为Ctrl-S.将保存代码添加到其OnExecute
事件处理程序中.我相信这是"正确"的方式.希望这可以帮助.
归档时间: |
|
查看次数: |
929 次 |
最近记录: |