DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

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.

  • Animate: indica quando o componente exibirá ícones animados. Na prática, o que ocorre é uma variação dentre os ícones de uma lista predefinida.
  • AnimateInterval: tempo, em milisegundos, que cada ícone da lista passará exibido antes de dar lugar ao próximo.
  • BaloonFlags: ícone que aparecerá em uma caixa de diálogo no formato de balão informativo. As possibilidades são bfError(erro), bfInfo(informação), bfNone(nenhum) ou bfWarning(alerta).
  • BaloonHint: texto que será exibido no balão citado no item anterior.
  • BaloonTimeout: tempo, em milisegundos, que o balão informativo passará visível antes de ser fechado automaticamente.
  • BaloonTitle: título do balão informativo.
  • Hint: texto que aparecerá quando o cursor do mouse for posicionado sobre o ícone na tray bar, se deixado em branco, será exibido o nome do projeto.
  • Icon: imagem com extensão .ico que deve ser usada como ícone da aplicação na tray bar. Só possui efeito se a propriedade Icons for deixada em branco.
  • IconIndex: índice (começando em zero) da imagem da lista (Icons) que será exibida por padrão.
  • Icons: TImageList ou derivado contendo uma imagens que servirão de ícones da aplicação na tray bar.
  • PopupMenu: TPopupMenu ou derivado que será exibido quando o usuário clicar com a direita sobre o ícone.
  • Visible: indica quando o ícone da aplicação estará visível na tray bar.

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.

Balão informativo

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.

Menu popup no tray icon

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();
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
  Self.Show();
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.


Joel Rodrigues
Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há mais de 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (jQuery). Certificado como Microsoft Special...
O que você achou deste post?

    7 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Jeferson Machia
Olá amigo! MOntei uma aplicação que é para chamar cliente em filas de caixa... Então fica aberta uma janela no monitor 1 que é a janela do funcionario, e no monitor 2 fica aberta a tela do cliente, onde fica escrito aguarde ou caixa livre... Enfim o caso é que se a funcionaria minimizar a aplicação ela fecha o form que está aberto no monitor2, eu queria saber se tem alguma forma de eu minimizar a aplicação e manter o form do monitor 2 aberto...OU Se esse recurso que passou ajuda para fazer isso...Tipo ele fica ali proximo do relogio e continua ativo não minimizando também o form que está no monitor2. Obrigado.... pode responder em jeferson@comfer.com.br
[há +1 mês] - Responder

 

[autor] Joel Rodrigues
Olá, amigo.
Bom, se o form que deve permanecer aberto for o principal, não tem problema, ele ficará aberto a menos que alguém minimize ele. Assim, o form que será minimizado pode ser um form secundário, então ele poderá ser minimizado e deixar o principal aberto.
[há +1 mês] - Responder
 

Jeferson Machia
Nossa, como não pensei nisso antes.....Realmente verdade, é so eu inverter e pronto, a aplicação fica aberta e a tela de controle passa a ser um form secundario, assim podendo minimizar quando quiser e nem prejudicar a aplicação....Show de bola amigão....Rebento na ideia....Abração e obrigado pela dica....
[há +1 mês] - Responder
 

Jeferson Machia
Aproveitando que você tem ideias bacanas, estou com um projeto de software mas preciso hospedar o mesmo em banco MYSQL online, sabe de algum servidor que deixe hospedar com numero de IP ? Tenho um servidor que hospedo um site particular mas lá so liberam endereço com nomes, uso um Cpanel para trabalhar no MYSQL. Agora para o Delphi eu vou precisar de numero de IP para fazer a conexão..Se souber algum da um toque....Obrigado mais uma vez...
[há +1 mês] - Responder

 

[autor] Joel Rodrigues
Bom, primeiramente fico feliz em ter ajudado na primeira questão.
Infelizmente não conheço nenhum servidor assim no momento, mas caso eu encontre algum, pode ter certeza que eu te aviso. Mas faz o seguinte: abre um tópico no fórum com essa questão, de repente alguém lá conhece um servidor que te sirva.
Abraço.
[há +1 mês] - Responder
 

Andre Diel
Olá Joel!

Aonde consigo baixar esse componente para delphi7???

obrigado

André
[há +1 mês] - Responder

 

[autor] Joel Rodrigues
Olá, tudo bem? Esse é um componente nativo, só não lembro agora em que versão ele foi inserido. Então inicialmente não dá pra baixar ele pra Delphi 7. Talvez haja alguma solução de terceiros, mas no momento eu desconheço.
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03