Élet

Hogyan jeleníthetjük meg a menüpont tippeit a Delphi alkalmazásokban

Hogyan jeleníthetjük meg a menüpont tippeit a Delphi alkalmazásokban


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.

Használjon speciális kódolási nyelvet a Delphi alkalmazások programozásához, hogy megjelenjen egy tipp vagy eszköztipp, amikor az egér az egérmutatót a menükomponens fölé viszi. Ha a "ShowHint" tulajdonság "true" értékre van állítva, és szöveget ad hozzá a "hint" tulajdonsághoz, akkor ez az üzenet jelenik meg, amikor az egeret az összetevő fölé helyezik (például egy TB gomb).

Tipp engedélyezése a menüelemekhez

A Windows tervezésének módja miatt, még akkor sem, ha a tipp tulajdonságának menüpontot állítja be, a felugró tipp nem jelenik meg. A Windows Start menü elemei azonban megjelenítési tippeket tartalmaznak. Az Internet Explorer Kedvencek menüje a menüpontokra is utal.

A Delphi alkalmazásokban a globális alkalmazásváltozó OnHint eseménye felhasználható a menüelemekkel kapcsolatos tippek megjelenítésére az állapotsorban.

A Windows nem tárja fel a hagyományos OnMouseEnter esemény támogatásához szükséges üzeneteket. A WM_MENUSELECT üzenet azonban akkor kerül elküldésre, amikor a felhasználó kiválaszt egy menüpontot.

A TCustomForm (a TForm őse) WM_MENUSELECT megvalósítása a menüpont-utalást "Application.Hint" -re állítja, így felhasználható az Application.OnHint-eseményben.

Ha a menüelemek felbukkanó tippjeit (eszköztippjeit) szeretné hozzáadni a Delphi alkalmazásmenüjéhez, koncentráljon a WM_MenuSelect üzenetre.

Felbukkanó tippek

Mivel nem támaszkodhat az Application.ActivateHint módszerre a menüelemekre vonatkozó tippablak megjelenítéséhez (mivel a menükezelést teljesen a Windows végzi), a megjelenő tipp ablak megjelenítéséhez új osztály létrehozásával létre kell hoznia a tipp ablak saját verzióját. a "THintWindow" -ból.

Így hozhat létre egy TMenuItemHint osztályt. Ez egy tipp özvegy, amely valóban megjelenik a menüelemeknél!

Először a WM_MENUSELECT Windows üzenetet kell kezelnie:

típus
TForm1 = osztály(TForm)

magán
eljárás WMMenuSelect (var Msg: TWMMenuSelect); üzenet WM_MENUSELECT;
vég
végrehajtás

eljárás
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
kezdődik

örökölt; // a TCustomForm-tól (az Application.Hint hozzárendelve)
menuItem: = nulla;
ha (Msg.MenuFlag $ FFFF) vagy (Msg.IDItem 0) azután
kezdődik
ha Msg.MenuFlag és MF_POPUP = MF_POPUP azután
kezdődik
hSubMenu: = GetSubMenu (Msg.Menu, Msg.IDItem);
menuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
vég
más
kezdődik
menuItem: = Self.Menu.FindItem (Msg.IDItem, fkCommand);
vég;
vég; miHint.DoActivateHint (menuItem);
vég
; (* WMMenuSelect *)

Gyors információ: A WM_MENUSELECT üzenetet elküldi a menü tulajdonosa ablakához, amikor a felhasználó kiválaszt egy menüpontot (de nem kattint rá). A TMenu osztály FindItem módszerével megkaphatja a jelenleg kiválasztott menüpontot. A FindItem függvény paraméterei a kapott üzenet tulajdonságaival kapcsolatosak. Amint megtudjuk, hogy melyik menüponton vége az egér, hívjuk a TMenuItemHint osztály DoActivateHint módszerét. A miHint változót "var miHint: TMenuItemHint" -ként definiálják, és az űrlap OnCreate eseménykezelőjében hozzák létre.

Most már csak a TMenuItemHint osztály megvalósítása maradt.

Itt van a felület része:

TMenuItemHint = osztály(THintWindow)
magán

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
eljárás HideTime (Feladó: TObject);
eljárás ShowTime (Feladó: TObject);
nyilvános

konstruktőr Létrehozás (tulajdonos: TComponent); felülírás;
eljárás DoActivateHint (menuItem: TMenuItem);
pusztító Elpusztítani; felülírás;
vég
;

Alapvetően a DoActivateHint funkció meghívja a THintWindow ActivateHint módszerét a TMenuItem's Hint tulajdonság segítségével (ha hozzá van rendelve). A showTimer-t annak biztosítására használják, hogy az alkalmazás HintPause lejár-e még a tipp megjelenése előtt. A hideTimer az Application.HintHidePause alkalmazást használja, hogy egy adott időközönként elrejtse a tanácsablakot.

A menüpont használata

Noha egyesek azt mondhatják, hogy a menüelemekre vonatkozó tippeket nem jó megjeleníteni, vannak olyan helyzetek, amikor a menüelemekre vonatkozó tippeket valóban sokkal jobb megjeleníteni, mint az állapotsor használata. Az egyik ilyen eset a legutóbb használt (MRU) menüelemek listája. Az egyéni tálcamenü egy másik.