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 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: