当用户按下Ctrl+ C以便将一些文本复制到剪贴板时,我试图捕获.如果用户故意按下并按住Ctrl...然后按下C它将注册.
procedure <anObject>.KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) and (upcase(Char(key)) = 'C')
then
begin
//Copy code
end;
end;
Run Code Online (Sandbox Code Playgroud)
有没有理由发生这种情况?
谢谢!
Ser*_*yuz 21
Ctrl + C转换为字符消息.所以你最好使用一个OnKeyPress
处理程序(为响应a而触发WM_CHAR
):
procedure <anObject>.KeyPress(Sender: TObject; var Key: Char);
begin
if Key = ^C then
begin
// Copy code
end;
end;
Run Code Online (Sandbox Code Playgroud)
更新:
我相信发生了这样的事情:当快速按下时,用户按下'Ctrl',然后按'C',然后释放'Ctrl',最后释放'C'.正如您所看到的,当'C'的OnKeyUp被触发时,'Ctrl'键已经被释放.翻译的消息不会出现这种问题,如果操作系统注册了'copy'键,那么OnKeyPress将被触发.
归档时间: |
|
查看次数: |
7642 次 |
最近记录: |