Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Рабочая программа'
              Настоящая рабочая программа разработана применительно к учебной программе курса русский язык для 3 классов общеобразовательных учреждени...полностью>>
'Документ'
м 98 Ширина, м 15 Высота борта,м 4,8 Осадка по КВЛ, м 3,3 Количество мест, 181 Экипаж, чел 31 Пассажиров, чел 150 Количество легковых автомобилей 47 И...полностью>>
'Документ'
'Документ'
М./ /Голенкина Н.С./ /Гуськова Н.А./ Школьный этап Всероссийской олимпиады школьников 013- 014 учебный год Предмет: физика « 9 » класс ПРОТОКОЛ № п\п ...полностью>>

Главная > Решение

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

РГГУ, ПИ-21. 2009-2010 уч.г. преподаватель: Утёмов В.В.

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

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

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

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

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

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

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

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

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

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

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

Решение

Создайте новое приложение, выполнив последовательность команд: File / New Application. Сохраните новое приложение в папке Task1 (сначала создайте папку). Файл модуля – под именем 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. Напишите программу, которая определяет нажатую на клавиатуре клавишу и выводит в заголовок формы информацию об этой клавише.

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

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

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

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

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

Решение

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

Измените значение свойства заголовка 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. Напишите программу, которая при нажатии на клавиши управления курсором перемещает форму в соответствующем направлении; при нажатии комбинации клавиши и клавиши управления курсором - изменяет размеры формы.

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

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



Похожие документы:

  1. Книги: Англо-русский и русско-английский словарь пк

    Документ
    ... из решения; выполнять операции ... new создать новый; create backup создать резервную копию; create directory создать ... нужно сохранить на ... flow controller контроллер последовательности команд ... папки буфера обмена clipbook viewer окно приложения application ...
  2. А. Крузенштерн Художник л адуевекая Литературный редактор //. Рощшш Корректоры // ХохЯОва, и смирнова Верстка ю сергиенко ббк 32. 973-018. 2

    Документ
    ... хотите создать новый параметр. Выполните последовательность команд Правка ► Создать (Edit ► New) ... выполните ко­манду Консоль ► Сохранить (File ► Save) пли Консоль ► Сохранить как (File ... приложения Компонент Службы и приложения (Services and applications ...
  3. Урок краткое введение в курс delphi

    Документ
    ... последовательности: 1. Каталог из которого приложение ... указанную папку проводником ... приложения. Запускаем Delphi. В меню "File" выбираем пункт "New Application ... и выполняется команда создания ... решения, ... сохраняются. Рассмотрим пример. Создайте новый ...
  4. Сборник статей «Handbook» inside ! : «Linux не для идиотов» inside ! : Версия 2 от 01. 09. 2007 2007 г

    Сборник статей
    ... сохранить изменения) и даем последовательность команд ... , предусмотрены решения, управляемые ... папку. Когда вы создаете локальный акаунт, используйте uid, gid и домашнюю папку нового ... команду file ... Application Now ... выполняются все графические приложения ...
  5. Эту файловую систему используют такие операционные системы, как Windows nt/2000/XP. При установке ntfs, диск разделяется на две неравные части: первая отводитьс

    Документ
    ... Backup now... ... Управление приложениями (Application Management) ... File System) и FAT (File ... скорость). Команда сохраняет свое ... способ решения этой ... папке System Volume Information создаются новая папка с новым ... или выполнить последовательность команд (в ...

Другие похожие документы..