Cum să afișați indicii pentru elementele din meniu în aplicațiile Delphi

click fraud protection

Utilizați un limbaj de codare specific pentru a programa aplicațiile Delphi pentru a afișa un indiciu sau o sugestie, când mouse-ul trece peste o componentă de meniu. Dacă proprietatea „ShowHint” este setată pe „true” și adăugați text la proprietatea „indiciu”, acest mesaj va fi afișat atunci când mouse-ul este plasat peste componentă (un TButton, de exemplu).

Activați Sugestii pentru elementele de meniu

Din cauza modului în care este conceput Windows, chiar dacă setați valoarea pentru proprietatea indiciu la un element de meniu, nu va fi afișat indiciu pop-up. Cu toate acestea, elementele din meniul Start Windows au indicii de afișare. Meniul preferat din Internet Explorer afișează, de asemenea, indicii despre elementul de meniu.

Este posibil să utilizați evenimentul OnHint al variabilei globale a aplicației în Delphi aplicații pentru afișarea indicilor pentru elementele de meniu într-o bară de stare.

Windows nu expune mesajele necesare pentru a susține un eveniment tradițional OnMouseEnter. Cu toate acestea, mesajul WM_MENUSELECT este trimis când utilizatorul selectează un element de meniu.

instagram viewer

Implementarea WM_MENUSELECT a TCustomForm (strămoșul TForm) stabilește indicarea elementului de meniu la „Aplicație. Sugestie ”, astfel încât să poată fi utilizat în aplicație. Eveniment OnHint.

Dacă doriți să adăugați elemente de meniu pop-up (sfaturi de instrumente) în meniurile aplicației Delphi, concentrați-vă pe mesajul WM_MenuSelect.

Popup Sugestii

Din moment ce nu vă puteți baza pe aplicație. Metoda ActivateHint pentru a afișa fereastra indiciu pentru elementele de meniu (deoarece gestionarea meniului este completată de ferestre), pentru a afișa fereastra indiciu, trebuie să creați propria versiune a ferestrei indicii derivând o clasă nouă din „THintWindow”.

Iată cum puteți crea o clasă TMenuItemHint. Aceasta este o văduvă indiciu pentru care se afișează de fapt elemente din meniu!

În primul rând, trebuie să gestionați mesajul Windows WM_MENUSELECT:

tip
TForm1 = clasă(TForm)
...
privat
procedură WMMenuSelect (var Msg: TWMMenuSelect); mesaj WM_MENUSELECT;
Sfârșit...
punerea în aplicare
...
procedură
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
începe

mostenit; // din TCustomForm (deci aplicația respectivă. Sugestie este atribuită)
menuItem: = zero;
dacă (Msg. MenuFlag <> $ FFFF) sau (Msg. IDItem <> 0) apoi
începe
dacă Msg. MenuFlag și MF_POPUP = MF_POPUP apoi
începe
hSubMenu: = GetSubMenu (Msg. Meniu, Msg. IDItem);
menuItem: = Self. Meniul. FindItem (hSubMenu, fkHandle);
Sfârșit
altfel
începe
menuItem: = Self. Meniul. FindItem (Msg. IDItem, fkCommand);
Sfârșit;
Sfârșit; miHint. DoActivateHint (meniul Item);
Sfârșit
; (* WMMenuSelect *)

Informații rapide: mesajul WM_MENUSELECT este trimis în fereastra de proprietar a unui meniu atunci când utilizatorul selectează (dar nu face clic) un element de meniu. Folosind metoda FindItem din clasa TMenu, puteți obține elementul de meniu selectat în prezent. Parametrii funcției FindItem se referă la proprietățile mesajului primit. După ce știm ce element de meniu s-a terminat mouse-ul, apelăm la metoda DoActivateHint din clasa TMenuItemHint. Variabila miHint este definită ca „var miHint: TMenuItemHint” și este creată în Formular OnCreate organizatorul evenimentului.

Acum, ceea ce a mai rămas este implementarea clasei TMenuItemHint.

Iată partea de interfață:

TMenuItemHint = clasă(THintWindow)
privat

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedură HideTime (Expeditor: TObject);
procedură ShowTime (Expeditor: TObject);
public

constructor Create (AOwner: TComponent); trece peste;
procedură DoActivateHint (meniul Item: TMenuItem);
distrugător Distruge; trece peste;
Sfârșit
;

Practic, funcția DoActivateHint apelează la metoda ActivateHint a THintWindow folosind proprietatea TMenuItem's Hint (dacă este atribuită). ShowTimer este utilizat pentru a vă asigura că HintPause al aplicației expiră înainte de afișarea indiciei. HideTimer utilizează aplicația. HintHidePause pentru a ascunde fereastra de indiciu după un interval specificat.

Utilizarea Indicațiilor de meniu

În timp ce unii ar putea spune că nu este un design bun să afișăm indicii pentru elementele de meniu, există situații în care afișarea efectivă a indicilor pentru elementele de meniu este mult mai bună decât utilizarea unei bare de stare. O listă de meniuri utilizată cel mai recent (MRU) este un astfel de caz. Un alt meniu al barei de activități personalizate este altul.

instagram story viewer