domingo, 6 de fevereiro de 2011

Chega de Showmessage!!!

Se você pensa..."Que Mensagem para validação de campos é muito chato!". Vai encontrar uma maneira bem simples de fugir deste terror.
O que veremos neste artigo é ao invés de mandarmos uma mensagem para o usuário, que é muito chato, você poder fazer o usuário se interagir com o sistema, veja...
Para este Artigo vamos precisar criamor uma Procedure.
Dei o Nome desta Procedure de TrocaCor com a sintaxe abaixo

Procedure TrocaCor(Campo : TWinControl ; CorTrocada , CorMeio, CorFinal : TColor ; Tempo : Cardinal );

O intuito desta rotina é o Seguinte:

- no lugar de mandarmos uma mensagem, faremos com que o campo "pisque", e que receba o foco depois deste "pisca-pisca"

o Parâmetro Campo, é do Tipo WinControl , pois poderá ser um TEdit, TComboBox , TListBox e Etc...(que recebam foco).

Os Parâmetro de Cores:
-CorTrocada
-CorMeio
-CorFinal

São do Tipo TColor, pois são elas as responsáveis de fornecedor o efeito de "piscar".

E a última, Tempo, serve para executar em qual período de Tempo;

vamos Lá Entao:

Implemente esta procedure com CTRL + SHIFT + C, e vamos aos códigos:

if (Campo is TEdit) Then
Begin
  (Campo as TEdit ).Color := CorTrocada;
  (Campo as TEdit).Update;
  Sleep(Tempo);
  (Campo as TEdit).Color := CorMeio;
  (Campo as TEdit).Update;
  Sleep(Tempo);
  (Campo as TEdit).Color := CorTrocada;
  (Campo as TEdit).Update;
  Sleep(Tempo);
  (Campo as TEdit).Color := CorFinal;
  (Campo as TEdit).SetFocus;
End //TEdit
else if (Campo is TComboBox) Then
Begin
  (Campo as TComboBox ).Color := CorTrocada;
  (Campo as TComboBox).Update;
  Sleep(Tempo);
  (Campo as TComboBox).Color := CorMeio;
  (Campo as TComboBox).Update;
  Sleep(Tempo);
  (Campo as TComboBox).Color := CorTrocada;
  (Campo as TComboBox).Update;
  Sleep(Tempo);
  (Campo as TComboBox).Color := CorFinal;
  (Campo as TComboBox).SetFocus;
  End;//TComboBox
End;

Bom, no caso acima eu imaginei que os campos fossem somente de dois tipos, TEdit e TComboBox, mas você poderá ir além disso, ou mais além ainda. Criar uma variável onde armazene a classe e economizar nos códigos...;)

Vamos usá-la Agora:
Coloque um botão no Formulário, um Edit e um ComboBox

E no envento OnClick do Botão Digite:
if Edit1.Text = 'Edit1' Then
Begin
  TrocaCor(Edit1 , clRed, clBlue, clBlack , 50);
  Exit;
End;

Entendendo, o código acima testará se o conteúdo do Edit1 for = Edit1
se Sim ele Executa nossa procedure e sai da Rotina. num intervalo de 50 milisegundos

Lembrando que quanto menor o número mais rápido será a piscagem....

Nenhum comentário:

Postar um comentário