Hur man visar tips på menyalternativ i Delphi-applikationer

Använd specifikt kodspråk för att programmera Delphi-applikationer för att visa ett led eller verktygstips när musen svävar över en menykomponent. Om egenskapen "ShowHint" är inställd på "true" och du lägger till text till "hint" -egenskapen visas detta meddelande när musen placeras över komponenten (till exempel en TButton).

Aktivera tips för menyalternativ

På grund av hur Windows är utformat, även om du ställer in värdet för hintegenskapen till ett menyalternativ, visas inte popup-tipset. Men Windows-menyalternativen visar tips. Favoritmenyn i Internet Explorer visar också tips om menyalternativ.

Det är möjligt att använda OnHint-händelsen för den globala applikationsvariabeln i Delphi applikationer för att visa menyalternativ tips i en statusfält.

Windows avslöjar inte meddelanden som behövs för att stödja en traditionell OnMouseEnter-händelse. Men meddelandet WM_MENUSELECT skickas när användaren väljer ett menyalternativ.

WM_MENUSELECT-implementeringen av TCustomForm (förfader till TForm) sätter menyalternativet antydan till "Application. Tips "så att det kan användas i applikationen. OnHint-händelse.

instagram viewer

Om du vill lägga till popup-tips för menypost (verktygstips) till dina Delphi-applikationsmenyer, fokusera på WM_MenuSelect-meddelandet.

Popup-tips

Eftersom du inte kan lita på applikationen. ActivateHint-metoden för att visa tipsfönstret för menyalternativ (eftersom menyhantering helt görs av Windows), för att visa antydningsfönstret måste du skapa din egen version av tipsfönstret genom att hämta en ny klass från "THintWindow."

Så här skapar du en TMenuItemHint-klass. Detta är en antydan änka som faktiskt visas för menyval!

Först måste du hantera WM_MENUSELECT Windows-meddelandet:

typ
TForm1 = klass(TForm)
...
privat
procedur WMMenuSelect (var Msg: TWMMenuVälj); meddelande WM_MENUSELECT;
slutet...
genomförande
...
procedur
TForm1.WMMenuSelect (var Msg: TWMMenuVälj);
var
menuItem: TMenuItem; hSubMenu: HMENU;
Börja

ärvt; // från TCustomForm (så att applikationen. Tips tilldelas)
menuItem: = noll;
om (Msg. MenuFlag <> $ FFFF) eller (Msg. IDItem <> 0) sedan
Börja
om MSG. MenuFlag och MF_POPUP = MF_POPUP sedan
Börja
hSubMenu: = GetSubMenu (Msg. Meny, Msg. IDItem);
menuItem: = Själv. Meny. FindItem (hSubMenu, fkHandle);
slutet
annan
Börja
menuItem: = Själv. Meny. FindItem (Msg. IDItem, fkCommand);
slutet;
slutet; miHint. DoActivateHint (menuItem);
slutet
; (* WMMenuSelect *)

Snabbinfo: WM_MENUSELECT-meddelandet skickas till en menys ägarfönster när användaren väljer (men inte klickar på) ett menyalternativ. Med hjälp av FindItem-metoden i TMenu-klassen kan du få det menyalternativ som för närvarande är valt. Parametrar för FindItem-funktionen relaterar till egenskaperna för det mottagna meddelandet. När vi vet vilket menyalternativ musen är över, kallar vi metoden DoActivateHint i klassen TMenuItemHint. MiHint-variabeln definieras som "var miHint: TMenuItemHint" och skapas i formulärets onCreate händelsehanterare.

Det som är kvar är implementeringen av klassen TMenuItemHint.

Här är gränssnittsdelen:

TMenuItemHint = klass(THintWindow)
privat

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedur HideTime (avsändare: TObject);
procedur ShowTime (avsändare: TObject);
offentlig

konstruktör Skapa (AOwner: TComponent); åsidosätta;
procedur DoActivateHint (menuItem: TMenuItem);
destructor Förstöra; åsidosätta;
slutet
;

I grund och botten kallar DoActivateHint-funktionen ActivateHint-metoden för THintWindow med hjälp av TMenuItems egenskap (om den är tilldelad). ShowTimer används för att säkerställa att HintPause för applikationen förflutnar innan antydan visas. HideTimer använder applikation. HintHidePause för att dölja tipfönstret efter ett angivet intervall.

Använda menyalternativstips

Vissa kan säga att det inte är en bra design att visa tips för menyalternativ, men det finns situationer där faktiskt att visa menyalternativstip är mycket bättre än att använda en statusfält. En menyalternativlista som senast används (MRU) är ett sådant fall. En anpassad aktivitetsfältmeny är en annan.

instagram story viewer