keydown和KeyPress事件有何不同

KEYPRESS
When a windowed control receives a key-press message (WM_CHAR) from Windows, its message handler calls the DoKeyPress method.
说明:响应WM_CHAR消息,不包括一些功能键,如:F1,SHIFT键等

KEYDOWN
When a windowed control receives a key-down message (WM_KEYDOWN) from Windows, its message handler calls the DoKeyDown method.

响应WM_KEYDOWN消息



一个是按下去,一个是按下放上来时



procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  //只能触发单键事件
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  //在keyDown事件里可以触发shift+A等组合键事件
end;



Drate回答正确,其它人都没搞清楚,那是OnKeyUp!其实响应WM_CHAR就是按下字符键时激发,而按下其他功能键无效!

procedure WMChar(var Message: TWMChar); message WM_CHAR;

procedure TWinControl.WMChar(var Message: TWMChar);
begin
  if not DoKeyPress(Message) then inherited;
end;

procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;

procedure TWinControl.WMKeyDown(var Message: TWMKeyDown);
begin
  if not DoKeyDown(Message) then inherited;
end;

原文地址:https://www.cnblogs.com/jijm123/p/10351562.html

时间: 2024-11-06 03:38:22

keydown和KeyPress事件有何不同的相关文章

键盘事件keydown、keypress、keyup随笔整理总结(摘抄)

原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leolai/archive/2012/08/01/2618386.html 英文输入法: 事件触发顺序:keydown - > keypress - > keyup 中文输入法: firfox:输入触发keydown,回车确认输入触发keyup chrome:输入触发keydown.keyup,回车确

keydown、keypress、keyup的用法

一.KeyDown.KeyPress 与 KeyUp发生顺序 keydown - > keypress - > keyup 二.事件引发的时间 KeyDown 和 KeyPress 事件在按下键时发生,KeyUp 事件在释放键时发生. 三.KeyDown 触发后,KeyUp是不是一定触发 KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件. 四.KeyPress 和KeyDown .KeyPress之间的区别 1.KeyPress主要用

事件keydown和keypress

虽然从字面理解,keydown是按下一个键的意思, 但实际上二者的根本区别是,系统由keydown返回键盘的代码,然后由TranslateMessage函数翻译成成字符,由keypress 返回字符值.因此在keydown中返回的是键盘的代码,而keypress 返回的是ASCII字符.如果只想读取字符,用keypress,如果想读各键的状态,用keydown. 说keydown是按下, keypress 是按下并松开,是不对的.如果一直按着键, 这时不断地产生keydown和keypress.

C#控件中的KeyDown、KeyPress 与 KeyUp事件浅谈

C#控件中的KeyDown.KeyPress 与 KeyUp事件浅谈 研究了一下KeyDown,KeyPress 和 KeyUp 的学问.让我们带着如下问题来说明: 1.这三个事件的顺序是怎么样的? 2.KeyDown 触发后,KeyUp是不是一定触发? 3.三个事件的定义 4.KeyDown.KeyUp 和KeyPress 之间的区别 5.如何区分是否按的是小键盘? 6.PrScrn按键三个事件能够捕获吗? 7.{菜单键}和{开始键}KeyPress能够捕获吗? 8.如何捕获系统的组合键? 9

jQuery - 中文輸入法與KeyDown/KeyPress事件

最近專案中引用了Telerik ASP.NET擴充元件AutoComplete輸入欄位,測試時發現偶爾會不聽始喚,輸入文字時無法觸發資料查詢,在Javascript Source Code裡反覆追蹤測試,燃燒了可觀的寶貴春青,終於理出頭緒: 問題在中文輸入法! 過去模糊地知道中文輸入在瀏覽器的鍵盤事件行為上有些特殊,但從未深究,這回算是比較清楚研究其中的差別.其實最明顯的差異是: 切到中文輸入法後,輸入文字將不會觸發KeyPress事件,只會有KeyDown,而且傳回的e.keyCode會一律是

C#中KeyDown和KeyPress区别

1.比如说TexBox 输入'a' 按下->触发KeyDown事件,然后去处理 ->将a显示输入到文本框后 ->触发KeyPress事件

mousedown与mouseup 【】keydown与keypress与keyup

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="script/jquery-1.11.0.min.js" type="text/javascript"></script> <script type="text/javascript

[转]Delphi : keydown与keypress的区别,组合键

Shift 是一个集合变量. type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); 也就是说TShiftstate类型有ssShift, ssAlt, ssCtrl, ssLeft(鼠标左键), ssRight(鼠标右键), ssMiddle(鼠标中键), ssDouble (鼠标双击) Value Meaning ssShift The Shift key is held

KeyPress 和KeyDown 、KeyPress之间的区别

(一)键事件按下列顺序发生: KeyDown KeyPress KeyUp (二)KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件. (三)定义 KeyDown:在控件有焦点的情况下按下键时发生. KeyPress:在控件有焦点的情况下按下键时发生.(下面会说和KeyDown 的区别) KeyUp:在控件有焦点的情况下释放键时发生. (四)KeyPress 和KeyDown .KeyPress之间的区别 1.KeyPress主要用来捕获