Vida

Como exibir dicas de itens de menu em aplicativos Delphi

Como exibir dicas de itens de menu em aplicativos 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.

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 nas aplicações Delphi para exibir dicas de itens de menu em uma barra de status.

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

A implementação WM_MENUSELECT do TCustomForm (ancestral do TForm) define a dica do item de menu como "Application.Hint" para que possa ser usada no evento Application.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 método Application.ActivateHint para exibir a janela de dica para itens de menu (como o tratamento de menus é totalmente feito pelo Windows), para obter a janela de dica exibida, 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 de 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; // de TCustomForm (para que Application.Hint seja atribuído)
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: = Self.Menu.FindItem (hSubMenu, fkHandle);
fim
outro
início
menuItem: = Self.Menu.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 manipulador de eventos OnCreate do formulário.

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.


Assista o vídeo: DELPHI IDEIAS#10 - COMO FAZER UM MENU RETRÁTIL com apenas 4 linhas de código!!! (Pode 2022).


Comentários:

  1. Darnall

    Que pensamento bom

  2. Guyapi

    Eu penso que eles estão errados. Eu sou capaz de provar isso. Escreva para mim em PM.

  3. Onyebuchi

    Obrigado por sua ajuda neste assunto, eu também gostaria de algo que você pode ajudar?



Escreve uma mensagem