Sådan vises menupunkt-tip i Delphi-applikationer

click fraud protection

Brug specifikt kodesprog til at programmere Delphi-applikationer til at vise et tip eller værktøjstip, når musen svæver over en menukomponent. Hvis egenskaben "ShowHint" er indstillet til "sand", og du tilføjer tekst til egenskaben "tip", vises denne meddelelse, når musen placeres over komponenten (f.eks. En TB-knap).

Aktivér tip til menupunkter

På grund af den måde Windows er designet på, selvom du indstiller værdien for tip-egenskaben til et menupunkt, vises popup-tip ikke. Imidlertid viser Windows start-menupunkter antydninger. Favoritmenuen i Internet Explorer viser også menupunkt tip.

Det er muligt at bruge OnHint-hændelsen for den globale applikationsvariabel i Delphi applikationer til at vise menupunkt tip i en statuslinje.

Windows udsætter ikke de meddelelser, der er nødvendige for at understøtte en traditionel OnMouseEnter-begivenhed. Imidlertid sendes WM_MENUSELECT-beskeden, når brugeren vælger et menupunkt.

WM_MENUSELECT-implementeringen af ​​TCustomForm (stamfar til TForm) sætter menupunktet antydning til "Application. Tip ", så det kan bruges i applikationen. OnHint-begivenhed.

instagram viewer

Hvis du vil tilføje popup-tip til menupunkt (værktøjstip) til dine Delphi-applikationsmenuer, skal du fokusere på meddelelsen WM_MenuSelect.

Popup-tip

Da du ikke kan stole på applikationen. ActivateHint-metode til at vise tip-vinduet for menupunkter (da menuhåndtering udføres fuldstændigt af vinduer), for at få vist vinduesvinduet, skal du oprette din egen version af tipvinduet ved at udlede en ny klasse fra "THintWindow."

Sådan opretter du en TMenuItemHint-klasse. Dette er en tip, som faktisk vises for menupunkter!

Først skal du håndtere WM_MENUSELECT Windows-meddelelsen:

type
TForm1 = klasse(TForm)
...
privat
procedure WMMenuSelect (Var Msg: TWMMenuVælg); besked WM_MENUSELECT;
ende...
implementering
...
procedure
TForm1.WMMenuSelect (Var Msg: TWMMenuVælg);
Var
menuItem: TMenuItem; hSubMenu: HMENU;
begynde

arvet; // fra TCustomForm (så applikationen. Tip er tildelt)
menuItem: = nul;
hvis (Msg. MenuFlag <> $ FFFF) eller (Msg. IDItem <> 0) derefter
begynde
hvis Msg. MenuFlag og MF_POPUP = MF_POPUP derefter
begynde
hSubMenu: = GetSubMenu (MSg. Menu, Msg. IDItem);
menuItem: = Selv. Menu. FindItem (hSubMenu, fkHandle);
ende
andet
begynde
menuItem: = Selv. Menu. FindItem (Msg. IDItem, fkCommand);
ende;
ende; miHint. DoActivateHint (menuItem);
ende
; (* WMMenuSelect *)

Hurtig info: WM_MENUSELECT-meddelelsen sendes til en menus ejervindue, når brugeren vælger (men ikke klikker) på et menupunkt. Ved hjælp af FindItem-metoden i TMenu-klassen kan du få det menupunkt, der aktuelt er valgt. Parametre for FindItem-funktionen vedrører egenskaberne for den modtagne meddelelse. Når vi ved, hvilket menupunkt musen er forbi, kalder vi DoActivateHint-metoden i klassen TMenuItemHint. MiHint-variablen er defineret som "var miHint: TMenuItemHint" og oprettes i formularens onCreate event handler.

Hvad der er tilbage er implementeringen af ​​TMenuItemHint-klassen.

Her er grænsefladedelen:

TMenuItemHint = klasse(THintWindow)
privat

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedure HideTime (Afsender: TObject);
procedure ShowTime (Afsender: TObject);
offentlig

konstruktør Opret (AOwner: TComponent); overstyring;
procedure DoActivateHint (menuItem: TMenuItem);
destructor Ødelægge; overstyring;
ende
;

Grundlæggende kalder DoActivateHint-funktionen ActivateHint-metoden i THintWindow vha. TMenuItem's Hint-egenskab (hvis den er tildelt). ShowTimer bruges til at sikre, at HintPause af applikationen udløber, før antydningen vises. HideTimer bruger applikation. HintHidePause for at skjule tipvinduet efter et specificeret interval.

Brug af menupunkt tip

Selvom nogle måske kan sige, at det ikke er et godt design at vise tip til menupunkter, er der situationer, hvor faktisk visning af menupunkttips er meget bedre end at bruge en statuslinje. En liste over sidst anvendte (MRU) menupunkter er et sådant tilfælde. En brugerdefineret proceslinjemenu er en anden.

instagram story viewer