АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. Акции и специальные события
  2. Алармы и события
  3. Блока СКЗИ тахографа) информации о событиях
  4. Большинство битв в вашей жизни проиграны из-за невнимания к вещам и событиям.
  5. ВВод информации с Клавиатуры
  6. Вероятности события в независимых испытаниях.
  7. Вероятность появления хотя бы одного события.
  8. Вероятность случайного события – это количественная оценка объективной возможности появления данного события.
  9. Временные периоды или исторические события
  10. Глава 11. СОБЫТИЯ У СТЕНЫ ПРОДОЛЖАЮТ РАЗВОРАЧИВАТЬСЯ. Я ПО-ПРЕЖНЕМУ ОБРАЩАЮ СВОЙ ВЗОР НА СЕВЕР И ОСТАНАВЛИВАЮСЬ ЛИШЬ ДЛЯ ТОГО, ЧТОБЫ ОБРАТИТЬ ЖЕНЩИНУ В РАБСТВО
  11. Глава двенадцатая. ПРАЗДНИКИ. ЦАРСКИЕ ДНИ. СЕМЕЙНЫЕ СОБЫТИЯ
  12. Главные события

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

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

procedure TForml.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

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

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

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

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

 

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

Параметр Shift имеет тип TShiftState (см. события мыши).

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

Решение

Создайте новое приложение и сохраните его в папке Exerci-se6. Файл модуля — под именем Main,pas, файл проекта —Exercise6.dpr.

Измените значения свойств формы следующим образом:

Приложение должно закрываться, если одновременно нажа­ты обе клавиши, для обработки воспользуемся событием ОпКеу Down. Создайте обработчик этого события.

Воспользуемся значением параметра Shift для определения нажатия клавиши Alt:

if ssAlt in Shift then Close;

{Close — это метод формы, закрывающий ее}

Эксперимент. Убедитесь, что нажатие клавиши Alt приве­дет к закрытию формы. ♦

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

Caption:=IntToStr(Key);

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

Эксперимент. Запустите приложение. Определите виртуа­льный код клавиши с латинской буквой «х». ♦

Итак, виртуальный код клавиши с латинской буквой «х» равен 88. Для решения задачи напишем следующий код обра­ботчика события OnKeyDown формы:

procedure TMainF.FormKeyDown(Sender: TObject; var Key:

Word; Shift: TShiftState);

begin

if (ssAlt in Shift) and (Key=88) then Close; end;

Эксперимент. Сохраните приложение. Убедитесь, что при одновременном нажатии клавиш Alt и латинской буквы «х» независимо от выбранного языка приложение закрывается. Объ­ясните это. ♦

Упражнение 2.3.4.2.2. Напишите программу, которая опре­деляет нажатую на клавиатуре клавишу и выводит в заголовок формы информацию об этой клавише.

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

«Код виртуальной клавиши=65 а — строчная латинская бук­ва ASCII-Kod=97»

(аналогично для русских букв, цифр, специальных символов — запятая, точка, скобки и т. д.); при нажатии клавиши стрелка вправо:

«Код виртуальной клавиши = 39» (аналогично для всех специальных клавиш — Fl, Insert и т. д.).

Решение

Создайте новое приложение и сохраните его в папке Exerci­se?. Файл модуля — под именем Main.pas, файл проекта — Exercise 7. dpr.

Измените значения свойств формы следующим образом:

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

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'.-'z1: Caption:=Caption+" '+Key+' — строчная латинская буква';

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

'О'.-'Э1: Caption:=Caption+' '+Key+' -цифра1; 'а'..'я': Caption:=Caption+' '+Кеу+' — строчная русская буква';

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

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

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

Эксперимент. Сохраните приложение. Проверьте, является ли написанная программа решением поставленной задачи. ♦

 

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

1. Напишите программу отображения графиков функций:

у=х2; y=sin(x); y=tg(x).

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

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

4. Напишите программу, которая при нажатии на клавиши управления курсором перемещает форму в соответствующем направлении; при нажатии комбинации клавиши <Shift> и клавиши управления курсором — изменяет размеры формы.

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)