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".