Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как отловить правый Enter (NumPad)

Delphi , ОС и Железо , Клавиши

Как отловить правый Enter (NumPad)


Автор: Full
WEB-сайт: http://full.hotmail.ru

Заходит в лифт программист и вспоминает что ему надо попасть на 12-ый этаж. Что делать? Ну, нажимает он "1", потом нажимает "2" и начинает судорожно искать кнопку "ENTER"

Для этого можно воспользоваться функцией GetHeapStatus:


procedure TForm1.WMKeyDown(var message: TWMKeyDown);
begin
  inherited;
  case message.CharCode of
    VK_RETURN:
    begin
      if (message.KeyData and $1000000 <> 0) then
      begin
        { ENTER on numeric keypad }
      end
      else
      begin
        { ENTER on the standard keyboard }
      end;
    end;
  end;
end;

Бессмертная погоня за ловлей того злостного Enter-кнопки на NumPad!

В этом коде-наборе автор успешно реализовал обходной путь для обнаружения, был ли нажат Enter-кнопка на цифровом панели (NumPad) или на стандартном клавиатуре.

Давайте разбираться:

  1. Процедура обрабатывает сообщение WMKeyDown.
  2. В процедуре проверяется свойство CharCode сообщения TWMKeyDown против VK_RETURN, соответствующего Enter-кнопке.
  3. Если CharCode совпадает с VK_RETURN, код затем проверяет, имеет ли свойство KeyData конкретный бит ($1000000) с помощью оператора побитового "И" (and). Этот бит указывает, что кнопка была нажата на цифровом панели.

Если этот бит установлен, то это означает, что Enter-кнопка была нажата на NumPad. В этом случае код выполняет соответствующий блок кода (комментарий { ENTER on numeric keypad }).

С другой стороны, если бит не установлен, то это означает, что Enter-кнопка была нажата на стандартной клавиатуре. В этом случае будет выполнен альтернативный блок кода (комментарий { ENTER on the standard keyboard }).

Эта хитрость позволяет программисту отличать между этими двумя типами нажатий Enter-кнопки, что может быть полезно в определенных ситуациях.

В отношении альтернативного решения можно также использовать функцию GetKeyState, чтобы проверить, включен ли режим NumLock. Если он включен, то вы знаете, что Enter-кнопка была нажата на цифровом панели. Однако это подход может требовать дополнительной логики для учета ситуаций, когда NumLock включается и отключается.

В целом, этот код-набор демонстрирует креативное решение общей проблемы в программировании Delphi. Поздравления автору, Full!

Автор статьи Full рассказывает о способе отловить правый Enter (NumPad) с помощью функции GetHeapStatus в программировании.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Клавиши ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 00:46:19/0.0029969215393066/0