Olá! Saturday, 20 de April de 2024.



Dicas CódigoFonte.net
Tuesday, 25 de July de 2006

Simulando os alertas do MSN no Delphi

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.

Clique para ver a imagem em seu tamanho real
Figura 1. Tela de alerta em ação

Modifique as propriedades do FormAlerta de acordo com os parâmetros abaixo.

Propriedade - Valor
BorderStyle - bsToolWindow
Caption - Alerta do Sistema
FormStyle - fsStayOnTop
Color - $0080FFFF

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.

Por Adriano Santos
Adriano Santos ([email protected]) é desenvolvedor Delphi desde 1998. Professor e programador PHP. Bacharel em Comunicação Social pela Universidade Cruzeiro do Sul, SP. É colunista e membro da Comissão Editorial da revista ClubeDelphi.

Conheça nosso parceiro:

Comentários do artigo [Novo comentário]

Paulo Semo - 04 de June de 2008 - 11:13
Muito bom...Só que o meu sistema de alerta não aparece as mensagens na caixa, qd a mesma aparece perto do relógio, mesmo escrevendo a mensagem em um label
Joao Carlos - 22 de January de 2009 - 15:41
Tem como explicar com mais detalhes, ou mesmo postar um exemplo pratico para usuarios leigos na materia como no meu caso. Agradeço
Marcelo Ribeiro - 17 de February de 2010 - 11:54
Nessa pop-up, tem como ela ficar visivel ate q o usuário feche a janela? pq ela fica como se estivesse readonly, e nao posso fazer nada com ela....
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010