Tecnologia > Ferramentas de Apoio > CBDS > Informações técnicas > Máscaras de edição

Máscaras de edição

As máscaras de edição de valores definem a exibição dos valores de todos os campos exibidos nas telas de sistema.

São utilizadas em campos de usuário através do CBDS.

Pictures de máscara

Picture Tipo Descrição Exemplo
9 Numérico Obriga a entrada de um caractere numérico. 99.999
Z Numérico Permite a entrada de um caractere numérico. Ignora os zeros à esquerda. ZZ.ZZ9
A Alfanumérico Permite a entrada de qualquer caractere alfanumérico. AAAAA
U Alfanumérico Permite a entrada de qualquer caractere alfanumérico. Converte este caractere para maiúsculo. UU
L Alfanumérico Permite a entrada de qualquer caractere alfanumérico. Converte este caractere para minúsculo. ULLLL
D Dia Obriga a entrada de um caractere numérico para representação de dia. DD/MM/YYYY
M Mês Obriga a entrada de um caractere numérico para representação de mês. DD/MM/YYYY
Y Ano Obriga a entrada de um caractere numérico para representação de ano. DD/MM/YYYY
h Hora Obriga a entrada de um caractere numérico para representação de hora. hh:mm:ss
m Minuto Obriga a entrada de um caractere numérico para representação de minuto. hh:mm:ss
s Segundo Obriga a entrada de um caractere numérico para representação de segundo. hh:mm:ss
C Caractere Permite a entrada de qualquer letra do alfabeto. Não permite a entrada de caracteres especiais e números. CCCCC

Delimitadores

Picture Descrição Exemplo
[, ] Indicam o início e o final de repetição de picture de máscara. Formato: <picture de máscara> + '[' + <número de vezes que esta picture será repetida> + ']'. A[5]
# Indica o início e o final de informação de pictures especiais. Formato: '#' + <pictures especiais> + '#' + máscara. #-#ZZ9,99

Pictures especiais

As informações especiais de máscara estão situadas entre os separadores '#' no início da picture de edição:

Picture Descrição Exemplo
< A edição será processada da direita para a esquerda (Padrão para campos numéricos). #<#999.999
> A edição será processada da esquerda para a direita (Padrão para campos não numéricos e campos tipo data e hora). #>#999.999
b A máscara não será mostrada. Usado apenas quando se usa a picture 'Z'. #b#ZZZ.ZZZ
n A máscara será mostrada vazia. Usado apenas quando se usa a picture 'Z'. #n#ZZZ.ZZZ
e Os espaços ao final da palavra serão apagados. #e#AAAAA
- A edição permite números negativos. #-#ZZ9,99
M A formatação do tipo Money será ignorada. Formata o campo como se fosse Numeric. #M#ZZ9,99
C Os valores do tipo Time e Longtime serão tratados como valores decimais. #C#hhh:mm
A Os valores numéricos terão tratamento contábil. #A#ZZ9,99
V Indica a quantidade de casas decimais do valor. Vem seguido do número de casas decimais. #V2#ZZ999
1 A posição do sinal negativo será à direita (padrão). Formato: '-' + '1'. #-1#ZZ9,99
2 A posição do sinal negativo será à esquerda. Formato: '-' + '2'. #-2#ZZ9,99
3 Números negativos ficarão entre parênteses. Formato: '-' + '3'. #-3#ZZ9,99
W Não será considerada a acentuação. #W#AAAAA
[, ] Indicam o início e o final de um campo especial. Formato: '[' + <nome do especial> + ']'. #[EdiCra]#
F Indica posições com valores fixos na máscara. Formato: 'F' + '[' + <posição> + ',' + <quantidade de posições> + ',' + <'D' (se o valor puder ser alterado) ou 'N' (se o valor não puder ser alterado)> + ']' + ';'. O formato descrito anteriormente pode se repetir várias vezes. Após todas as posições fixas serem indicadas, deve-se usar o seguinte formato: <máscara de edição> + ';' + <conjunto de N caracteres, onde N é a soma de todas as quantidades de posições de todos os indicadores de valores fixos> + ';' + <posição onde irá aparecer o cursor>. Esta opção deve ser a última que aparece entre os delimitadores '#'. #F[1,2,N];F[3,3,D]; 99.999.99;01012;4#
(, ) Indicam o início e o final de um campo memo. Formato: '(' + <número de colunas> + ',' + <número de linhas> + ')'. #(50,4)#
L Indica um Lookup do qual será buscada a máscara. Um Lookup pode ser registrado através da procedure RegisterLookup. Formato: 'L''+ '(' + <nome do Lookup> + ')'. #L(NumEmp)#
Y Indica o ano inicial para valores convertidos pela máscara. Usado em campos Data com ano de dois dígitos para calcular o ano de quatro dígitos. Formato: 'Y' + '(' + <ano> + ')'. Quando o ano passado for maior ou igual aos dois últimos dígitos do ano base, o ano resultante será a concatenação entre os dois primeiros dígitos do ano base e o ano informado. Quando o ano passado for menor que os dois últimos dígitos do ano base, o ano resultante será a concatenação entre os dois primeiros dígitos do ano base incrementados em 1 e o ano informado. Por exemplo:
Usando a máscara '#Y(1950)#DD/MM/YY', a conversão de datas ficaria assim:
  • '01/01/50': É convertido para 01/01/1950. '19' do ano base concatenado com '50' do valor informado, pois 50 é maior ou igual a 50;
  • '01/01/90': É convertido para 01/01/1990. '19' do ano base concatenado com '90' do valor informado, pois 90 é maior ou igual a 50;
  • '01/01/05': É convertido para 01/01/2005. '19' do ano base mais 1 concatenado com '05' do valor informado, pois 05 é menor que 50;
  • '01/01/49': É convertido para 01/01/2049. '19' do ano base mais 1 concatenado com '49' do valor informado, pois 49 é menor que 50;
