Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1499 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados,

Estou tendo dificuldade com máscaras para os TStringFields no Lázarus. O problema é o seguinte:

Tenho um form com um DBEdit ligado ao TStringField cujo campo é um número de telefone;

Estou atribuindo a máscara: "(99)9999.9999;0;_" à propriedade "EditMask" desse componente TStringField como faço no Delphi, porém o comportamento do DBEdit no Lazarus, não é o mesmo do Delphi. 

O DBedit só fica formatado com máscara " (91)8181.8181 " enquanto o está sendo editado, perdendo a formatação assim que o foco sai do componente. Ex.:" 9181818181 ". 

Existe alguma propriedade que estou deixando de configurar no DBEdit ou TStringField? ou esse é o comportamento "normal" desses componentes no Lazarus?

OBS.: Uso Lazarus 1.8.2; Firebird; Zeos (Windows 8.1)

 

  • 1 ano depois...
Postado
Em 26/08/2019 at 13:06, Daniel Simoes disse:

Creio que seja apenas necessário trocar o ;0; por ;1;

http://delphiparainiciantes.com.br/como-utilizar-mascaras-maskedit-no-delphi/

É antigo, mas por incrível que pareça, ainda não consegui resolver apesar de muitas buscas na web.

No caso exposto acima, não pretendo salvar o conteúdo com a formatação, quero apenas os números.

Se colocar "1" o resultado será o campo com os caracteres indesejados. O comportamento do DBEdit do Lazarus não é o mesmo do Delphi, infelizmente. 

Como posso formatar os campos: "cpf", "cnpj", "telefone" sem perder essa formatação ao sair da digitação do campo no form? 

Postado
24 minutos atrás, Juliomar Marchetti disse:

O que o Daniel escreveu acima é a resposta. e funciona

Olá Juliomar. 

Primeiramente muito obrigado pelo interesse em ajudar.

Funciona perfeitamente no Delphi, mas no Lazarus tem alguns probleminhas, pelo menos é o que acontece aqui.

Perceba que estou falando do componente "TDBEdit" e sua propriedade "EditMask" no Lázarus. Não do componente "TEditMask", este funciona bem.

Colocando a máscara: "(00)0000.0000;1;_" ou "(00)0000.0000;0;_" o formato fica ok em design "(__)____.____" ;

o que aparece quando o registro é carregado na tela é, por exemplo: "8198989898" ;

Quando o componente recebe o foco a máscara aparece: "(81)9898.9898" ;

Quando o foco sai do componente volta a ser "8198989898" , talvez uma propriedade "DisplayFormat" resolvesse, mas ela não existe no componente citado;

Como o campo da tabela é "varchar(10)" se coloco o "1" no segundo argumento da máscara, ao deixar o foco no componente os três últimos caracteres são truncados e o que vai entrar no DB é isso:"(81)9898.9" ;

Outro: Ao iniciar a digitação o cursor fica em cima do primeiro caractere, no caso "(" exigindo que o usuário tecle algo antes, um espaço por exemplo, para digitar o DDD. 

Resumindo, os caracteres de formatação não ficam fixos como no Delphi ou mesmo como no componente "TMaskEdit" do próprio Lázarus com a possibilidade de salvar de forma literal ou não "1 ou 0 no segundo argumento".  Por enquanto estou deixando sem formato, mas isso não traz uma boa experiência para o usuário.

Acredito que alguém já certamente passou por essa etapa e resolveu sem precisar fazer muita "gambiarra".

 

 

 

 

Postado
16 minutos atrás, Juliomar Marchetti disse:

há saquei.

olha no field do dataset, tem o displayformat e tem o editFormat

tente colocar ali neles.

No caso Nem um nem outro, apenas "EditMask".

 

Uso:

Lázarus: v2.0.8 (Windows)
Para conexão e manipulação dos dados no servidor:  (TZQuery da ZeosLib) -> Não Têm as propriedades citadas, apenas EditMask.
Para manipulação dos dados no cliente: (TRxMemoryData da RxLib)  -> Idem 
DB: Firebird 2.5

 

 

Postado

Blz, era exatamente isso que não queria, mudar o banco de dados apenas para contornar esse problema.

Agradeço o empenho. Vou usar o TMaskEdit passando os dados para o campo da tabela na hora de salvar.

 

 

  • Este tópico foi criado há 1499 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.