Как отображать подсказки пунктов меню в приложениях Delphi

Используйте специальный язык кодирования для программирования приложений Delphi для отображения подсказки или всплывающей подсказки, когда указатель мыши находится над компонентом меню. Если для свойства «ShowHint» установлено значение «true» и вы добавляете текст в свойство «подсказка», это сообщение будет отображаться, когда указатель мыши находится над компонентом (например, TButton).

Включить подсказки для пунктов меню

Из-за способа, которым Windows спроектирована, даже если вы установите значение свойства подсказки для пункта меню, всплывающая подсказка не будет отображаться. Однако пункты меню «Пуск» Windows отображают подсказки. Меню избранного в Internet Explorer также отображает подсказки пунктов меню.

Можно использовать событие OnHint глобальной переменной приложения в Delphi приложения для отображения пунктов меню подсказок в строке состояния.

Windows не предоставляет сообщения, необходимые для поддержки традиционного события OnMouseEnter. Однако сообщение WM_MENUSELECT отправляется, когда пользователь выбирает пункт меню.

instagram viewer

Реализация WM_MENUSELECT TCustomForm (предка TForm) устанавливает подсказку пункта меню на «Приложение. «Подсказка», чтобы его можно было использовать в приложении. Событие OnHint.

Если вы хотите добавить всплывающие подсказки к пунктам меню (всплывающие подсказки) в меню приложений Delphi, обратите внимание на сообщение WM_MenuSelect.

Всплывающие подсказки

Поскольку вы не можете положиться на приложение. Метод ActivateHint для отображения окна подсказок для пунктов меню (поскольку обработка меню полностью выполняется Windows), чтобы отобразить окно подсказки, вы должны создать собственную версию окна подсказки, извлекая новый класс из «THintWindow».

Вот как создать класс TMenuItemHint. Это подсказка вдова, которая на самом деле отображается для Пункты меню!

Во-первых, вам нужно обработать сообщение WM_MENUSELECT для Windows:

тип
TForm1 = учебный класс(ТГогт)
...
частный
процедура WMMenuSelect (вар Msg: TWMMenuSelect); сообщение WM_MENUSELECT;
конец...
реализация
...
процедура
TForm1.WMMenuSelect (вар Msg: TWMMenuSelect);
вар
menuItem: TMenuItem; hSubMenu: HMENU;
начать

унаследованный; // из TCustomForm (так что приложение. Подсказка назначена)
menuItem: = ноль;
если (Msg. MenuFlag <> $ FFFF) или (Msg. IDItem <> 0) тогда
начать
если Msg. MenuFlag и MF_POPUP = MF_POPUP тогда
начать
hSubMenu: = GetSubMenu (Msg. Меню, Msg. IDItem);
menuItem: = Self. Меню. FindItem (hSubMenu, fkHandle);
конец
еще
начать
menuItem: = Self. Меню. FindItem (Msg. IDItem, fkCommand);
конец;
конец; miHint. DoActivateHint (menuItem);
конец
; (* WMMenuSelect *)

Краткая информация: сообщение WM_MENUSELECT отправляется в окно владельца меню, когда пользователь выбирает (но не щелкает) пункт меню. Используя метод FindItem класса TMenu, вы можете получить выбранный пункт меню. Параметры функции FindItem относятся к свойствам полученного сообщения. Как только мы узнаем, над каким элементом меню находится мышь, мы вызываем метод DoActivateHint класса TMenuItemHint. Переменная miHint определяется как «var miHint: TMenuItemHint» и создается в форме OnCreate обработчик события.

Теперь осталось реализовать класс TMenuItemHint.

Вот часть интерфейса:

TMenuItemHint = учебный класс(THintWindow)
частный

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
процедура HideTime (Отправитель: TObject);
процедура ShowTime (Отправитель: TObject);
общественности

конструктор Создать (AOwner: TComponent); переопределение;
процедура DoActivateHint (menuItem: TMenuItem);
деструктор Destroy; переопределение;
конец
;

По сути, функция DoActivateHint вызывает метод ActivateHint для THintWindow, используя свойство Hint TMenuItem (если оно назначено). ShowTimer используется, чтобы убедиться, что HintPause приложения истекает до отображения подсказки. HideTimer использует приложение. HintHidePause, чтобы скрыть окно подсказки после указанного интервала.

Использование подсказок пунктов меню

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

instagram story viewer