DELPHI OnKeyDown,OnKeyPress,OnKeyUp区别

有键按下 -> 产生onKeyDown事件 -> 如果是有ASCII码的按键, 则产生onKeyPress事件

有键释放 -> 产生onKeyUp事件

onkeydown和onkeypress的区别是有些键Shift、Ctrl、Alt、F1、F2、...等按键是不会产生onKeyPress事件的
如键盘的↑键onkeypress不会响应事件,但用onkeydown就可以响应


OnKeyPress 只能抓到数值或字母按键及 Esc键、空白键,但不含功能键(F1-F12) 
OnKeyDown 能抓到所有的键(除 Tab 键)但不能分辨「对称键」的不同 
OnShortCut 能抓到所有的键(含 Tab 键)且能分辨「对称键」的不同 


注:「对称键」指的是左右两边皆有的键,如「Enter」、「Shift」、「Ctrl」、「Alt」等等


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in shift then
    ShowMessage('ssCtrl');

shift 是一个集合变量。type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Value Meaning
ssShift              The Shift key is held down.
ssAlt                 The Alt key is held down.
ssCtrl               The Ctrl key is held down.
ssLeft               The left mouse button is held down.
ssRight            The right mouse button is held down.
ssMiddle           The middle mouse button is held down.
ssDouble         The mouse was double-clicked.



//==============================================================================
// 去掉按回车键登录的声音
//==============================================================================

procedure TFormLogin.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    Key := #0;
end;



说明:如果不想听到操作后的系统声音,并且如果不使用Shift、Ctrl、Alt、F1、F2、...等按键使用keypress


“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

踏雪无痕

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值