Życie

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

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


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.

Użyj określonego 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 po ustawieniu wartości właściwości wskazówki na element menu wyskakująca podpowiedź 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 zmiennej globalnej aplikacji w aplikacjach Delphi 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.

Implementacja WM_MENUSELECT funkcji TCustomForm (przodek TForm) ustawia wskazówkę dotyczącą pozycji menu na „Application.Hint”, dzięki czemu można jej użyć w zdarzeniu Application.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żna polegać na metodzie Application.ActivateHint w celu wyświetlenia okna podpowiedzi dla pozycji menu (ponieważ system Windows obsługuje całkowicie menu), aby wyświetlić okno podpowiedzi, należy utworzyć własną wersję okna podpowiedzi, wyprowadzając nową klasę z „THintWindow”.

Oto jak utworzyć klasę TMenuItemHint. To wdowa z podpowiedziami, która faktycznie wyświetla się dla pozycji 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 (tak, że przypisano Application.Hint)
menuItem: = zero;
Jeśli (Msg.MenuFlag $ FFFF) lub (Msg.IDItem 0) następnie
zaczynać
Jeśli 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. Gdy 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 module obsługi zdarzeń OnCreate formularza.

Teraz pozostaje 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 przy użyciu 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 Application.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.



Uwagi:

  1. Eachan

    Sorry, they can't join the discussion - very busy. Osvobozhus - Upewnij się, że opinia na ten temat.

  2. Carlisle

    Zasubskrybowałem kanał RSS, ale z jakiegoś powodu wiadomości mają postać hieroglifów. Jak to naprawić?

  3. Conradin

    Wydaje mi się, że masz rację

  4. Hartley

    Ta odpowiedź jest nieporównywalna



Napisać wiadomość