problema com mascaras

23/12/2005

1º - eu tenho uma function que é o seguinte :

Código:


function TFrmimpexp.verificaCampos: Boolean;
begin
if Edtcodigo.Text = ´´ then
begin
Application.MessageBox(´O Código não pode ficar em branco!´, ´Atenção´, MB_OK);
Edtcodigo.setfocus;
FSAIR := TRUE;
verificaCampos := False;
end
else if EdtTelefone.Text = ´´ then
begin
Application.MessageBox(´O Telefone não pode ficar em branco!´, ´Atenção´, MB_OK);
EdtTelefone.setfocus;
FSAIR := TRUE;
verificaCampos := False;
end
else
verificaCampos := True;
FSAIR := False;
end;





e quando clico no botao salvar eu mando ver se o verificacampos esta true ai ele salva.... se nao da o erro na tela....

porem como eu poderia validar o campo EdtTelefone pois a mascara do edit esta da seguinte forma !\(99\) 9999-9999;1;_ ou seja ele preenchendo ou nao ele deixa passar... e se eu colocar 0 no lugar de 9 ele vai dar a mensagem de invalid input values......

alguem poderia me ajudar, como eu devo fazer pra que se o cara nao digitar nada ele acuse que é invalido o numero do telefone... e se digitar pela metade tambem ....

grato


Fernando_cunha

Respostas

23/12/2005

Eixox

Estimado amigo,

O lance das máscaras é o seguinte - quando o valor colocado para representar a máscara for 9 então o parâmetro é opcional. Veja:

máscara = 999 é valido: -01, 0--, ---, -1-, 1--, 1-1 e etc.

Quando você usa Zero (0) na máscara, o campo é obrigatório.

máscara = 000 é válido: 111, 012, 876 qualquer coisa diferente disso dá erro.

A máscara deve ser então ao invés disso: !\(99\) 9999-9999;1;_ use
!\(00\) 0000-0000;1;_ - o Um no final quer dizer que ele tem que salvar o formato da máscara.

Qualquer coisa digitada pela metade usando os zeros dará uma exceção.

Agora meu amigo, número de telefone é uma coisa muito relativa - se o cara disser que não tem telefone, o usuário deverá preencher tudo zero. Isso não é uma coisa legal. Número de telefone nunca deve ser forçado num sistema, até porque nem todo mundo no século XXI tem telefone.

Abraços - Espero ter ajudado.


Responder Citar

25/12/2005

Fx|hand

kra... é complicado... mais axo q dah pra intender... faiz um override na classe de verificação do componente... vc vai fazer o seguinte....


antis do Type do formulario.. vc vai ´redeclarar´ o objeto com a função q vc vai usar.....

assim:

//Aki estou REDECLARANDO a TMaskEdit
type
  TMaskEdit = class(Mask.TMaskEdit)
  protected
  //Aki tbm estou redeclarando a função de validar
    function Validate(const Value: string; var Pos: Integer): Boolean; Override;
  end;


bom... até ai tah tudo certo... mais agora vem a parte da rotina de verificação... saca só !!!

// A FUNÇÃO
function TMaskEdit.Validate(const Value: string; var Pos: Integer): Boolean;
begin
Result := True;
end;


só tem um pekeno problema... o Result sempre TEM q ser TRUE, senão ele vai mandar a msg de INVALIDO do proprio componente....

nessa rotina vc pode tratar a string utilizando a Variavel ´VALUE´...... e conseguir tratar a string do jeito q vc kiser....

axo q dah pra intender... flwss !!! feliz natal !


Responder Citar