Bernhard e jorgepopel,
Bom dia,
Vendo o manual do scriptcase 5,6 e 7 com mais atenção notei onde está a confusão.
O pessoal que vem do scriptcase 5 e anteriores contavam nos formulários com as máscaras: z e x.
À partir do scriptcase 6 e 7 as máscaras nos formulários passaram a ser: 9,A e *.
Os formulários, segundo o manual das versões 6 e 7, aceitam normalmente as máscaras: 9, A e *.
Bem como o uso de múltiplas máscaras.
Eu fiz em um formulário as seguintes máscaras:
9999-9999;(99) 9999-9999;(99) 99999-9999;
E funcionou corretamente.
Como podem ver em:
http://www.simaoebuhler.com.br/teste/forum1
Retirado do manual sobre formulários:
"Máscara de Exibição - Define a máscara de exibição do campo. Existem tres tipos de máscara que podem ser mescladas.
Caracter Descrição
9 Representa um caracter numérico (0-9)
A
Representa um caracter alpha numérico (A-Z,a-z)
* Representa qualquer caracter alfa-numérico (A-Z,a-z,0-9) digitada pelo usuário.
Nota: É possivel mesclar duas ou mais máscaras simultaneamente, separadas por ponto e vírgula com a menor mascara inicializando. A substituição ocorre durante a digitação dos caracteres quando o numero de caracteres da menor máscara é excedido.
Exemplos de máscaras:
Campo Máscara Valor Digitado Valor Formatado
Número de Telefone +99 99 9999 - 9999 123456789012 +12 34 5678 - 9012
Software Key (Apenas Letras) AAAA-AAAA-AAAA-AAAA QWERTYUIASDFGHJK QWER-TYUI-ASDF-GHJK
Software Key (Letras e Números) ****-****-****-**** Q1W2E3R4T5Y6U7I8 Q1W2-E3R4-T5Y6-U7I8
Placa de Carro AAA - 9999 QWE1234 QWE - 1234
Serial do ScriptCase A999A999A999-**** D111H111G111DG2P D111H111G111-DG2P
Múltiplas máscaras (Telefone) 9999-9999;(99) 9999-9999;9999 999 9999;+99 99 9999-9999"
Obs: Notem que até os exemplos acima tem múltiplas máscaras
Agora as consultas (grid) tanto nas versões 5, 6 e 7 continuraram a ter como máscaras os caracteres: z e x.
[size=12pt]Mas não suportam o uso de múltiplas máscaras[/size].
Note que o texto retirado do manual das consultas (grid) e exposto abaixo não informa o suporte a mútiplas máscaras nem mostra exemplos com múltiplas máscaras.
" Máscara de Consulta - Define a máscara de exibição do campo. São dois os tipos de máscara descritos na tabela abaixo:
Caracter Descrição
X É substituído por quaisquer caracteres retornados pelo banco de dados. Seu preenchimento é obrigatório e quando forem retornados menos caracteres do que o tamanho da máscara, o valor será completado com zeros à esquerda.
Z É substituído por quaisquer caracteres retornados pelo banco de dados. Seu preenchimento é opcional e quando forem retornados menos caracteres do que o tamanho da máscara, nada será feito em relação aos caracteres que estão faltando. Além disso os zeros à esquerda serão suprimidos. Obrigatoriamente o uso deste caracter é à esquerda da máscara quando usado em conjunto com o X
Exemplos de máscaras:
Máscara Valor do campo Valor formatado
(xx) xxxx - xxxx 1234567890 (12) 3456 - 7890
(xx) xxxx - xxxx 12345678 (00) 1234 - 5678
(zz) xxxx - xxxx 1234567890 (12) 3456 - 7890
(zz) xxxx - xxxx 12345678 ( ) 1234 - 5678
(zz) xxxx - xxxx 0012345678 ( ) 1234 - 5678"
Logo nas consultas (grid) devemos ter uma única máscara.
A exemplo: (zz) zxxxx-xxxx
O problema é que este tipo de máscara por ser única (não múltipla) somente irá funcionar para um tipo de ocorrência.
No caso dos telefones temos três tipos de ocorrência: 1234-1234, (41) 1234-1234, (41) 12345-1234
Logo este tipo de máscara única nunca irá funcionar corretamente.
Ela somente irá funcionar para ocorrências únicas.
Ex: R$ zzz.zzz.zzz,xx
[size=14pt]Fica então minha sugestão para que seja implementada máscaras múltiplas nas aplicações consulta (grid) e o “problema” sanado de vez.[/size]
Jorgepopel! Para contornar a situação atual retire a máscara do campo e coloque este código no evento onrecord da aplicação consulta (grid):
switch (strlen(trim("{TELEFONE}"))) {
case 8:
{TELEFONE}="() “.substr(”{TELEFONE}",0,4)."-".substr("{TELEFONE}",4,4);
break;
case 10:
{TELEFONE}="(".substr("{TELEFONE}",0,2).") “.substr(”{TELEFONE}",2,4)."-".substr("{TELEFONE}",6,4);
break;
case 11:
{TELEFONE}="(".substr("{TELEFONE}",0,2).") “.substr(”{TELEFONE}",2,5)."-".substr("{TELEFONE}",7,4);
break;
}
Obs: onde {TELEFONE}= deverá ser substituido pelo nome do seu campo com os telefones.
Funcionou para mim. Veja:
http://www.simaoebuhler.com.br/teste/forum1