MaskEdit: como saber se está em branco?
18/02/2006
0
ex: quando faço assim if MaskEdit1.Text = ´´ then
senpre retorna que não está em branco caso tenha alguma máscara.
Raserafim
Posts
19/02/2006
Edilcimar
19/02/2006
Marco Salles
Diz sim , amigo .. Voce e que tem que interpretar esta informação
se a mascara do seu maskedit por exemplo for : [b:c49cfd6be6]´ / / ´ [/b:c49cfd6be6]salvando caracteres[b:c49cfd6be6](final1)[/b:c49cfd6be6] , para saber se esta em branco voce deve testar assim
if maskedit1.text = ´ / / ´ then :arrow: mascara com final 1 esta em branco
se a mascara do seu maskedit por exemplo for : ´ / / ´ não salvando caracteres([b:c49cfd6be6]final Zero[/b:c49cfd6be6]) , para saber se esta em branco voce deve testar assim
if maskedit1.text = ´ ´ then :arrow: mascara com final zero esta em branco
21/02/2006
Raserafim
21/02/2006
Marco Salles
O que voce tem que fazer e não deixar que a mascara salve os literais
para isso voce tem que definir o final da mascara
Logo voce sempre vai poder testar If MaskEdit1.tex = ´´ é vazio
com certeza
o usuário pode ate escolher o formato da mascara, mas o final é voce que tem que definir.. Para o usário pouco importa
27/02/2006
Raserafim
27/02/2006
Marco Salles
o final da mascara não tem nada a ver com a exibição.. Mas para interpretar o resultado faz uma diferença inorme
Exemplo :
!99/99/9999;1;_
!99/99/9999;0;_
todas as duas tem o formato
MaskEdit1.text:=´ / / ´
porem o Final 1 Salva os literais que nesse caso e a ´\´ barra e ja a mascar com o final Zero não Salva
Na hora de gravar o formato da mascara coloque o final zero no tipo de mascara que o usuario intoriduziu
Por exemplo , coloque na propreidade EditMask Do MasjEdit uma mascara vazia e rode o exemplo abaixo
procedure TForm1.Button1Click(Sender: TObject); var FormatoQueOUsuarioEscolheu:String; begin FormatoQueOUsuarioEscolheu:=´99/99/0000´; Maskedit1.EditMask:=FormatoQueOUsuarioEscolheu; showmessage(Maskedit1.EditMask); Maskedit1.EditMask:=Maskedit1.EditMask+´;0;_´; showmessage(Maskedit1.EditMask); if MaskEdit1.Text = ´´ Then showmessage(´esta vazia´) else Showmessage(´Não esta vazia´); FormatoQueOUsuarioEscolheu:=´99/99/0000´; Maskedit1.EditMask:=FormatoQueOUsuarioEscolheu; showmessage(Maskedit1.EditMask); Maskedit1.EditMask:=Maskedit1.EditMask+´;1;_´; if MaskEdit1.Text = ´´ Then showmessage(´esta vazia´) else Showmessage(´Não esta vazia´) end;
[b:a8d530994f]percebe a diferença[/b:a8d530994f]
27/02/2006
Raserafim
o que eu estou dizendo é que eu tenho que gravar os caracteres literais pois a máscara pode mudar mas os dados que já foram gravados tem que estar no mesmo formato que foi gravado, mesmo que a máscara não seja mais a mesma.
27/02/2006
Marco Salles
use uma variavel para guardar oo formato da mascara , que o usuario escolheu e quando lhe for conveniente compare o conteudo da variavel com o valor do maskedit.text , se for diferente e sinal que tem algo escrito no maskedit se for igua e sunal que o maskedit esta vazio.. Este método independe do formato da mascara e independe do final
tipo isso
var stringDeFormatacao:String;
No exato momento que o usuario escolher uma mascara , em algum evento , no seu formario, isto é com voce Faça isto:
stringDeFormatacao:=MasKedit1.Text;
E finalmente faça o teste quandolhe for conveniente , por exemplo na hora de salvar
if maskedit1.Text = stringDeFormatacao then showmessage(´esta vazia´) else showmessage(´não esta vazia´)
27/02/2006
Aroldo Zanela
Não sei se entendi corretamente sua necessidade.
Criei uma função para verificar se numa entrada de dados, contém dados válidos. Neste contexto, apenas números:
function ItContainsData(Const Text: string): Boolean; var LineData: String; ValidChars: set of Char; I, N: SmallInt; begin ValidChars:= [´0´,´1´,´2´,´3´,´4´,´5´,´6´,´7´,´8´,´9´]; LineData:= ´´; N := Length(Text); for I := 1 to N do begin if Text[I] in ValidChars then begin LineData := LineData + Text[I]; end; end; Result := Length(LineData)>0; end;
Para testar, adicionei um TBitBtn e um TMaskEdit com a máscara =
´!99/99/00;1;_´ e no manipulador do evento OnClick, coloquei o seguinte código:
if not ItContainsData(medt1.Text) then begin MessageBox(0, ´Informe a data desejada.´, ´Error´, MB_ICONSTOP or MB_OK); end;
03/03/2006
Raserafim
Clique aqui para fazer login e interagir na Comunidade :)