|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
События клавиатурыОбработку клавиатуры можно выполнить, используя комбинацию трех событий. Событие 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 и т. д.). Решение Создайте новое приложение и сохраните его в папке Exercise?. Файл модуля — под именем Main.pas, файл проекта — Exercise 7. dpr. Измените значения свойств формы следующим образом: При нажатии любой клавиши клавиатуры возникают события 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'.-'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 сек.) |