在 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);
1.3鍵盤編程示例示例一:在按鍵過程中讓窗體顔色發生變化。
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;
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!