События клавиатуры на форме в Delphi и C++Builder
Запустите на выполнение Delphi или C++Builder. Создайте новый проект, выбрав в меню File | New | VCL
Forms Application - Delphi (File | New | VCL Forms Application – C++Builder).
Для свойства формы KeyPreview
установите значение True, чтобы события нажатия клавиш
на любом компоненте формы вначале передавались соответствующим обработчикам
самой формы. Положите на форму компонент ListBox. Сюда
будут помещаться сообщения программы. Установите в значение True все подсвойства свойства Anchors: akLeft, akTop, akRight и akBottom.
Компонент будет привязан ко всем сторонам формы.
Рис. 1. Созданная форма
События нажатия клавиш
Событие формы OnKeyDown
возникает при нажатии пользователем на клавиатуре любой клавиши. Обработчику
события передается параметр Key типа данных Word.
Выделите мышью форму, перейдите
на вкладку событий Events.
Создайте следующий обработчик события для OnKeyDown:
procedure
begin
end;
TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
ListBox1.Items.Add('KeyDown. Char = ' +
Char(Key) +
'. Int = '
+
IntToStr(Key));
end;
C++Builder
void __fastcall
TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
AnsiString S;
S = "KeyDown. Char = ";
S = S + (AnsiChar)(Key);
S = S +
". Int = "
+
IntToStr(Key);
ListBox1->Items->Add(S);
}
Параметр Key передается
обработчикам событий OnKeyDown и OnKeyUp.
Некоторые его значения описаны в табл. 1.
Таблица 1.
Значения параметра Key
Клавиша
|
Символьное
значение
|
Числовое
значение
|
Backspace
|
|
8
|
Enter
|
|
13
|
Shift
|
|
16
|
Ctrl
|
|
17
|
Alt
|
|
18
|
Caps Lock
|
|
20
|
Esc
|
|
27
|
Пробел
|
Пробел
|
32
|
PgUp
|
!
|
33
|
PgDn
|
"
|
34
|
End
|
#
|
35
|
Home
|
$
|
36
|
Стрелка влево
|
%
|
37
|
Стрелка вверх
|
&
|
38
|
Стрелка вправо
|
'
|
39
|
Стрелка вниз
|
(
|
40
|
Ins
|
-
|
45
|
Del
|
.
|
46
|
0
|
0
|
48
|
1
|
1
|
49
|
A
|
A
|
65
|
B
|
B
|
66
|
0 на цифровой клавиатуре
|
|
96
|
1 на цифровой клавиатуре
|
a
|
97
|
* на цифровой клавиатуре
|
j
|
106
|
+ на цифровой клавиатуре
|
k
|
107
|
- на цифровой клавиатуре
|
m
|
109
|
/ на цифровой клавиатуре
|
o
|
111
|
F1
|
p
|
112
|
F2
|
q
|
113
|
NumLock
|
|
144
|
ScrollLock
|
|
145
|
Запустите программу на
выполнение. Нажимайте различные клавиши на клавиатуре. Смотрите результаты.
Завершите программу.
Создайте простой обработчик
события OnKeyUp:
procedure
begin
end;
TForm1.FormKeyUp(Sender: TObject;
var Key: Word; Shift:
TShiftState);
begin
ListBox1.Items.Add('KeyUp');
end;
C++Builder
void __fastcall
TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
ListBox1->Items->Add("KeyUp");
}
Запустите программу на
выполнение. Выполните различные проверки. Завершите программу.
Создайте обработчик события OnKeyPress:
procedure
begin
end;
TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
ListBox1.Items.Add('KeyPress. Char = ' + Char(Key));
end;
C++Builder
{
AnsiString S;
S = "KeyPress. Char = ";
S = S + (AnsiChar)(Key);
ListBox1->Items->Add(S);
}
Обработчику передается параметр Key типа данных Char, в котором
находится введенный символ.
Запустите программу на
выполнение. Выполните проверки нажатия различных клавиш.