Utilizzare un linguaggio di codifica specifico per programmare le applicazioni Delphi per visualizzare un suggerimento o una descrizione comandi quando il mouse passa sopra un componente del menu. Se la proprietà "ShowHint" è impostata su "true" e si aggiunge del testo alla proprietà "hint", questo messaggio verrà visualizzato quando si posiziona il mouse sul componente (ad esempio un pulsante TB).
Abilita suggerimenti per le voci di menu
A causa del modo in cui è progettato Windows, anche se si imposta il valore della proprietà hint su una voce di menu, il suggerimento popup non verrà visualizzato. Tuttavia, le voci del menu Start di Windows visualizzano suggerimenti. Il menu dei preferiti in Internet Explorer visualizza anche suggerimenti sulle voci di menu.
È possibile utilizzare l'evento OnHint della variabile di applicazione globale in Delphi applicazioni per visualizzare i suggerimenti sulle voci di menu in una barra di stato.
Windows non espone i messaggi necessari per supportare un tradizionale evento OnMouseEnter. Tuttavia, il messaggio WM_MENUSELECT viene inviato quando l'utente seleziona una voce di menu.
L'implementazione WM_MENUSELECT di TCustomForm (antenato di TForm) imposta il suggerimento della voce di menu su "Applicazione. Suggerimento "in modo che possa essere utilizzato nell'applicazione. Evento OnHint.
Se si desidera aggiungere suggerimenti popup di voci di menu (suggerimenti) ai menu dell'applicazione Delphi, concentrarsi sul messaggio WM_MenuSelect.
Suggerimenti popup
Dal momento che non è possibile fare affidamento sull'applicazione. Metodo ActivateHint per visualizzare la finestra di suggerimento per le voci di menu (poiché la gestione dei menu è completamente eseguita da finestre), per visualizzare la finestra del suggerimento è necessario creare la propria versione della finestra del suggerimento derivando una nuova classe da "THintWindow".
Ecco come creare una classe TMenuItemHint. Questa è una vedova di suggerimento che viene effettivamente visualizzata per voci del menu!
Innanzitutto, è necessario gestire il messaggio WM_MENUSELECT di Windows:
genere
TForm1 = classe(TForm)
...
privato
procedura WMMenuSelect (var Messaggio: TWMMenuSelect); Messaggio WM_MENUSELECT;
fine...
implementazione...
procedura TForm1.WMMenuSelect (var Messaggio: TWMMenuSelect);
var menuItem: TMenuItem; hSubMenu: HMENU;
inizio
ereditato; // da TCustomForm (in modo che l'applicazione. Il suggerimento è assegnato)
menuItem: = zero;
Se (Msg. MenuFlag <> $ FFFF) o (Msg. IDItem <> 0) poi
inizio
Se Msg. MenuFlag e MF_POPUP = MF_POPUP poi
inizio
hSubMenu: = GetSubMenu (Msg. Menu, messaggio IDItem);
menuItem: = Self. Menù. FindItem (hSubMenu, fkHandle);
fine
altro
inizio
menuItem: = Self. Menù. FindItem (Msg. IDItem, fkCommand);
fine;
fine; miHint. DoActivateHint (menuItem);
fine; (* WMMenuSelect *)
Informazioni rapide: il messaggio WM_MENUSELECT viene inviato alla finestra del proprietario di un menu quando l'utente seleziona (ma non fa clic) una voce di menu. Utilizzando il metodo FindItem della classe TMenu, è possibile ottenere la voce di menu attualmente selezionata. I parametri della funzione FindItem si riferiscono alle proprietà del messaggio ricevuto. Una volta che sappiamo quale voce di menu è posizionata con il mouse, chiamiamo il metodo DoActivateHint della classe TMenuItemHint. La variabile miHint è definita come "var miHint: TMenuItemHint" e viene creata nel modulo OnCreate gestore di eventi.
Ora, ciò che resta è l'implementazione della classe TMenuItemHint.
Ecco la parte dell'interfaccia:
TMenuItemHint = classe(THintWindow)
privato
activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedura HideTime (Mittente: TObject);
procedura ShowTime (mittente: TObject);
pubblico
costruttore Crea (AOwner: TComponent); oltrepassare;
procedura DoActivateHint (menuItem: TMenuItem);
distruttore Distruggere; oltrepassare;
fine;
Fondamentalmente, la funzione DoActivateHint chiama il metodo ActivateHint di THintWindow utilizzando la proprietà Hint di TMenuItem (se assegnata). ShowTimer viene utilizzato per garantire che l'HintPause dell'applicazione sia trascorso prima della visualizzazione dell'hint. HideTimer utilizza l'applicazione. Suggerimento suggerire di nascondere la finestra del suggerimento dopo un intervallo specificato.
Utilizzo dei suggerimenti sulle voci di menu
Mentre alcuni potrebbero dire che non è un buon design visualizzare i suggerimenti per le voci di menu, ci sono situazioni in cui la visualizzazione dei suggerimenti delle voci di menu è molto meglio dell'uso di una barra di stato. Un elenco di voci di menu utilizzate più di recente (MRU) è uno di questi casi. Un menu della barra delle applicazioni personalizzato è un altro.