
- •Саблукова н.Г. Программирование в среде delphi
- •Часть II
- •Создание проектов
- •Содержание
- •§1 Добавление графических изображений в проект
- •§2 Использование элементов анимации и мультипликации
- •Движение объектов
- •Задания
- •2.2 Изменение форм и видов объектов
- •Задания
- •2.3 Изменение размеров объектов
- •2.4 Пример программы движения объектов с элементами анимации и мультипликации типа «Тараканьи бега»
- •§3 Управление объектами
- •3.1 Управление объектом с помощью мыши
- •Создание проекта с использованием управления объектом с помощью мыши
- •Задания
- •3.3 Управление объектом с помощью клавиатуры
- •Задания
- •§4 Работа со строками
- •4.1 Строковый тип данных
- •4.2 Использование компонента tMemo для работы со строками
- •4.3 Работа со строками с помощью компонентов
- •Задания
- •5. Массивы
- •5.1 Одномерные массивы
- •Доступ к элементам массива
- •Задания
- •Многомерные массивы. Пример создания проекта с границами типа «Лабиринт»
- •Задания
- •6. Создание меню
- •6.1 Главное и вложенное меню
- •6.2 Создание текстового редактора с изменяемыми настройками типа «меню» и элементами диалога
- •7. Элементы мультимедиа
- •Литература
Задания
Создать проект, в котором по форме случайным образом перемещается мячик. При щелчке на шарике мышью, должно отобразиться сообщение: «Попадание».
Изменить предыдущий проект таким образом, чтобы в нем подсчитывалось количество попаданий.
Создать проект «Воздушные шары». В этом проекте должны двигаться снизу вверх несколько воздушных шаров. При щелчке мышью по шарику, он должен взорваться. В проекте следует предусмотреть подсчет количества попаданий. Если шарик улетел за верхнюю границу, то необходимо уменьшить количество жизней.
3.3 Управление объектом с помощью клавиатуры
Для управления клавиатурой в Delphi используются следующие события:
OnKeyDown – событие, которое возникает при нажатии любой клавиши на клавиатуре, включая функциональные и специальные.
OnKeyUp – событие, которое происходит при отпускании клавиши на клавиатуре.
Коду нажатой или отпущенной клавиши соответствует параметр Key. При управлении клавиатурой с помощью этих событий параметр Key имеет целочисленный тип. Key представляет собой код виртуальной клавиши Windows.
Пример. Создать программу, в которой заголовок формы меняется в соответствии с кодом нажатой клавиши. Форма должна закрываться при нажатии на клавишу Alt. |
Текст программного кода будет следующим:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); |
Begin |
Form1.Caption: = IntToStr(Key); |
if ssAlt in Shift then Close; |
end; |
В этой программе параметр Shift указывает состояние клавиши Alt (нажата или нет). Этот параметр также определяет состояние клавиш Ctrl и Shift.
OnKeyPress – событие, которое возникает, когда нажата и отпущена клавиша на клавиатуре. Оно отличается от событий OnKeyDown и OnKeyUp тем, что параметр Key, передаваемый в метод обработки, имеет не целочисленный, а символьный тип Char.
Событие OnKeyPress возникает при вводе с клавиатуры символа ASC II, т.е. оно не генерируется, например, при нажатии функциональных клавиш. Обработчик события вызывается только при нажатии буквенных, цифровых клавиш, а также некоторых комбинаций клавиш.
Каждому символу, как видимому, так и невидимому, а значит и каждой клавише клавиатуры соответствует определенный код ASCII. Для получения символа по его коду в языке Delphi используется либо функция Chr, либо запись вида # код.
В таблице 1 приведены расширенные коды клавиш.
Таблица 1 ASC II кода
код |
Клавиша или комбинация клавиш |
код |
Клавиша или комбинация клавиш |
8 |
BackSpace |
48 |
0,) |
9 |
Tab |
49 |
1 ! |
13 |
Enter |
50 |
2 @ |
16 |
Shift |
51 |
3 # |
32 |
Пробел |
52 |
4 $ |
17 |
Ctrl |
53 |
5 % |
18 |
Alt |
54 |
6 ^ |
20 |
CapsLock |
55 |
7 & |
27 |
Esc |
56 |
8 * |
45 |
Insert |
57 |
9 ( |
33 |
PageUp |
192 |
` ~ |
34 |
PageDown |
189 |
- _ |
35 |
End |
187 |
= + |
36 |
Home |
219 |
[ { |
37 |
курсор ← |
221 |
] } |
38 |
курсор ↑ |
186 |
; : |
39 |
курсор → |
222 |
' " |
40 |
курсор ↓ |
220 |
| |
46 |
Delete |
188 |
, < |
44 |
PrintScreen |
190 |
. > |
145 |
ScrollLock |
191 |
/ ? |
65-90 |
a A - z Z |
|
|
Рассмотрим пример проекта с использованием события OnKeyPress.
Пример. Составить проект, в котором следует клавишами управления курсором двигать прицел и выстрелить в него при нажатии на клавишу Enter. |
Создадим графический интерфейс по образцу рис. 25. Для этого на форме разместим два компонента TImage. В объект Image1 загрузим изображение прицела, в объект Image2 – изображение пульки. У объекта Image2 установим свойство Visible равным false.
Рис. 25 Графический интерфейс окна
Создадим обработчик
события OnKeyPress.
В нем сначала опишем движение прицела
вместе с пулькой вправо при нажатии на
клавишу
.
Для этого проверим, чему равен код key.
Когда код равен #39, перемещаем прицел
вместе с пулькой вправо на 5 позиций.
Аналогично задаем движение прицела
влево. Далее описываем движение пульки
при выстреле. Если нажата клавиша Enter
(код #13), тогда пулька должна выстрелить
из прицела.
Обработчик события OnKeyPress будет следующим:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char |
Begin |
If key=#39 then |
begin |
Image1.Left:=Image1.Left+5; |
Image2.Left:=Image2.Left+5; |
end; |
If key=#37 then |
begin |
Image1.Left:=Image1.Left-5; |
Image2.Left:=Image2.Left-5; |
end; |
If key=#13 then |
begin |
Image2.Visible:=true; |
Image2.Top:=Image2.Top-60; |
end; |
End; |