среда, 13 апреля 2016 г.

12. События формы. Лабораторные Delphi, C++ (8)

События клавиатуры на форме в 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:
Delphi
procedure 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:
Delphi
procedure 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:
Delphi
procedure 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, в котором находится введенный символ.
Запустите программу на выполнение. Выполните проверки нажатия различных клавиш.










Комментариев нет:

Отправить комментарий