Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы Delphi / Лабораторная работа 2

.doc
Скачиваний:
36
Добавлен:
17.04.2015
Размер:
42.5 Кб
Скачать

Лабораторная работа № 2

События клавиатуры

Обработку событий клавиатуры можно выполнить, используя комбинацию трех обработчиков.

Событие OnKeyDown происходит при нажатии любой клавиши, включая функциональные и специальные:

Procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Событие OnKeyUp происходит при отпускании любой клавиши:

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

Событие OnKeyPress возникает при нажатии клавиши, генерирующей символы ASCII, включая управляющие клавиши:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

Каждый из обработчиков событий получает параметр Key, который представляет нажатую клавишу. В обработчиках событий OnKeyDown и OnKeyUp параметр Key является беззнаковым значением типа Word, которое представляет код виртуальной клавиши Windows. В обработчике события OnKeyPress параметр Key – это значение типа Char, представляющее символ ASCII. Несмотря на то, что обе переменные называются Key, они представляют различную информацию. Все ASCII-символы имеют соответствующие коды виртуальных клавиш, но многие виртуальные клавиши не имеют ASCII-эквивалента, например, клавиша HOME.

Упражнение 1. Напишите приложение, закрывающееся как Pascal при одновременном нажатии клавиш Alt и X.

Создайте новое приложение, выполнив последовательность команд: File / New Application. Сохраните новое приложение в папке Exercise1, вложенной в папку Lab2. Файл модуля – под именем Unit1, файл проекта – Project1.

Измените значение свойства заголовка формы следующим образом: «Для закрытия приложения нажмите Alt + X».

Приложение должно закрываться, если одновременно нажаты обе клавиши, для обработки такой ситуации можно воспользоваться событием OnKeyDown. Создайте обработчик этого события. Воспользуемся значением параметра Shift для определения нажатия клавиши Alt:

If ssAlt in Shift then Close; {Close – это метод формы, закрывающий ее}

Запустите приложение, нажатие клавиши Alt приведет к закрытию формы.

Определим код клавиши X. Добавьте в обработчик события OnKeyDown оператор:

Caption:=IntToStr(Key);

Здесь IntToStr(x) – это функция, которая преобразует целое число x в значение строкового типа, Key – код нажатой клавиши.

Запустите приложение. При нажатии клавиши с латинской буквой ‘x’ в заголовке отобразится число 88.

Итак, для решения задачи напишем следующий код обработчика события OnKeyDown формы:

Procedure TMainF.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Begin

If (ssAlt in Shift) And (Key=88) Then Close;

End;

Сохраните приложение и запустите его. При одновременном нажатии клавиш Alt и латинской буквы “x” приложение закрывается.

Эксперимент Запустите приложение и попробуйте закрыть приложение одновременным нажатием клавиш Alt и русской буквой “ч”. Объясните, почему приложение закрылось?

Упражнение 2. Напишите программу, которая определяет нажатую на клавиатуре клавишу и выводит в заголовок формы информацию об этой клавише (код виртуальной клавиши, символ, ASCII-код, информацию, о том, является ли символ заглавной или строчной латинской или русской буквой, цифрой или специальным символом).

Например, при нажатии строчной латинской буквы ‘a’, в заголовке должна быть надпись:

‘Код виртуальной клавиши=65 a – строчная латинская буква ASCII-код=97’ (аналогично для русских букв, цифр, специальных символов (запятая, точка, скобки и т.д);

при нажатии клавиши стрелки вправо:

‘Код виртуальной клавиши = 39’,

(аналогично для всех специальных клавиш (F1, Insert и т.д.)).

Решение

Закройте предыдущий проект, выполнив команду Close all меню File. Создайте новое приложение, выполнив последовательность команд: File / New Application. Сохраните новое приложение в папке Exercise2.

Измените значение свойства заголовка Caption формы следующим образом: «Информация о клавишах клавиатуры».

При нажатии любой клавиши клавиатуры возникают события OnKeyDown и OnKeyUp. Для получения информации о коде виртуальной клавиши создадим обработчик события OnKeyDown:

Procedure TMainF.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Begin

Caption:='код виртуальной клавиши='+IntToStr(Key);

End;

Сохраните приложение и запустите его. При нажатии любой клавиши в заголовке формы отображается код этой клавиши.

Для отображения информации о символах воспользуемся обработчиком события OnKeyPress, параметр Key которого содержит символьное значение, представляющее символ ASCII. Создайте обработчик события OnKeyPress и введите оператор:

Procedure TMainF.FormKeyPress(Sender: TObject; var Key: Char);

Begin

Caption:=Key;

End;

Сохраните приложение и запустите его. При нажатии на клавишу «F» в заголовке формы отображается символ F. Это происходит вследствие того, что при нажатии на клавишу вначале происходит событие OnKeyDown, после обработки которого возникает событие OnKeyPress, в результате этого код виртуальной клавиши затирается изображением символа. Измените код следующим образом:

Procedure TMainF.FormKeyPress(Sender: TObject; var Key: Char);

Begin

Case Key of

'a'..'z': Caption:=Caption+' '+Key+' – строчная латинская буква';

'A'..'Z': Caption:=Caption+' '+Key+' – заглавная латинская буква';

'0'..'9': Caption:=Caption+' '+Key+' - цифра';

'а'..'я': Caption:=Caption+' '+Key+' – строчная русская буква';

'А'..'Я': caption:=Caption+' '+Key+' – заглавная русская буква';

Else Caption:=Caption+' специальный символ';

End;

Caption:=Caption+' ASCII-код='+IntToStr(Ord(Key));

End;

Сохраните приложение и запустите его. Приложение работает так, как описано в условии задачи.

Задания для самостоятельного выполнения

  1. Напишите программу, которая подсчитывает количество нажатий клавиш управления курсором. Например, ‘Влево – 1, Вверх – 0, Вправо – 5, Вниз - 37’.

  2. Напишите программу, которая при нажатии на клавиши управления курсором перемещает форму в соответствующем направлении; при нажатии комбинации клавиши Shift и клавиши управления курсором - изменяет размеры формы, при этом в заголовке формы должна отображаться информация о размерах и положении формы.

  3. Напишите программу отображения графиков функций: y=x2; y=sin(x); y=tg(x). При нажатии на клавишу «1» изображается график функции y=x2; при нажатии на клавишу «2» изображается график функции y=sin(x); при нажатии на клавишу «3» изображается график функции y=tg(x).

  4. Напишите программу отображения графиков функций y=a*sin(bx) и y=a*cos(bx). При нажатии на клавишу «s» изображается график синуса y=sin(x), «с» - косинуса y=cos(x). При нажатии на клавиши влево/вправо происходит изменение параметра b, при нажатии на клавиши вверх/вниз – параметра a. В заголовок формы выведите название графика функции, например, y=3sin(-2x).