Dzīve

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

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


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.

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.

Delphi lietojumprogrammās ir iespējams izmantot globālā lietojumprogrammas mainīgā OnHint notikumu, 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 "Application.Hint", lai to varētu izmantot pasākumā Application.OnHint.

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 Application.ActivateHint metodi, lai parādītu mājienu logu izvēlnes vienumiem (tā kā izvēlnes apstrādi pilnībā veic Windows), lai iegūtu parādīto mājienu logu, jums jāizveido sava mājienu loga versija, iegūstot jaunu klasi. no “THintWindow”.

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

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 tiktu piešķirts Application.Hint)
menuItem: = nulle;
ja (Msg.MenuFlag $ FFFF) vai (Msg.IDItem 0) tad
sākt
ja Msg.MenuFlag un MF_POPUP = MF_POPUP tad
sākt
hSubMenu: = GetSubMenu (Msg.Menu, Msg.IDItem);
menuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
beigas
cits
sākt
menuItem: = Self.Menu.FindItem (Msg.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 metodi DoActivateHint. MiHint mainīgais tiek definēts kā "var miHint: TMenuItemHint" un tiek izveidots veidlapas OnCreate notikumu apstrādātājā.

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 nodrošinātu, ka lietojumprogrammas ieteikuma pauze beidzas pirms mājienu parādīšanas. HideTimer izmanto Application.HintHidePause, lai paslēptu mājienu logu pēc noteikta intervāla.

Izmantojot izvēlnes vienumu 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 izmantotais (MRU) izvēlnes vienumu saraksts. Pielāgota uzdevumjoslas izvēlne ir vēl viena.