在 Windows 下,键盘的按键事件如下图:
以上按键事件传入的参数可以用来判断用户的按键行为:
参数为用户按键的 Key 值(word值),代表 Windows 中的 Virtual Key Code。
参数为一个 Char 值,是一个 ASCII 字符。
Virtual Key Code:
常数名称 | 十六进制值 | 十进制值 | 对应按键 |
VK_LBUTTON | 01 | 1 | 鼠标的左键 |
VK_RBUTTON | 02 | 2 | 鼠标的右键 |
VK-CANCEL | 03 | 3 | Ctrl Break(通常不需要处理) |
VK_MBUTTON | 04 | 4 | 鼠标的中键(三按键鼠标) |
VK_BACK | 08 | 8 | Backspace键 |
VK_TAB | 09 | 9 | Tab键 |
VK_CLEAR | 0C | 12 | Clear键(Num Lock关闭时的数字键盘5) |
VK_RETURN | 0D | 13 | Enter键 |
VK_SHIFT | 10 | 16 | Shift键 |
VK_CONTROL | 11 | 17 | Ctrl键 |
VK_MENU | 12 | 18 | Alt键 |
VK_PAUSE | 13 | 19 | Pause键 |
VK_CAPITAL | 14 | 20 | CapsLock键 |
VK_ESCAPE | 1B | 27 | Ese键 |
VK_SPACE | 20 | 32 | Spacebar键 |
VK_PRIOR | 21 | 33 | PageUp键 |
VK_NEXT | 22 | 34 | PageDomw键 |
VK_END | 23 | 35 | End键 |
VK_HOME | 24 | 36 | Home键 |
VK_LEFT | 25 | 37 | LEFTARROW键( ) |
VK_UP | 26 | 38 | UPARROW键( ) |
VK_RIGHT | 27 | 39 | RIGHTARROW键( ) |
VK_DOWN | 28 | 40 | DOWNARROW键( ) |
VK_Select | 29 | 41 | Select键 |
VK_PRINT | 2A | 42 | |
VK_EXECUTE | 2B | 43 | EXECUTE键 |
VK_SNAPSHOT | 2C | 44 | Print Screen键(抓屏) |
VK_Insert | 2D | 45 | Ins键(Num Lock关闭时的数字键盘0) |
VK_Delete | 2E | 46 | Del键(Num Lock关闭时的数字键盘.) |
VK_HELP | 2F | 47 | Help键 |
VK_0 | 30 | 48 | 0键 |
VK_1 | 31 | 49 | 1键 |
VK_2 | 32 | 50 | 2键 |
VK_3 | 33 | 51 | 3键 |
VK_4 | 34 | 52 | 4键 |
VK_5 | 35 | 53 | 5键 |
VK_6 | 36 | 54 | 6键 |
VK_7 | 37 | 55 | 7键 |
VK_8 | 38 | 56 | 8键 |
VK_9 | 39 | 57 | 9键 |
VK_A | 41 | 65 | A键 |
VK_B | 42 | 66 | B键 |
VK_C | 43 | 67 | C键 |
VK_D | 44 | 68 | D键 |
VK_E | 45 | 69 | E键 |
VK_F | 46 | 70 | F键 |
VK_G | 47 | 71 | G键 |
VK_H | 48 | 72 | H键 |
VK_I | 49 | 73 | I键 |
VK_J | 4A | 74 | J键 |
VK_K | 4B | 75 | K键 |
VK_L | 4C | 76 | L键 |
VK_M | 4D | 77 | M键 |
VK_N | 4E | 78 | N键 |
VK_O | 4F | 79 | O键 |
VK_P | 50 | 80 | P键 |
VK_Q | 51 | 81 | Q键 |
VK_R | 52 | 82 | R键 |
VK_S | 53 | 83 | S键 |
VK_T | 54 | 84 | T键 |
VK_U | 55 | 85 | U键 |
VK_V | 56 | 86 | V键 |
VK_W | 57 | 87 | W键 |
VK_X | 58 | 88 | X键 |
VK_Y | 59 | 89 | Y键 |
VK_Z | 5A | 90 | Z键 |
VK_NUMPAD0 | 60 | 96 | 数字键0键 |
VK_NUMPAD1 | 61 | 97 | 数字键1键 |
VK_NUMPAD2 | 62 | 98 | 数字键2键 |
VK_NUMPAD3 | 62 | 99 | 数字键3键 |
VK_NUMPAD4 | 64 | 100 | 数字键4键 |
VK_NUMPAD5 | 65 | 101 | 数字键5键 |
VK_NUMPAD6 | 66 | 102 | 数字键6键 |
VK_NUMPAD7 | 67 | 103 | 数字键7键 |
VK_NUMPAD8 | 68 | 104 | 数字键8键 |
VK_NUMPAD9 | 69 | 105 | 数字键9键 |
VK_MULTIPLY | 6A | 106 | 数字键盘上的*键 |
VK_ADD | 6B | 107 | 数字键盘上的 键 |
VK_SEPARATOR | 6C | 108 | Separator键 |
VK_SUBTRACT | 6D | 109 | 数字键盘上的-键 |
VK_DECIMAL | 6E | 110 | 数字键盘上的.键 |
VK_DIVIDE | 6F | 111 | 数字键盘上的/键 |
VK_F1 | 70 | 112 | F1键 |
VK_F2 | 71 | 113 | F2键 |
VK_F3 | 72 | 114 | F3键 |
VK_F4 | 73 | 115 | F4键 |
VK_F5 | 74 | 116 | F5键 |
VK_F6 | 75 | 117 | F6键 |
VK_F7 | 76 | 118 | F7键 |
VK_F8 | 77 | 119 | F8键 |
VK_F9 | 78 | 120 | F9键 |
VK_F10 | 79 | 121 | F10键 |
VK_F11 | 7A | 122 | F11键 |
VK_F12 | 7B | 123 | F12键 |
VK_NUMLOCK | 90 | 144 | NumLock键 |
VK_SCROLL | 91 | 145 | ScrollLock键 |
VK_LWIN | 91 | 左win键 | |
VK_RWIN | 92 | 右win键 | |
VK_APPS | 93 | 右Ctrl左边键,点击相当于点击鼠标右键,会弹出快捷菜单 | |
186 | ;(分号) | ||
187 | =键 | ||
188 | ,键(逗号) | ||
189 | -键(减号) | ||
190 | .键(句号) | ||
191 | /键 | ||
192 | `键(Esc下面) | ||
219 | [键 | ||
220 | 键 | ||
221 | ]键 | ||
222 | '键(引号) |
在键盘上按下任意一个键都会触发该事件。对于字母键、数字键、功能键、Ctrl、Shift 或 Alt 等键都将触发该事件。
在键盘上按下一个字符键会触发该事件,单独按下功能键、Ctrl、Shift 或 Alt 等键不会触发该事件。
在按下键盘上任一键后松开时会触发该事件。对于字母键、数字键、功能键、Ctrl、Shift 或 Alt 等键都将触发该事件。
在 OnKeyDown、OnKeyUp、OnMouseDown 和 OnMouseUp 等事件中,包含一个类型为 TShiftState 的变量 Shift,其值用于判断当键盘上的键按下时,Shift、Alt 和 Ctrl 键的状态,或者按下鼠标的状态。
TShiftState 类型的定义:
Type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
示例一:在按键过程中让窗体颜色发生变化。
var
FormColor: TColor;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FormColor := Form1.Color;
Form1.Color := clGreen;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Form1.Color := FormColor;
end;
示例二:模拟按下键盘的某个键。
在该例中,需要使用 Delphi WinAPI 消息函数 PostMessage,界面如下:
示例代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
// a
PostMessage(Edit1.Handle, WM_KEYDOWN, 65, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// b
PostMessage(Edit1.Handle, WM_KEYDOWN, 66, 0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
// c
PostMessage(Edit1.Handle, WM_KEYDOWN, 67, 0);
end;
示例三:在屏幕上输出按键操作的结果,包括:Shift、Alt和Ctrl键。界面如下:
示例代码:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Label1.Caption := '';
if Shift >= [ssShift] then
Label1.Caption := 'Shift + ';
if Shift >= [ssAlt] then
Label1.Caption := 'Alt + ';
if Shift >= [ssCtrl] then
Label1.Caption := 'Ctrl + ';
Label1.Caption := Label1.Caption + inttostr(key);
end;
页面更新:2024-05-09
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号