Simulando os alertas do MSN

Veja neste artigo de Adriano Santos, como criar alertas semelhantes ao do MSN.

Simulando os alertas do MSN

Como simular alertas do tipo MSN

Uma grande variedade de softwares hoje em dia vem se utilizando de mensagens em tela no estilo MSN. São as famosas pop-up’s que surgem próximo ao relógio do Windows e geralmente chamam a atenção do usuário porque usam de uma animação bem simples. Elas surgem subindo devagar e logo em seguida desaparecem. MSN, Skype, Anti-vírus Avg entre outros vem usando e abusando desta prática.

Neste artigo vou mostrar de mais simples como criar em nosso software um alerta bastante eficaz.

Criando e explicando o projeto

Para nosso exemplo criaremos dois formulários, uma para ser a tela principal e outro será nossa tela de alerta.

Não precisamos ir muito longe para entender o que faremos. Basicamente temos que criar um loop para mover a janela de alerta “X” pixels para cima até chegar no ponto de parada.

Para ficar inteligente, vamos pegar a altura da barra de tarefas, que pode ser variável, e criar uma fórmula para calcular a posição (Top) inicial e final do nosso form de alerta.

Codificando

Em nosso form principal coloque um Button e nele digite o algoritimo da Listagem 1. Nossa tela de exibição ficará semelhante ao mostrado na Figura 1.

 

Figura 1. Tela de alerta em ação

Modifique as propriedades do FormAlerta conforme a Tabela 1.

 

Propriedade

Valor

BorderStyle

bsToolWindow

Caption

Alerta do Sistema

FormStyle

fsStayOnTop

Color

$0080FFFF

Tabela 1. Propriedades do FormAlerta

Listagem 1. Algoritimo para exibição do Alerta

procedure TForm1.Button1Click(Sender: TObject);

var

  I: Integer;

  fAlertaMsn: TForm;

  BarraIniciar: HWND; {Barra Iniciar}

  tmAltura: Integer;

  tmRect: TRect;

  xTop : Integer;

  xIniTop : Integer;

begin

  //localiza o Handle da janela iniciar

  BarraIniciar := FindWindow('Shell_TrayWnd', nil);

  //Pega o "retângulo" que envolve a barra e sua altura

  GetWindowRect(BarraIniciar, tmRect);

  tmAltura := tmRect.Bottom - tmRect.Top;

  fAlertaMsn := TfAlertaMsn.Create(Self);

  with fAlertaMsn do

  begin

Left := Screen.Width - ClientWidth;

if tmRect.Top = -2 then

tmAltura := 30;

//Pega o top final

xTop := Screen.Height - ClientHeight - tmAltura;

//Pega o top inicial

xIniTop := Screen.Height + ClientHeight + tmAltura;

Top := xIniTop;

for I := xIniTop downto xTop do

begin

Top := Top - 1;

Show;

Update;

Application.ProcessMessages;

Sleep(10);

end;

Sleep(3000);

Close;

FreeAndNil(fAlertaMsn);

  end;

end;

Conclusões

Neste artigo aprendemos a criar uma tela de alerta simples. Agora mãos a obra e altere da melhor forma possível para que seu aplicativo fique cada vez mais atraente. Até a próxima.

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

Artigos relacionados