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

Как узнать о нажатии NON-MENU клавиши в момент когда меню показано

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

Как узнать о нажатии NON-MENU клавиши в момент когда меню показано


Человека посылают на три буквы, а компьютер - на три клавиши...

Создайте обработчик сообщения WM_MENUCHAR.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    One1: TMenuItem;
    Two1: TMenuItem;
    THree1: TMenuItem;
  private
    {Private declarations}
    procedure WmMenuChar(var m : TMessage); message WM_MENUCHAR;
  public
  {Public declarations}
end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.WmMenuChar(var m: TMessage);
begin
  Form1.Caption := 'Non standard menu key pressed';
  m.Result := 1;
end;

end.

Сообщение WM_MENUCHAR отправляется окну, когда пользователь нажимает не менюевую клавишу, а меню активно. Однако это сообщение будет отправлено только в том случае, если процедура окна его обработает явно.

Чтобы узнать, была ли нажата не менюевая клавиша, вы можете проверить поле wVKey объекта TMessage, переданного в параметрах вашей процедуры WmMenuChar. Если wVKey равен VK_MENU, то была нажата клавиша меню (клавиша Alt). В противном случае - не менюевая клавиша.

Вот обновленная реализация:

procedure TForm1.WmMenuChar(var m: TMessage);
begin
  if m.wVKey <> VK_MENU then
    Form1.Caption := 'Non-standard menu key pressed';
  m.Result := 1;
end;

В этом коде мы сначала проверяем, не равен ли wVKey VK_MENU. Если это не так, то мы устанавливаем заголовок формы, чтобы указать, что была нажата не менюевая клавиша. Наконец, мы возвращаем значение 1 как результат обработки сообщения.

Обратите внимание, что вам может потребоваться добавить дополнительную логику для обработки различных типов не менюевых клавиш (например, функциональные клавиши F1-F12), если это необходимо.

Данная статья описывает, как создать обработчик события WM_MENUCHAR в Delphi для обнаружения нажатия NON-MENU клавиши в момент когда меню показано.


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

Получайте свежие новости и обновления по 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 16:19:59/0.0031421184539795/0