Viaţă

Cum se afișează indicii pentru elementele din meniu în aplicațiile Delphi

Cum se afișează indicii pentru elementele din meniu în aplicațiile 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.

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 aplicațiile Delphi pentru a afișa indicii ale elementelor 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.

Implementarea WM_MENUSELECT a TCustomForm (strămoșul TForm) stabilește indicarea elementului de meniu la „Application.Hint”, astfel încât să poată fi utilizată în evenimentul Application.OnHint.

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

Popup Sugestii

Deoarece nu vă puteți baza pe Application.ActivateHint metoda pentru a afișa fereastra indiciu pentru elementele de meniu (întrucât gestionarea meniului se face complet de Windows), pentru a obține fereastra indiciu trebuie să creați propria versiune a ferestrei indicii, derivând o nouă clasă din „THintWindow”.

Iată cum puteți crea o clasă TMenuItemHint. Aceasta este o văduvă indiciu care este de fapt afișată pentru elementele 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 (astfel încât Application.Hint este atribuit)
menuItem: = zero;
dacă (Msg.MenuFlag $ FFFF) sau (Msg.IDItem 0) atunci
începe
dacă Msg.MenuFlag și MF_POPUP = MF_POPUP atunci
începe
hSubMenu: = GetSubMenu (Msg.Menu, Msg.IDItem);
menuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
Sfârșit
altfel
începe
menuItem: = Self.Menu.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 din 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ă drept „var miHint: TMenuItemHint” și este creată în instrumentul de gestionare a evenimentelor OnCreate.

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 din 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ă Application.HintHidePause pentru a ascunde fereastra indiciu după un interval specificat.

Utilizarea Sugestii de element din meniu

Deși unii ar putea spune că nu este un design bun pentru a afișa 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.



Comentarii:

  1. Amiri

    good luck in business with such a blog :)

  2. Poldi

    I apologize, but this variant does not suit me.

  3. Goltikazahn

    Bine făcut, ai fost vizitat de ideea pur și simplu magnifică

  4. Medr

    Matchless topic, it is very interesting to me))))

  5. Koenraad

    I am sorry, it not absolutely that is necessary for me.



Scrie un mesaj