Buscar

Validar e Forcar campos em branco com IBQuery em qualquer Cadastro

Código

No botão salvar do cadastro do cliente por exemplo você deve informar um form (self) e o nome da query que necessita da validação. Utilizando o comando abaixo.
    ValidaCampos(self,Dm.NomeDaIBQuery);
Passando os parâmetros para a procedure o código a seguir irá procurar quais campos estão em branco na IBQuery referida e procurar os obrigatórios e verificar se este está preenchido. Em seguida ele irá focar o cursor do teclado ao campo dentro do formulário varForm.
OBS: Na IBQuery recomendo que troque o DisplayLabel de cada campo para que a mensagem apareça com o seu nome corretamente. Se desejar alterar para IBTable é só trocar TIBQuery para TBTable ou qualquer outro componente no estilo Query ou Table.


//Coloque esta procedure dentro de um cadastro ou dentro de uma Unit onde se declara todos métodos que serão compartilhados com todo o seu sistema.
procedure TFCadCliente.ValidaCampos(varForm: TForm;HxQuery: TIBQuery);
var x,y: Integer;
begin
  //Procura campos na query que não estão preenchidos
  For x := 0 To HxQuery.FieldCount -1 Do
    begin
      If HxQuery.FieldByName(HxQuery.Fields[x].FieldName).Required = True then //Testa campo obrigatório
        If HxQuery.FieldByName(HxQuery.Fields[x].FieldName).AsString = '' then //testa campo obrigatório em branco
          begin
            MessageDlg('O Campo '+HxQuery.Fields[x].DisplayLabel+' é obrigatório!',mtInformation,[mbOk],0);
            With TForm(varForm) do
              begin
                // Procura e Envia o foco ao campo no formulario
                For y := 0 To ComponentCount -1 Do
                  begin
                    If Components[y] Is TDbEdit Then
                      begin
                        If TDbEdit(Components[y]).DataField = HxQuery.Fields[x].FieldName Then
                          begin
                            TDbEdit(Components[y]).SetFocus;
                            abort;
                          end;
                      end
                    else
                    If Components[y] Is TDbcomboBox Then
                      begin
                        If TDbcomboBox(Components[y]).DataField = HxQuery.Fields[x].FieldName Then
                          begin
                            TDbcomboBox(Components[y]).SetFocus;
                            abort;
                          end;
                      end
                    else
                    If Components[y] Is TDbLookupComboBox Then
                      begin
                        If TDbLookupComboBox(Components[y]).DataField = HxQuery.Fields[x].FieldName Then
                          begin
                            TDbLookupComboBox(Components[y]).SetFocus;
                            abort;
                          end;
                      end
                    else
                    If Components[y] Is TDBMemo Then
                      begin
                        If TDBMemo(Components[y]).DataField = HxQuery.Fields[x].FieldName Then
                          begin
                            TDBMemo(Components[y]).SetFocus;
                            abort;
                          end;
                      end;
                  end;
              end;
            Abort;
          end;
    end;
end;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 04/06/09
Por: Henrique Buosi Monteiro
Visualizada: 7844 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009