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

click fraud protection

Използвайте специфичен език за кодиране, за да програмирате приложения на Delphi, за да покажете подсказка или подсказка, когато мишката се задържи върху компонент от менюто. Ако свойството "ShowHint" е зададено на "true" и добавите текст към свойството "hint", това съобщение ще се покаже, когато мишката се постави върху компонента (TButton, например).

Активиране на съвети за елементи от менюто

Поради начина, по който Windows е проектиран, дори ако зададете стойността за свойството на подсказка на елемент от менюто, изскачащият намек няма да се покаже. Елементите на стартовото меню на Windows обаче показват съвети. Менюто за предпочитани в Internet Explorer също показва подсказки за елементи от менюто.

Възможно е да се използва събитието OnHint на променливата на глобалното приложение в Delphi приложения за показване на подсказки от менюто в лента на състоянието.

Windows не излага съобщенията, необходими за поддържане на традиционно събитие OnMouseEnter. Съобщението WM_MENUSELECT обаче се изпраща, когато потребителят избере елемент от менюто.

instagram viewer

Внедряването на WM_MENUSELECT на TCustomForm (прародител на TForm) задава намека за елемент от менюто на "Application. Съвет “, така че да може да се използва в Приложението. OnHint събитие.

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

Съвети за изскачане

Тъй като не можете да разчитате на Приложението. Метод ActivateHint за показване на прозореца със намеци за елементи от менюто (тъй като обработката на менюто се извършва изцяло от Windows), за да се покаже прозорецът със намеци, трябва да създадете своя собствена версия на прозореца със намеци, като изведете нов клас от „THintWindow“.

Ето как да създадете клас TMenuItemHint. Това е намек за вдовица, който всъщност се показва елементи от менюто!

Първо, трябва да се справи с WM_MENUSELECT съобщението за Windows:

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

наследен; // от TCustomForm (така че Application. Съветът е назначен)
menuItem: = нула;
ако (Msg. MenuFlag <> $ FFFF) или (Msg. IDItem <> 0) тогава
започвам
ако Съобщ. MenuFlag и MF_POPUP = MF_POPUP тогава
започвам
hSubMenu: = GetSubMenu (Msg. Меню, Msg. IDItem);
menuItem: = Аз. Меню. FindItem (hSubMenu, fkHandle);
край
още
започвам
menuItem: = Аз. Меню. 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;
hidTimer: TTimer;
процедура HideTime (подател: TObject);
процедура ShowTime (подател: TObject);
обществен

конструктор Създаване (AOwner: TComponent); Замяната;
процедура DoActivateHint (menuItem: TMenuItem);
пещ за горене на отпадъци унищожи; Замяната;
край
;

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

Използване на съвети за елемент от менюто

Макар че някои може да кажат, че не е добър дизайн за показване на подсказки за елементи от менюто, има ситуации, в които действително показването на подсказки за елементи от менюто е много по-добре от използването на лента на състоянието. Един такъв случай е списъкът с най-скоро използваните (MRU) менюта. Меню от персонализирана лента на задачите е друго.

instagram story viewer