Usando TNotifyIconData para colocar ícone na área de notificações – Firemonkey & Delphi XE2

Veja neste artigo como utilizar a clase TNotifyIconData no Delphi XE2 para colocar o ícone da aplicação na área de notificação do Windows (traybar). O Firemonkey veio com tudo e acredito profundamente que veio para ficar, mas como todo início é complicado, para esta ferramenta não poderia ser diferente. Ao utilizar esta ferramenta podemos sentir falta de alguns componentes não visuais que fazem grande falta.

O Firemonkey veio com tudo e acredito profundamente que veio para ficar, mas como todo início é complicado, para esta ferramenta não poderia ser diferente. Ao utilizar esta ferramenta podemos sentir falta de alguns componentes não visuais que fazem grande falta. Um desses componentes é o TTrayIcon da VCL. Para quem não sabe, ele é o responsável por deixar o ícone da aplicação da área de notificação lá no canto inferior esquerdo perto da hora.

Para que possamos utilizar a classe TNotifyIconData em nossa aplicação, primeiramente devemos declarar em uses a cláusula “WinApi.ShellApi”.

Na seção private de seu formulário principal declare as seguintes variáveis e procedures:

Listagem 1: Declaração de variáveis e procedures

private { Private declarations } FIconShown: Boolean; FTrayIconData: TNotifyIconData; procedure ShowTrayIcon; procedure HideTrayIcon;

Vamos, então, fazer a implementação do código de ShowTrayIcon:

Listagem 2: Implementação do método ShowTrayIcon

procedure TFrmPrincipal.ShowTrayIcon; begin if not FIconShown then begin with FTrayIconData do begin uID := 1; Wnd := FmxHandleToHWND(self.Handle); cbSize := SizeOf; hIcon := GetClassLong(FmxHandleToHWND(self.Handle),GCL_HICONSM); uCallbackMessage := 0; uFlags := NIF_Icon OR NIF_Tip OR NIF_Message; StrPCopy(szTip, FrmPrincipal.Caption); end; Shell_NotifyIcon(NIM_ADD, @FTrayIconData); FIconShown := True; end; end;

Vamos, então, falar um pouco sobre cada uma das propriedades do TNotifyIconData:

No evento OnCreate do formulário principal, chame o procedimento acima:

Listagem 3: Evento OnCreate do form principal

ShowTrayIcon;

Vamos, agora, fazer a implementação de HideTrayIcon:

Listagem 4: Implementação do método HideTrayIcon

procedure TFrmPrincipal.HideTrayIcon; begin if FIconShown then begin Shell_NotifyIcon(NIM_DELETE, @FTrayIconData); FIconShown := False; end; end;

No evento OnDestroy do formulário principal, chame o procedimento acima:

Listagem 5: Evento OnDestroy do form principal

HideTrayIcon;

Rode sua aplicação e terá o seguinte resultado:


Figura 1: TNotifyIconData

Um grande abraço e até o próximo artigo.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados