Как определить, какое устройство вызвало определенное событие в Delphi? - PullRequest
1 голос
/ 27 января 2012

Мне интересно, есть ли простой способ определить, какое устройство ввода вызвало определенное событие графического интерфейса.

Например: событие TButton.OnClick запускается.Пользователь вызвал его нажатием клавиши на клавиатуре (сочетание клавиш, клавиша Enter для кнопки по умолчанию, клавиша space для кнопки с фокусировкой и т. Д.) Или оно было вызвано щелчком мыши?Есть ли какой-нибудь простой способ узнать?

Причина, по которой я хотел бы знать, заключается в том, что я могу реализовать подсказки по использованию клавиатуры в некоторых наших приложениях, когда пользователь использует мышь для запуска действий, которые также могут быть выполнены.с клавиатуры.Наши системы в цехах находятся в довольно пыльной / грязной среде, и мыши, как правило, плохо держатся в них.Кроме того, во многих случаях просто не так много места для использования мыши.(Нет, клавиатуры без цифровых клавиатур не являются решением. На них слишком сильно полагаются.)

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

1 Ответ

4 голосов
/ 27 января 2012

Нет способа узнать изнутри OnClick.Однако вы также можете прикрепить события к элементу управления, который будет срабатывать при наведении на него курсора мыши, что, вероятно, будет более подходящим для того, что вы пытаетесь сделать в любом случае.Посмотрите на события OnMouseEnter и OnMouseLeave.Кроме того, если вы действительно хотите, чтобы при щелчке мыши происходило что-то конкретное, вы можете прикрепить его к OnMouseUp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...