2012-01-27 2 views
1

Мне интересно, есть ли простой способ узнать, какое устройство ввода вызвало конкретное событие GUI.Как узнать, какое устройство вызвало конкретное событие в Delphi?

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

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

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

+0

Почему бы не использовать стандартные способы указания доступа к клавиатуре? –

+0

@ Давид Хеффернан: Как? Я использую стандартные сочетания клавиш, когда это возможно, используйте кнопки по умолчанию, используйте «TAction» (или потомки), чтобы максимально увеличить мои действия с пользовательским интерфейсом. Тем не менее, у меня так много места на экране, я не могу посвятить его добавлению информации о ярлыках по всему пользовательскому интерфейсу. Я бы хотел, чтобы на экране отображалось подсказку, когда пользователь нажимает кнопку «Добавить элемент», которая гласит: «Вы также можете нажать« Вставить », чтобы добавить элемент». – afrazier

+0

Показать ярлыки в подсказках. VCL делает это для вас. Используйте клавиши ускорителя. Пусть пользователь сам это узнает. Не нажимайте на них. –

ответ

4

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

+0

... и/или 'OnMouseDown'. Звучит разумно! –

+1

@Andriy: 'OnMouseDown' - не такая хорошая идея, с точки зрения согласованности. Пользователи используются для «кликов», когда вы нажимаете * и отпускаете * элемент управления. –

+1

Полностью согласен, 'OnMouseUp' определенно лучший выбор в этом отношении. Но я имел в виду «OnMouseDown» в качестве альтернативы (или, возможно, в качестве дополнения) к «OnMouseUp» в деле замещения частоты использования мыши. Основное действие по-прежнему будет обрабатываться с помощью «OnClick», что, как я полагал, вы имели в виду. Конечно, я могу ошибаться в своей презумпции, и я сожалею, что вызвал какое-то замешательство! –

Смежные вопросы