Verificar se um Componente MaskEdit está vazio

Delphi

16/03/2005

E ai pessoal voltei com mais uma duvida e essa duvida eu tenho desde que eu me conheço por programador.

Como verificar se o maskedit esta vazio (sem dados), quando se usa mascara???
[b:af1344a484]Por Exemplo:[/b:af1344a484]
MaskEdit1.EditMask:= !99/99/00;1;_


Mesmo pq a mascara é interpretada como conteudo, aguardo respostas.


Tiago_fatec_pg

Tiago_fatec_pg

Curtidas 0

Melhor post

Marco Salles

Marco Salles

24/08/2005

Tem outra forma mais elegante de validar isso?


eu particularmente não me recordo

Pois se eu mudar minha mascara eu vou ter que lembrar dessa validação, não fica muito boa a manutenabilidade.


var
 mascara :String;


procedure TForm1.FormShow(Sender: TObject);
begin
mascara:=MaskEdit1.Text;
end;


if MaskEdit1.Text = mascara Then 
  showmessage(´Ta Vazio´) 
else 
  Showmesage(´Não ta Vazio´);


obs. Não tem como marcar para nao salvar caracteres)

[b:7f82b7d728]No fimal da mascara coloque zero , ao inves de um[/b:7f82b7d728]

![code]99/99/00;1;_ -->>> Salva 
!99/99/00;0;_ -->>> Naão salva
[/code]

Agora estive analisando aqui a duvida inicial do [b:7f82b7d728]Tiago_Fatec_PG[/b:7f82b7d728]

E ai pessoal voltei com mais uma duvida e essa duvida eu tenho desde que eu me conheço por programador. Como verificar se o maskedit esta vazio (sem dados), quando se usa mascara???


Sera que ele não esta se referindo ao erro que da , quando se sai do Maskedit e deixa alguns campos que são obrigatorios (Devido a presença do Zero ) sem preencher

[b:7f82b7d728]Por exemplo , na mascara !99/99/00;1;_ O Ano tem a digitação obrigatoria.. se preencher o dia e tentar sair do maskEdit se obtem erro[/b:7f82b7d728]

Bem isto so ele para responder...


GOSTEI 1

Mais Respostas

Macario

Macario

16/03/2005

Qual seria a real necessidade Tiago?


GOSTEI 0
Marco Salles

Marco Salles

16/03/2005

Como verificar se o maskedit esta vazio (sem dados), quando se usa mascara??? MaskEdit1.EditMask:= !99/99/00;1;_


Para esta mascara , Texte:

if MaskEdit1.Text = ´  /  /  ´ Then
  showmessage(´Ta Vazio´)
else
  Showmesage(´Não ta Vazio´);



GOSTEI 0
Yallebr

Yallebr

16/03/2005

Marco Salles,


Tem outra forma mais elegante de validar isso?
Pois se eu mudar minha mascara eu vou ter que lembrar dessa validação, não fica muito boa a manutenabilidade.

Existe uma propriedade ou forma de saber se o maskedit está vazio independente da mascara? (obs. Não tem como marcar para nao salvar caracteres)

Obrigado.


GOSTEI 0
Tiago_fatec_pg

Tiago_fatec_pg

16/03/2005

Esta duvida ainda esta na minha cabecinha!!! :?

Bom é o seguinte:

Por exemplo qdo estou trabalhando com os maskedits eles mantem as mascaras e pronto + ou - assim
quero que eles emitam um sinal para o usuario qdo o preenchimento estiver incorreto por exemplo no caso de data [b:25ea178ebf]XX/XX/XXXX[/b:25ea178ebf]
[b:25ea178ebf]
Obs: [/b:25ea178ebf]Este campo é de preenchimento obrigatório

Se o Fulano colocar a data assim 12/__/____ tah errado
Se o fulano colocar a data assim tb 12/03/198_ tah errado
Se ele deixar assim __/__/____ tb ta errado!!!
Se ele colocar assim __/13/1313 tb ta errado
Se ele colocar assim 32/02/2005 tb ta errado

