Fórum Como fazer validação de todos os campos de uma vez #293229
26/08/2005
0
Bom, quero fazer uma rotina de validação das minhas telas. A idéia é que o usuário vá preenchendo os campos e dando enter ou tab.
Quando o usuario passar por um campo obrigatório e não preenchê-lo, quero que o sistema nao deixe ir pra frente, até ai beleza, mas para tras ele pode ir...por exemplo
Nome: ________________________
Endereco: ________________________
CNPJ: ___________________________ [Obrigatório]
Estado: ________________________
Se o usuario não preencher CNPJ e de enter/tab o sistema diz que não é possivel, mas se ele der um SHIFT-TAB (volta ao campo endereco) ou com o mouse o sistema não diz nada. Ja vi um esquema testando o ActiveControl e o TabOrder, algo como:
Se o TabOrder do ActiveControl for menor que o TabOrder do campo atual (CNPJ por exemplo) ai ele nao da nada...etc...mas não consigo montar a logica porque só consigo saber o taborder do componente atual (CNPJ) do outro não. Tinha que ter algo como
if ActiveControl.TabOrder < CompAtual.TabOrder then exit;
Outra coisa, depois disso pronto queria testar todos os campos no meu botao OK para evitar que o cara pule o campo com o mouse. Neste caso, queria que a função me retornasse qual componente falta ser preenchido e focasse nele. Algo como:
if ValidaObrigatorios then //Grava a informação.
valeu
Adriano Santos
Curtir tópico
+ 0Posts
26/08/2005
Rjun
Gostei + 0
26/08/2005
Adriano Santos
Dei uma fuçada aqui e decobri um esquema, veja:
procedure TForm1.Edit2Exit(Sender: TObject); begin if not (ActiveControl.TabOrder < TWinControl(Sender).TabOrder) then Valida; end;
O acontece: Quando vc sai do Edit ou DBEdit enfim, o ActiveControl é mudado para o próximo controle, desta forma consigo saber qual o TabOrder ou qq outra propriedade do componente para onde o usuário foi. Meu problema era pegar o TabOrder do componente que o cara havia sapido, pois perco a referência devido a mudança do ActiveControl.
Como ´ainda´ estou dentro do evento onExit do componente atual, consigo pegar o TabOrder dele através de um simples typecast que fiz: TWinControl(Sender).
Agora estou pensando: precisaria desenvolver um TasEdit, TasDbEdit, TasMasEdit e etc...não sei se vai compensar.
Gostei + 0
26/08/2005
Rjun
Gostei + 0
26/08/2005
Adriano Santos
Gostei + 0
26/08/2005
Rjun
Gostei + 0
26/08/2005
Adriano Santos
Entendi +/- Rjun, vc criou um objeto não-visual que faz esse controle dos seus componentes/controles dentro do form?
A lista de regras eu podia criar uma propriedade TColection e uma TColectionItem. Poderia ter as propriedades:
Regras
Controle
Regras: seria a lista de validações
Controle: qual Edit, DbEdit e etc que precisa ser validado
Gostei da idéia, muito boa.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)