Категории
Самые читаемые
💎Читать книги // БЕСПЛАТНО // 📱Online » Компьютеры и Интернет » Программирование » Программирование в Delphi. Трюки и эффекты - Александр Чиртик

Читаем без скачивания Программирование в Delphi. Трюки и эффекты - Александр Чиртик

Читать онлайн Программирование в Delphi. Трюки и эффекты - Александр Чиртик

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 6 7 8 9 10 11 12 13 14 15
Перейти на страницу:

Получение информации о клавиатуре

Начнем с небольшого примера, позволяющего определить некоторую информацию о клавиатуре (листинг 3.16). Данный пример основан на использовании API-функции GetKeyboardType.

Листинг 3.16. Получение информации о клавиатуре

procedure TForm1.FormCreate(Sender: TObject);

begin

//Определяем тип клавиатуры

case GetKeyboardType(0) of

  1: txt Type.Text:= 'PC/XT или совместимая (83 клавиши)';

2: txt Type.Text xtxt:= 'Olivetti" ICO " (102 клавиши)';

3: txt Type.Text xtxt:= 'PC/AT (84 клавиши) или похожая';

4: txt Type.Text:= 'Расширенная (101 или 102 клавиши)';

5: txt Type.Text:= 'Nokia 1050 или похожая';

6: txt Type.Text:= 'Nokia 9140 или похожая';

7: txt Type.Text:= 'японская';

end;

//Определяем код типа производителя

txtSubtype.Text:= IntToStr(GetKeyboardType(1));

//Определяем количество функциональных клавиш

  txtKeys.Text:= IntToStr(GetKeyboardType(2));

end;

При создании формы происходит заполнение текстовых полей информацией о типе клавиатуры, коде типа, присвоенном производителем, и количестве функциональных клавиш.

На рис. 3.2 показан возможный результат определения информации о клавиатуре.

Рис. 3.2. Информация о клавиатуре

Опрос клавиатуры

Существует достаточно удобная альтернатива обработке событий клавиатурного ввода, которая может оказаться особенно полезной, если необходима информация о состоянии сразу нескольких клавиш. Это может понадобиться, если пользователь должен одновременно удерживать нажатыми несколько клавиш. Например, в гоночных симуляторах, чтобы проезжать поворот, необходимо одновременно удерживать клавишу ↑ (газ) и одну из клавиш поворота (← или →).

В листинге 3.17 приведен пример обработчика события Timer1Timer, определяющего, нажаты ли клавиши ↑, ↓, ←, →, а также пробел, Enter, Ctrl (правый), Shift (правый) и Alt (правый).

Листинг 3.17. Определение состояния некоторых клавиш

procedure TForm1.Timer1Timer(Sender: TObject);

var

buttons: TKeyBoardstate;

begin

//Получаем состояния клавиш

GetKeyboardState(buttons);

//Отобразим состояния клавиш

//..пробел

if buttons[VK_SPACE] and 128 <> 0 then

SendMessage(cmbSpace.Handle, BM_SETSTATE, BST_CHECKED, 0)

else

SendMessage(cmbSpace.Handle, BM_SETSTATE, BST_UNCHECKED, 0);

//..enter

if buttons[VK_RETURN] and 128 <> 0 then

SendMessage(cmbEnter.Handle, BM_SETSTATE, BST_CHECKED, 0)

else

SendMessage(cmbEnter.Handle, BM_SETSTATE, BST_UNCHECKED, 0);

//..правый Ctrl

if buttons[VK_RCONTROL] and 128 <> 0 then

SendMessage(cmbRCtrl.Handle, BM_SETSTATE, BST_CHECKED, 0)

Конец ознакомительного фрагмента.

1 ... 6 7 8 9 10 11 12 13 14 15
Перейти на страницу:
На этой странице вы можете бесплатно скачать Программирование в Delphi. Трюки и эффекты - Александр Чиртик торрент бесплатно.
Комментарии