Jak wyświetlić wskazówki pozycji menu w aplikacjach Delphi

Użyj specjalnego języka kodowania, aby zaprogramować aplikacje Delphi do wyświetlania podpowiedzi lub podpowiedzi, gdy mysz znajdzie się nad komponentem menu. Jeśli właściwość „ShowHint” jest ustawiona na „true”, a tekst zostanie dodany do właściwości „podpowiedź”, komunikat ten zostanie wyświetlony, gdy wskaźnik myszy zostanie umieszczony nad komponentem (na przykład TButton).

Włącz wskazówki dla pozycji menu

Ze względu na sposób zaprojektowania systemu Windows nawet jeśli ustawisz wartość właściwości wskazówki na element menu, wyskakująca wskazówka nie zostanie wyświetlona. Jednak elementy menu Start systemu Windows wyświetlają podpowiedzi. Menu Ulubione w Internet Explorerze wyświetla również wskazówki dotyczące pozycji menu.

Możliwe jest użycie zdarzenia OnHint globalnej zmiennej aplikacji w Delfy aplikacje do wyświetlania podpowiedzi pozycji menu na pasku stanu.

System Windows nie udostępnia komunikatów potrzebnych do obsługi tradycyjnego zdarzenia OnMouseEnter. Jednak komunikat WM_MENUSELECT jest wysyłany, gdy użytkownik wybierze element menu.

instagram viewer

Implementacja WM_MENUSELECT funkcji TCustomForm (przodek TForm) ustawia wskazówkę dotyczącą pozycji menu na „Aplikacja. Wskazówka ”, aby można go było używać w aplikacji. Wydarzenie OnHint.

Jeśli chcesz dodać wyskakujące podpowiedzi pozycji menu (podpowiedzi) do menu aplikacji Delphi, skoncentruj się na komunikacie WM_MenuSelect.

Wyskakujące wskazówki

Ponieważ nie możesz polegać na aplikacji. Metoda ActivateHint wyświetla okno podpowiedzi dla pozycji menu (ponieważ obsługa menu jest całkowicie wykonywana przez Windows), aby wyświetlić okno podpowiedzi, musisz utworzyć własną wersję okna podpowiedzi, wyprowadzając nową klasę z „THintWindow”.

Oto jak utworzyć klasę TMenuItemHint. Jest to wdowa ze wskazówkami, dla której faktycznie wyświetla się elementy menu!

Najpierw musisz obsłużyć komunikat Windows WM_MENUSELECT dla systemu Windows:

rodzaj
TForm1 = klasa(TForm)
...
prywatny
procedura WMMenuSelect (var Msg: TWMMenuSelect); wiadomość WM_MENUSELECT;
koniec...
realizacja
...
procedura
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
zaczynać

dziedziczny; // z TCustomForm (więc ta aplikacja. Podpowiedź jest przypisana)
menuItem: = zero;
gdyby (Msg. MenuFlag <> $ FFFF) lub (Msg. IDItem <> 0) następnie
zaczynać
gdyby Msg. MenuFlag i MF_POPUP = MF_POPUP następnie
zaczynać
hSubMenu: = GetSubMenu (Msg. Menu, Msg. IDItem);
menuItem: = Self. Menu. FindItem (hSubMenu, fkHandle);
koniec
jeszcze
zaczynać
menuItem: = Self. Menu. FindItem (Msg. IDItem, fkCommand);
koniec;
koniec; miHint. DoActivateHint (menuItem);
koniec
; (* WMMenuSelect *)

Szybka informacja: wiadomość WM_MENUSELECT jest wysyłana do okna właściciela menu, gdy użytkownik wybierze (ale nie kliknie) element menu. Za pomocą metody FindItem klasy TMenu można uzyskać aktualnie wybrany element menu. Parametry funkcji FindItem odnoszą się do właściwości otrzymanej wiadomości. Kiedy wiemy, jaki element menu znajduje się w myszy, wywołujemy metodę DoActivateHint klasy TMenuItemHint. Zmienna miHint jest zdefiniowana jako „var miHint: TMenuItemHint” i jest tworzona w formularzu OnCreate moduł obsługi zdarzeń.

Teraz pozostała implementacja klasy TMenuItemHint.

Oto część interfejsu:

TMenuItemHint = klasa(THintWindow)
prywatny

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedura HideTime (Sender: TObject);
procedura ShowTime (Sender: TObject);
publiczny

konstruktor Utwórz (AOwner: TComponent); nadpisanie;
procedura DoActivateHint (menuItem: TMenuItem);
burzyciel Zniszczyć; nadpisanie;
koniec
;

Zasadniczo funkcja DoActivateHint wywołuje metodę ActivateHint THintWindow za pomocą właściwości Wskazówki TMenuItem (jeśli jest przypisana). ShowTimer służy do zapewnienia, że ​​HintPause aplikacji upłynie przed wyświetleniem podpowiedzi. HideTimer używa aplikacji. HintHidePause, aby ukryć okno podpowiedzi po określonym czasie.

Korzystanie ze wskazówek dotyczących pozycji menu

Chociaż niektórzy mogą powiedzieć, że wyświetlanie podpowiedzi do elementów menu nie jest dobrym pomysłem, istnieją sytuacje, w których wyświetlanie podpowiedzi do elementów menu jest znacznie lepsze niż używanie paska stanu. Jednym z takich przypadków jest ostatnio używana lista pozycji menu (MRU). Niestandardowe menu paska zadań to kolejne.

instagram story viewer