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

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

СКАЧАТЬ тип клавиатуры

      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)

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

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

      Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

iVBORw0KGgoAAAANSUhEUgAAAjwAAADhCAMAAAD77p9wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF////JSAnQ4rBuoBP8syYms7tfjhDMEqRqqil/PDFxe/43Kt5cqzZ/v3k4/z9g36QVi6aKwAALONJREFUeNrsXQubqygM9QEqIvj//+2SnATQ2plp53E7s7jf3k6rBsRjADk56fq2te3Jreu779j6F7TUti+/yQ08bWvgaVsDTwNPA08DTwNPA0/b3gWPG/t+33f6d/26Wx7Gfp76ee/n9bPgMVPfb6v5sgq27Qs9T7o5tov+M7f59pa7cSP8BPN58HSomuln2+7aq4HH9Qk83ReDp1til8ATw9J9GXj6Bp7X9DwBd8hP+7TxTzs96GbaH4ZUHqmQ54l06/stGV/St33qh/VhSyF7nlXq56Zkak7OsrfJqnUTfXPJeAIY7d0nG2QnFUufa/DzNMR227/a80zZ85h+S7ckocen+zDQ13Sf4pPgSZ6H7hZZSDc+/T8kONmnPI8MymyY5jXZCHtMpjb6JlZTTdNhVNuVfvU4FNdAB9Be6+jK2va1nqdXz+Po5tKNDn6Tu/Lg/b7wPI5vOMDjnwFP5XlSvSJVyEU3puoyLIfO7fwh4El/RvwZBTzJj26G9jz8ILTtI54nsufhv7h7GBk8qSNIj/z6Wc/TLzvuZHzW8+Qxjxsn+Mk9WUuWdyojLBN9TQWkXwioqdJWd6Zf02e6nH5f9qWB59s8T5jU84wWt8I+Y/fseZIleJ5u/KTnMei23E4eUf2M425rSMftGA СКАЧАТЬ