Fonte: www.activedelphi.com.br
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....
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