delphi中的KeyDown XE7需要转移到寄存器

delphi中的KeyDown XE7需要转移到寄存器,第1张

概述更新: 我机器上的另一个过程是干扰快捷方式检测. 在VCL TStringgrid中我想使用“Ctrl C”和/或“Ctrl c”复制内容 代码段: procedure TEditWaterFrame.sgSSPKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (ssCtrl in Shift) AN 更新:
我机器上的另一个过程是干扰快捷方式检测.

在VCL TStringgrID中我想使用“Ctrl C”和/或“Ctrl c”复制内容

代码段:

procedure TEditWaterFrame.sgsspKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin    if (ssCtrl in Shift) AND ((Key = Ord('c')) OR (key = Ord('C'))) then  // this just won't work without me holding ssShift as well,I'm clueless...!    begin        ShowMessage('Ctrl+C pressed as keys');        try            Clipboard.AsText    := writesspToCSVString(#9);        finally            Clipboard.Free;        end;    end;end;// trying with keypressprocedure TEditWaterFrame.sgsspKeyPress(Sender: TObject; var Key: Char);begin    if (Key = ^c) then  // this just won't work without me holding ssShift as well,I'm clueless...!    begin        ShowMessage('Ctrl+C pressed as char');        try            Clipboard.AsText    := writesspToCSVString(#9);        finally            Clipboard.Free;        end;    end;end;

上面的两个步骤仅在按下ssCtrl ssShift c / C时运行.
未按下ssShift时(即Ctrl c或Ctrl C),它不会触发.

我很神秘!

解决方法 我创建了一个空的VCL表单应用程序,在主表单中添加了一个字符串网格,并为其OnKeyDown事件实现了一个事件处理程序:

procedure TForm1.StringGrID1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin  if (ssCtrl in Shift) and (key = Ord('C')) then    Beep;end;

当我按下CTRL C时,计算机发出一声哔哔声.

程序中的其他内容正在处理应用程序中的按键 *** 作.

返回上面的条件,如果CTRL关闭,这将触发,而不管其他修改键的状态如何.所以你也会回复CTRL SHIFT C,CTRL ALT C和CTRL SHIFT ALT C.我怀疑你是否想这样做.所以你可能会把条件写成:

if (Shift*[ssCtrl,ssShift,ssAlt]=[ssCtrl]) and (key = Ord('C')) then

请注意,您的代码中存在许多错误:

>对Clipboard.Free的调用将破坏您不拥有的共享对象.你不能这样做.删除这些电话.
>你的if语句的逻辑是错误的.测试Key = Ord(‘c’)始终为false.按下该键时,无论修改键的状态如何,您都必须测试大写序号,Key = Ord(‘C’).
>如果a和b或c,您的条件是形式.运算符优先级意味着它被评估为(a和b)或c.这不是你想要的.

所有这一切都没有实际意义,因为无论修改器状态如何,当按下C键时您的条件评估为True.结论仍然是相同的:还有其他东西正在处理CTRL C并阻止该密钥发生事件到达您的代码.

总结

以上是内存溢出为你收集整理的delphi中的KeyDown XE7需要转移到寄存器全部内容,希望文章能够帮你解决delphi中的KeyDown XE7需要转移到寄存器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1258791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存