Fórum Função genérica para verificar campo obrigatório #337585
08/02/2007
0
Estou querendo fazer uma função genérica que verifica, em um formulário, se determinado campo (DBEdit, DBComboBox, etc) é obrigatório e possui valor.
Comecei fazendo da seguinte forma:
procedure ValidaCamposObrigatorios(Form: TForm; cdsAux: TClientDataSet);
var i: Integer;
begin
for i := 0 to Form.ComponentCount - 1 do
begin
{: DBEdit}
if (Form.Components[i] is TDBEdit) then
begin
if cdsAux.Fields[i].AsString = ´´ then
begin
raise Exception.Create(´Campo de preenchimento obrigatório!´);
Abort;
end;
end;
end;Mas não sei como pegar o nome do campo no ClientDataSet para eu fazer a validação. Se eu passo o índice do componente, não sei qual condição eu tenmho que checar para ele verificar se está fazio ou não. Tipo assim, no meu formulário (FrmEstado), ele encontrou Form.Components = 30. Mas como que eu vou saber o nome do campo do componente 27 (por exemplo é um DBEdit)?
Estou meio enrrolado. Minha lógica não está legal.
Alguém pode me ajudar?
Delphi 7, Firebird....
Obrigado.
Cristiano Mário
Cristianojedi
Curtir tópico
+ 0Post mais votado
09/02/2007
procedure ValidaCamposObrigatorios(Form: TForm; cdsAux: TClientDataSet); var i: Integer; msg: string; begin msg := ´´; for i := 0 to cdsAux.Fields.Count - 1 do if cdsAux.Fields[i].Required and cdsAux.Fields[i].IsNull then // ou (cdsAux.Fields[i].AsString = ´´) begin if msg <> ´´ then msg := msg + 13 msg := msg + cdsAux.Fields[i].DisplayName; // ou FieldName end; if msg <> ´´ then raise Exception.Create(´Preenchimento obrigatório!´13+msg) end;
dessa forma todos os campos de preenchimento obrigatório, e que estejam vazios, serão informados ao usuário ao mesmo tempo. fica mais elegante do que receber uma mensagem a cada campo deixado em branco.
Emerson Nascimento
Gostei + 1
Mais Posts
09/02/2007
Cristianojedi
Alguém tem um exemplo pra me mostrar sobre o código que eu estou querendo fazer?
Obrigado.
Cristiano Mário
Gostei + 0
09/02/2007
Titanius
procedure ValidaCamposObrigatorios(Form: TForm; cdsAux: TClientDataSet); var i: Integer; begin for i := 0 to cdsAux.Fields.Count - 1 do begin if cdsAux.Fields[i].Value = null then begin raise Exception.Create(´Campo de preenchimento obrigatório!´+13+´Campo.:´+cdsAux.Fields[0].DisplayName); Abort; end; end;
Mude nos Fields do ClientDataSet, os DisplayFields para o texto de exibição.
Como disse nao testei, mas espero que sirva para dar pelo menos uma luz.. :oops:
[]s
Gostei + 0
09/02/2007
Cristianojedi
titanius e emerson.en...
Muito obrigado. Funcionou perfeitamente.
Cristiano Mário :D
Gostei + 0
09/02/2007
Titanius
Opa... ficou muito mais profissional desta forma! :D Realmente, fica muito cheto o cara ficar recebendo um monte de tela de erro.. hehe...
[]s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)