É isso que eu quero com as outras rotinas não consigo verificar a integridade dos dados!!

Por isso eu peço se alguem jah passou por isso por favor tenha um pouco de paciencia com a minha pessoa!!! :!: :!:


GOSTEI 0
Fknyght

Fknyght

16/03/2005

coloca no evento onexit do maskedit
no caso de data falou, e pra funcionar vc tem que salvar os caracteres na mascara tipo

maskedit1.editmask := ´99/99/00;1; ´;


Procedure TForm1.MaskEdit1OnExit( Sender : TObject )
var Data : TDate;
begin
   try
      Data := StrToDate( MaskEdit1.Text );
   Except // <-- Aqui vai tratar se existir erro na data 
      ShowMessage(´Data Inválida´);
      Abort; //<-- Aborta a saida do focu do componente
   end;
end;



Espero ter ajudado


GOSTEI 0
Marco Salles

Marco Salles

16/03/2005

A Idéia é mais ou menos esta ;

coloca no evento onexit do maskedit no caso de data falou, e pra funcionar vc tem que salvar os caracteres na mascara tipo Código: maskedit1.editmask := ´99/99/00;1; ´; Código: Procedure TForm1.MaskEdit1OnExit( Sender : TObject ) var Data : TDate; begin try Data := StrToDate( MaskEdit1.Text ); Except // <-- Aqui vai tratar se existir erro na data ShowMessage(´Data Inválida´); Abort; //<-- Aborta a saida do focu do componente end; end;


[b:c9d5616e95]Com uma pequena diferença : para tratar esses dados é recomendável que a mascara não contenha zeros... Coloque na sua mascara so Nove
e coloque o final Digito = 1[/b:c9d5616e95]

Por exemplo : maskedit1.editmask := ´99/99/00;1; ´; 


:idea: :idea: :idea: :idea: :idea:
No seu caso é o seguinte: [b:c9d5616e95]como o campo é de digitação obrigatoria [/b:c9d5616e95], Tratar o problema so no evento onexit do maskedit :arrow: não é por si so garantia :cry: :cry: ... :wink:[b:c9d5616e95] Existe teclas de atalho onde o componente não perde o foco , entre outras coisas mais[/b:c9d5616e95]....

Pois bem , faça o seguinte:

var
 DataPrenchidaErrada:Boolean=False;


procedure TForm1.MaskEdit1Exit(Sender: TObject);
var Data : TDate;
begin
   try
      Data := StrToDate( MaskEdit1.Text );
      DataPrenchidaErrada:=False;
   Except // <-- Aqui vai tratar se existir erro na data
      ShowMessage(´Data Inválida´);
      MaskEdit1.SetFocus;
      DataPrenchidaErrada:=True;
   end;
end;


procedure TForm1.SalvarDadosClick(Sender: TObject);
begin
SalvarDados.SetFocus; //força o foco a sair do maskedut;
   if not (DataPrenchidaErrada) Then
     showmessage(´enquanto a data não tiver Ok Não executo esta    
        mensagem´);
end;


Por isso eu peço se alguem jah passou por isso por favor tenha um pouco de paciencia com a minha pessoa!!!


com certeza todos nos temos paciencia um para com o outro , mas voce deve indagar mais , e não deixar o tópico ´morto´ , pois ai a gente não sabe que fim levou .. Então se entendeu beleza se não pergunte , indage , que ai a gente vai...


GOSTEI 0
Marco Salles

Marco Salles

16/03/2005

So uma correção :

Com uma pequena diferença : para tratar esses dados é recomendável que a mascara não contenha zeros... Coloque na sua mascara so Nove e coloque o final Digito = 1 Código: ERRADO******* Por exemplo : maskedit1.editmask := ´99/99/00;1; ´;


Certo:
Por exemplo : maskedit1.editmask := ´99/99/99;1; ´;  



GOSTEI 0
POSTAR