Se esta opção não for informada na máscara será considerado o ano base padrão do sistema que é 1900. Neste caso se a máscara tiver apenas dois dígitos no ano este será convertido em um ano entre 1900 e 1999.
Para alterar o ano base padrão do sistema pode-se executar a rotina MskSetBaseYear passando o ano base desejado. Após a alteração do ano base deve-se usar a rotina PictureStringToValue para converter o valor desejado e retornar o ano base padrão para que as datas do sistema continuem funcionando corretamente. Para isto deve-se executar a rotina MskSetBaseYear passando o parâmetro cOTDefaultBaseYear. A alteração do ano base padrão pode afetar as máscaras em locais não desejados do sistema, por isso somente deve ser feita em situações específicas e bem definidas. Exemplo:

xData := PictureStringToValue('01/01/01', 'DD/MM/YY'); // irá retornar 01/01/1901
xData := PictureStringToValue('01/01/01', '#Y(1950)#DD/MM/YY'); // irá retornar 01/01/2001
try
  MskSetBaseYear(1950);
  xData := PictureStringToValue('01/01/01', 'DD/MM/YY'); // irá retornar 01/01/2001
finally
  MskSetBaseYear(cOTDefaultBaseYear); // retorna o ano base padrão do sistema: 1900
end;

#Y(1950)#DD/MM/YY
N Indica a precisão e o número de casas decimais de um campo numérico. Formato: 'N' + '(' + <precisão> + ',' + <número de casas decimais> + ')'. #N(5,2)#99999
Q Caso exista um campo com máscara tipo hora com duas posições para hora e seja quantidade, foi implementada essa opção, que indica quantidade. Se esta opção não for indicada será feita a validação (00:00 a 23:59). #Q#hh:mm
R Troca caracteres de controle por espaço nos valores mascarados pelas máscaras tipo alfanuméricas. #R#A[30]
l Converte a parte alfanumérica para "todas em minúsculas". #l#C[20]
u Converte a parte alfanumérica para "todas em maiúsculas". #u#C[20]
S Define os separadores para máscaras numéricas. Após o caractere 'S' devem estar concatenados outros dois caracteres que definem o separador de milhares e o separador de decimais respectivamente. Formato: 'S' + <caractere que define o separador de milhares> + <caractere que define o separador de decimais> #S,.#ZZZ.ZZ9,99
@

Indica que todo o texto será tratado como valor. Isto significa que qualquer caractere que faça parte da máscara (ponto, vírgula, traço, barra,...) será salvo junto com o valor. Esta opção somente deve ser usada com campos alfanuméricos. Ao utilizar essa opção a máscara não irá respeitar configurações regionais.

#@#999.999.999.999

Tipos de máscara

Tipo Tipo de dado Tipos de edição Exemplo
tmAlpha Alfanumérico

Permite utilizar A, C, L, U, Z, 9 e qualquer outro tipo de caractere especial.

Quando o caractere "@" for utilizado em máscaras de campos alfanuméricos e deseja que a máscara seja numérica, é recomendado:

  • Utilizar a picture especial "<", assim o campo terá a mesma edição padrão para campos numéricos (da direita para a esquerda);
  • Utilizar a máscara "9", com isso todos os caracteres do campo serão exibidos na tela, não permitindo o usuário digitar espaços durante a edição do campo;
    • Se o usuário "copiar e colar" algum valor que contiver um espaço, este espaço será substituído pelo numeral 0;
  • Se o campo possuir mais de 15 caracteres, aumentar o tamanho deste campo em 5 pois o Delphi possui uma limitação estrutural permitindo que ele consiga processar apenas valores com até 15 caracteres numéricos.

(Z99)999-9999; AA-UU-L/C; ULLLLL

ou

#@<#9[17]

tmNumeric Numérico Permite: Z, 9 e os seguintes caracteres especiais: '.', '/', ':', '(', ')', '[' ou ']'. (Z99)999-9999; #-<b#ZZZZ; ZZZ.ZZ9
tmTime Hora Permite: h, m e o caractere especial ':'. hh:mm
tmLongtime Quantidade de hora Permite: h, m e o caractere especial ':'. hhhh:mm; #C#hhh:mm
tmDate Data Permite: D, M, Y e os seguintes caracteres especiais: '/' ou '-'. DD/MM/YYYY; MM-DD-YYYY
tmMoney Numérico com casas decimais Permite: Z, 9 e os seguintes caracteres especiais: '.', '/' ou ','. #-#Z.ZZ9,99; 9.999,99; 99999
tmEspecial Especial A forma de edição do especial é cadastrada na tabela R999ESP. #[EdiLoc]#; #[EdiCra]#

Este artigo ajudou você?