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