Como exibir dicas de itens de menu em aplicativos Delphi

click fraud protection

Use uma linguagem de codificação específica para programar aplicativos Delphi para exibir uma dica ou dica de ferramenta, quando o mouse passar sobre um componente do menu. Se a propriedade "ShowHint" estiver definida como "true" e você adicionar texto à propriedade "hint", essa mensagem será exibida quando o mouse for colocado sobre o componente (um TButton, por exemplo).

Ativar dicas para itens de menu

Devido à maneira como o Windows foi projetado, mesmo se você definir o valor da propriedade dica como um item de menu, a dica pop-up não será exibida. No entanto, os itens do menu Iniciar do Windows exibem dicas. O menu favoritos no Internet Explorer também exibe dicas de itens de menu.

É possível usar o evento OnHint da variável global de aplicativo em Delphi aplicativos para exibir dicas de itens de menu em uma barra de status.

O Windows não expõe as mensagens necessárias para oferecer suporte a um evento OnMouseEnter tradicional. No entanto, a mensagem WM_MENUSELECT é enviada quando o usuário seleciona um item de menu.

instagram viewer

A implementação WM_MENUSELECT do TCustomForm (ancestral do TForm) define a dica do item de menu como "Aplicativo. Dica "para que possa ser usado no aplicativo. Evento OnHint.

Se você deseja adicionar dicas pop-up de itens de menu (dicas) aos menus do aplicativo Delphi, concentre-se na mensagem WM_MenuSelect.

Dicas pop-up

Como você não pode confiar no aplicativo. ActivateHint para exibir a janela de dica para itens de menu (como o manuseio do menu é completamente feito por janelas), para exibir a janela de dica, você deve criar sua própria versão da janela de dica, derivando uma nova classe do "THintWindow".

Veja como criar uma classe TMenuItemHint. Esta é uma dica viúva que realmente é exibida para itens do menu!

Primeiro, você precisa manipular a mensagem do Windows WM_MENUSELECT:

tipo
TForm1 = classe(TForm)
...
privado
procedimento WMMenuSelect (var Msg: TWMMenuSelect); mensagem WM_MENUSELECT;
fim...
implementação
...
procedimento
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
início

herdado; // do TCustomForm (para que Application. Dica é atribuída)
menuItem: = nada;
E se (Msg. MenuFlag <> $ FFFF) ou (Msg. IDItem <> 0) então
início
E se Msg. MenuFlag e MF_POPUP = MF_POPUP então
início
hSubMenu: = GetSubMenu (Msg. Menu, Msg. IDItem);
menuItem: = Auto. Cardápio. FindItem (hSubMenu, fkHandle);
fim
outro
início
menuItem: = Auto. Cardápio. FindItem (Msg. IDItem, fkCommand);
fim;
fim; miHint. DoActivateHint (menuItem);
fim
; (* WMMenuSelect *)

Informações rápidas: a mensagem WM_MENUSELECT é enviada para a janela do proprietário de um menu quando o usuário seleciona (mas não clica) em um item de menu. Usando o método FindItem da classe TMenu, você pode obter o item de menu selecionado no momento. Os parâmetros da função FindItem estão relacionados às propriedades da mensagem recebida. Depois de saber qual item de menu o mouse acabou, chamamos o método DoActivateHint da classe TMenuItemHint. A variável miHint é definida como "var miHint: TMenuItemHint" e é criada no formulário OnCreate manipulador de eventos.

Agora, o que resta é a implementação da classe TMenuItemHint.

Aqui está a parte da interface:

TMenuItemHint = classe(THintWindow)
privado

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
procedimento HideTime (Remetente: TObject);
procedimento ShowTime (Remetente: TObject);
público

construtor Criar (AOwner: TComponent); sobrepor;
procedimento DoActivateHint (menuItem: TMenuItem);
destruidor Destruir; sobrepor;
fim
;

Basicamente, a função DoActivateHint chama o método ActivateHint do THintWindow usando a propriedade Hint do TMenuItem (se estiver atribuída). O showTimer é usado para garantir que a HintPause do Aplicativo decorra antes que a dica seja exibida. O hideTimer usa Application. HintHidePause para ocultar a janela de dica após um intervalo especificado.

Usando dicas de itens de menu

Embora alguns possam dizer que não é um bom design exibir dicas para itens de menu, há situações em que realmente exibir dicas de itens de menu é muito melhor do que usar uma barra de status. Uma lista de itens de menu usada mais recentemente (MRU) é um desses casos. Um menu personalizado da barra de tarefas é outro.

instagram story viewer