Жизнь

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

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


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

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

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

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

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

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

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

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

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

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

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

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

тип
TForm1 = учебный класс(ТГогт)

частный
процедура WMMenuSelect (вар Msg: TWMMenuSelect); сообщение WM_MENUSELECT;
конец
реализация

процедура
TForm1.WMMenuSelect (вар Msg: TWMMenuSelect);
вар
menuItem: TMenuItem; hSubMenu: HMENU;
начать

унаследованный; // из TCustomForm (чтобы назначен Application.Hint)
menuItem: = ноль;
если (Msg.MenuFlag $ FFFF) или (Msg.IDItem 0) тогда
начать
если Msg.MenuFlag а также MF_POPUP = MF_POPUP тогда
начать
hSubMenu: = GetSubMenu (Msg.Menu, Msg.IDItem);
menuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
конец
еще
начать
menuItem: = Self.Menu.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 использует Application.HintHidePause, чтобы скрыть окно подсказки после указанного интервала.

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

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


Смотреть видео: Пользовательские подсказки YouTube. Подробный урок (July 2022).


Комментарии:

  1. Agilberht

    Очень хороший вопрос

  2. Delmar

    Браво, блестящая фраза и должным образом

  3. Peneus

    Эта мысль должна быть намеренно

  4. Aviv

    Я прошу прощения, которое я вмешиваюсь, но я предлагаю пойти по -другому.

  5. Kuhlbert

    Меня тоже волнует этот вопрос. Подскажите, пожалуйста - где я могу найти больше информации по этому вопросу?



Напишите сообщение