Kā parādīt izvēlnes vienumu padomus Delphi lietojumprogrammās

Izmantojiet īpašu kodēšanas valodu, lai programmētu Delphi programmas, lai parādītu mājienu vai rīka padomu, kad pele virzās virs izvēlnes komponenta. Ja rekvizītam "ShowHint" ir iestatīta vērtība "patiesa" un jūs īpašumam "mājiens" pievienojat tekstu, šis ziņojums tiks parādīts, kad pele tiek novietota virs komponenta (piemēram, TButton).

Iespējot izvēlnes vienumu padomus

Sistēmas Windows dizaina dēļ pat tad, ja mājienu rekvizīta vērtību iestatāt izvēlnes vienumam, uznirstošais mājiens netiks parādīts. Tomēr Windows izvēlnes Sākt izvēlnē tiek parādīti mājieni. Izlases izvēlnē Internet Explorer tiek parādīti arī izvēlnes vienumu padomi.

Vista ir iespējams izmantot globālā lietojumprogrammas mainīgā OnHint notikumu Delfi lietojumprogrammām, lai statusa joslā parādītu izvēlnes vienumu padomus.

Sistēma Windows neatklāj ziņojumus, kas nepieciešami tradicionālā OnMouseEnter notikuma atbalstam. Tomēr WM_MENUSELECT ziņojums tiek nosūtīts, kad lietotājs izvēlas izvēlnes vienumu.

TCustomForm (TForm sencis) WM_MENUSELECT ieviešana izvēlnes vienumu mājienu iestata uz "Lietojumprogramma. Padoms ", lai to varētu izmantot lietojumprogrammā. OnHint notikums.

instagram viewer

Ja Delphi lietojumprogrammu izvēlnēm vēlaties pievienot izvēlnes vienumu uznirstošos padomus (rīka padomus), koncentrējieties uz ziņojumu WM_MenuSelect.

Uznirstošie padomi

Tā kā jūs nevarat paļauties uz lietojumprogrammu. ActivateHint metode, lai parādītu mājienu izvēlnes vienumu logu (jo izvēlni pilnībā pārvalda Windows), lai parādītu mājienu logu, jums jāizveido sava mājiena loga versija, no “THintWindow” iegūstot jaunu klasi.

Tālāk ir aprakstīts, kā izveidot TMenuItemHint klasi. Šī ir mājiena atraitne, kas faktiski tiek parādīta izvēlnes vienumi!

Pirmkārt, jums jāapstrādā Windows WM_MENUSELECT ziņojums:

tips
TForm1 = klase(TForm)
...
Privāts
procedūra WMMenuSelect (var Msg: TWMMenuSelect); ziņa WM_MENUSELECT;
beigas...
ieviešana
...
procedūra
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
sākt

mantots; // no TCustomForm (tā, lai. Ieteikums ir piešķirts)
menuItem: = nulle;
ja (Ziņojums. MenuFlag <> $ FFFF) vai (Ziņojums. IDItem <> 0) tad
sākt
ja Ziņojums MenuFlag un MF_POPUP = MF_POPUP tad
sākt
hSubMenu: = GetSubMenu (Ziņojums. Izvēlne, īsziņa. IDItem);
menuItem: = Pats. Izvēlne. FindItem (hSubMenu, fkHandle);
beigas
cits
sākt
menuItem: = Pats. Izvēlne. FindItem (Ziņojums. IDItem, fkCommand);
beigas;
beigas; miHint. DoActivateHint (menuItem);
beigas
; (* WMMenuSelect *)

Ātrā informācija: WM_MENUSELECT ziņojums tiek nosūtīts uz izvēlnes īpašnieka logu, kad lietotājs izvēlas (bet nenoklikšķina) izvēlnes vienumu. Izmantojot TMenu klases FindItem metodi, jūs varat iegūt pašlaik atlasīto izvēlnes vienumu. Funkcijas FindItem parametri attiecas uz saņemtā ziņojuma īpašībām. Tiklīdz mēs zinām, ar kuru izvēlnes vienumu pele ir beigusies, mēs saucam par TMenuItemHint klases DoActivateHint metodi. MiHint mainīgais tiek definēts kā "var miHint: TMenuItemHint" un tiek izveidots veidlapā OnCreate pasākumu kopējs.

Tagad ir atlicis TMenuItemHint klases ieviešana.

Šeit ir saskarnes daļa:

TMenuItemHint = klase(THintWindow)
Privāts

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedūra HideTime (Sūtītājs: TObject);
procedūra ShowTime (Sūtītājs: TObject);
publiski

konstruktors Izveidot (AOwner: TComponent); ignorēt;
procedūra DoActivateHint (menuItem: TMenuItem);
iznīcinātājs Iznīcināt; ignorēt;
beigas
;

Pamatā funkcija DoActivateHint izsauc THintWindow metodi ActivateHint, izmantojot TMenuItem's Hint rekvizītu (ja tas ir piešķirts). ShowTimer tiek izmantots, lai pārliecinātos, ka lietojumprogrammas HintPause beidzas pirms mājienu parādīšanas. HideTimer izmanto programmu. HintHidePause, lai paslēptu mājienu logu pēc noteikta intervāla.

Izmantojot izvēlnes vienības padomus

Lai gan daži varētu teikt, ka nav labs dizains, lai parādītu padomus par izvēlnes elementiem, ir situācijas, kad faktiski izvēlnes elementu ieteikumu parādīšana ir daudz labāka nekā statusa joslas izmantošana. Viens no šādiem gadījumiem ir nesen lietotais (MRU) izvēlnes vienumu saraksts. Pielāgota uzdevumjoslas izvēlne ir vēl viena.

instagram story viewer