GARANTIR DESCONTO

Fórum Função genérica para verificar campo obrigatório #337585

08/02/2007

0

Boa tarde, pessoa!!!

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

Cristianojedi

Responder

Post mais votado

09/02/2007

creio que a dica do titanius funcione mas, se me permite, eu sugiro uma pequena variação.
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

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

09/02/2007

Cristianojedi

Será que alguém pode me ajudar nisso?

Alguém tem um exemplo pra me mostrar sobre o código que eu estou querendo fazer?

Obrigado.

Cristiano Mário


Responder

Gostei + 0

09/02/2007

Titanius

Bem, posso tentar te ajudar, segue uma modificação, [b:6332f8b762]não testei no delphi[/b:6332f8b762] pois estou em casa.. ;)

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


Responder

Gostei + 0

09/02/2007

Cristianojedi

Opa!!!

titanius e emerson.en...

Muito obrigado. Funcionou perfeitamente.

Cristiano Mário :D


Responder

Gostei + 0

09/02/2007

Titanius

creio que a dica do titanius funcione mas, se me permite, eu sugiro uma pequena variação.


Opa... ficou muito mais profissional desta forma! :D Realmente, fica muito cheto o cara ficar recebendo um monte de tela de erro.. hehe...

[]s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar