Utilizando o componente TTrayIcon no Delphi

Veja neste artigo como utilizar o componente TTrayIcon no Delphi

Uma funcionalidade comum de se ver em vários tipos de aplicação é a utilização de ícones na chamada tray bar, a barra de ícones que fica ao lado do relógio do Windows. Veremos neste artigo que não é difícil adicionar esta função à nossa aplicação, fazendo uso do componente TTrayIcon que o Delphi nos fornece nativamente.

Para desenvolver os exemplos a seguir, utilizei o Delphi 2007, mas outras versões podem ser usadas sem comprometimento do código.

Conhecendo o componente

Antes de partirmos para os exemplos práticos, vejamos alguns detalhes relacionados as propriedades deste componente.

Podemos agora partir para a parte prática da utilização deste componente. Para isso criemos uma aplicação VCL no Delphi e, no form principal, adicionemos um componente TTrayIcon.

Ícone básico

Para visualizar o ícone da aplicação na tray bar, basta selecionar um ícone na propriedade Icon, definir a propriedade Visible como true e executar o projeto. Nenhum código adicional é necessário.

Ícone animado

Para visualizar o ícone com animação, devemos adicionar um componente ImageList ao form, preenchê-lo com algumas imagens e selecioná-lo na propriedade Icons do TTrayIcon. Logo após, devemos marcar a propriedade Animate como true e executar a aplicação. Veremos que as imagens contidas no ImageList são exibidas alternadamente como ícone da aplicação.

Balão informativo

Para visualizar o balão informativo, devemos inicialmente definir um ícone, um texto e um título para ele. Fazemos isso alterando as propriedades BaloonFlags, BaloonHint, BaloonTitle quaisquer valores possíveis entre os permitidos. Feito isso, executamos o seguinte código, por exemplo, no evento onClick de um botão.

Listagem 1: Exibindo o balão informativo


procedure TForm1.Button1Click(Sender: TObject);
begin
  TrayIcon1.ShowBalloonHint();
end;

Consideramos, no exemplo acima, que o nome do controle foi mantido como TrayIcon1. A Figura 1 ilustra o resultado da execução deste código.

Figura 1: Balão informativo

Menu Popup

Adicionemos um componente TPopupMenu ao form com alguns itens (pode-se, aqui, executar algum código no evento onClick dos itens para se certificar do funcionamento). Depois, devemos selecionar este controle na propriedade PopupMenu do TrayIcon e executar a aplicação. Ao clicar com a direita sobre o ícone, o menu definido será exibido.

Figura 2: Menu popup no tray icon

Escondendo a aplicação e mantendo apenas o ícone

Toda essa parte de exibir ícones, balões informativos e menus popup não teriam tanta aplicação prática se o ícone da aplicação continuar visível na barra de tarefas como qualquer outro programa minimizado. Na maioria das vezes é necessário esconder a aplicação ao minimizar o form principal, para isso, poderíamos usar um componente TApplicationEvents e, no evento onMinimize, tornar o form principal invisível, como mostra a Listagem 2.

Listagem 2: Escondendo a aplicação ao minimizar


procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  Self.Hide();
  Self.WindowState := wsMinimized;
  TrayIcon1.Visible := True;  
  TrayIcon1.Animate := True;
  TrayIcon1.ShowBalloonHint;
end;

E para tornar o form novamente visível poderíamos, por exemplo, usar o evento onDblClick do TrayIcon (Listagem 3), assim, quando o usuário clicasse duas vezes sobre o ícone, a aplicação seria novamente exibida.

Listagem 3: Tornando a aplicação novamente visível


procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
  TrayIcon1.Visible := False;
  Show();
  WindowState := wsNormal;
  Application.BringToFront();
end;

Consideramos, nas listagens 3 e 4, que o TrayIcon está no form principal, por isso usamos a palavra reservada Self nos exemplos acima.

Conclusão

Concluímos que o Delphi nos fornece um componente bastante simples de se utilizar e que torna prática a tarefa de exibir o ícone da aplicação na tray bar. Caso o leitor tenha alguma dúvida com relação ao assunto aqui apresentado, sinta-se à vontade para questionar, utilizando a seção de comentários nesta página.

Agradeço a atenção e por aqui me despeço.

Artigos relacionados