Procedure para varredura de campos
Pessoal, boa noite!
Tenho o seguinte procedure para verificação de campos obrigatórios:
Porém, como formatei o maskedit para data e etc, ele nunca estará realmente em branco no Text.. o que anula o procedure.
Teria alguma outra forma de eu fazer uma varredura completa em todos os campos? Agradeço desde já!
Tenho o seguinte procedure para verificação de campos obrigatórios:
procedure CamposObrigatorios; var i: integer; begin with Screen.ActiveForm do begin for I := 0 to ComponentCount -1 do begin if Components[i] is TMaskEdit then begin if (TMaskEdit(Components[i]).Tag = 1) and (TMaskEdit(Components[i]).Text = '''''''')then begin Application.MessageBox(''''Campos obrigatórios em branco!'''', ''''Aviso'''', MB_ICONINFORMATION+MB_OK); Abort; end; end; end; end; end;
Porém, como formatei o maskedit para data e etc, ele nunca estará realmente em branco no Text.. o que anula o procedure.
Teria alguma outra forma de eu fazer uma varredura completa em todos os campos? Agradeço desde já!
Nomad
Curtidas 0
Melhor post
Raimundo Pereira
19/05/2018
Fiz algumas alterações testei e funciona como o esperado.
var i: integer; begin with Screen.ActiveForm do begin for i := 0 to ComponentCount - 1 do begin if Components[i] is TMaskEdit then begin // >> Remove a maskara para verificar se está em branco TMaskEdit(Components[i]).EditMask := ''; // if (TMaskEdit(Components[i]).Tag = 1) and (TMaskEdit(Components[i]).Text = '')then if (TMaskEdit(Components[i]).Text = '') then begin // >> Retorna a maskara TMaskEdit(Components[i]).EditMask := '!99/99/0000;1;_'; Application.MessageBox('Campos obrigatórios em branco!', 'Aviso', MB_ICONINFORMATION + MB_OK); //Foca no campo em branco TMaskEdit(Components[i]).SetFocus; Abort; end; // >> Retorna a maskara TMaskEdit(Components[i]).EditMask := '!99/99/0000;1;_'; end; end; end; end;
GOSTEI 2
Mais Respostas
Nomad
18/05/2018
P2, obrigado.. Deu certo mesmo.
Porém no caso, tenho também outros masks (ex: CPF, RG, CEP)... Como ficaria para no retorno, receber a máscara em cada campo específico?
Porém no caso, tenho também outros masks (ex: CPF, RG, CEP)... Como ficaria para no retorno, receber a máscara em cada campo específico?
GOSTEI 0
Raimundo Pereira
18/05/2018
Opa, bom dia.
Simples, apenas fiz o Backup da mascara antes de retira-la e depois da verificação eu retornei a mesma mais não informei manual e sim informei a variável
qual foi feita o backup.
Veja como fica:
Simples, apenas fiz o Backup da mascara antes de retira-la e depois da verificação eu retornei a mesma mais não informei manual e sim informei a variável
qual foi feita o backup.
Veja como fica:
var i: integer; Mascara_BK:string; begin with Screen.ActiveForm do begin for i := 0 to ComponentCount - 1 do begin if Components[i] is TMaskEdit then begin //Faz o backup da mascara do campo Mascara_BK:= TMaskEdit(Components[i]).EditMask;// // >> Remove a maskara para verificar se está em branco TMaskEdit(Components[i]).EditMask := ''; if (TMaskEdit(Components[i]).Text = '') then begin // >> Retorna a maskara que foi feito o backup TMaskEdit(Components[i]).EditMask := Mascara_BK; // Application.MessageBox(pchar('Verifique o campo '+TMaskEdit(Components[i]).Name+', o mesmo é obrigatório e deve está preenchido corretamente!'), 'Aviso', MB_ICONINFORMATION + MB_OK); //Foca no campo em branco TMaskEdit(Components[i]).SetFocus; Abort; end; // >> Retorna a maskara TMaskEdit(Components[i]).EditMask := Mascara_BK; end; end; end; end;
GOSTEI 2
Nomad
18/05/2018
P2, muito obrigado mesmo! Agora está rodando de acordo.
Eu havia tentando armazenar em uma variável, mas provavelmente apliquei a lógica de forma errada.
Obrigado pela ajuda!
Eu havia tentando armazenar em uma variável, mas provavelmente apliquei a lógica de forma errada.
Obrigado pela ajuda!
GOSTEI 0