Função: __SetPicture
Define o comportamento de aplicação de picture numérica no sistema, para operações de entrada de dados via instrução [ @ ... SAY/GET ... PICTURE ] , bem como o comportamento na formatação de dados numéricos em string através da função Advpl Transform(), quando utilizamos a função de picture "@E", para formatar um dado numérico em string utilizando o formato Europeu ( onde a vírgula é usada como separador decimal e ponto(s) utilizado(s) como separador(es) de milhar ).
__SetPicture ( [ cPictMode] ) --> cPictUsed
Nome | Tipo | Descrição | Obrigatório | Referência |
cPictMode | Caracter | String para definir o comportamento da aplicação da picture de formatação numérica. Os valores considerados são : DEFAULT, AMERICAN ou RUSSIAN*. Veja maiores detalhes sobre o significado de cada uma destas opções nas observações da função. |
- (caracter)
- Retorna a string correspondente à aplicação de picture numérica em uso no sistema.
Na linguagem Advpl, a aplicação de pictures numéricas "@E" nas pictures de entrada de dados / visualização ( @ GET / SAY ) e/ou na função de formatação Transform(), faz com que a formatação aplicada ao número seja feita em formato Europeu ( onde a vírgula é usada como separador decimal e ponto(s) utilizado(s) como separador(es) de milhar ).
Através da função __SetPicture(), quando chamada com o parâmetro "AMERICAN", podemos alterar o comportamento desta formatação específica, para que a formatação aplicada permaneça em formato americano ( onde o ponto é usado como separador decimal e vírgula(s) utilizada(s) como separador(es) de milhar ), mesmo que a função "@E" esteja explícita na picture.
Quando chamada com o parâmetro "RUSSIAN" (*), a formatação da picture com @E será com espaços no separador de milhar e virgula no separador decimal (por exemplo: 123 456,78)
Caso especificada uma nova formatação, os únicos valores válidos como parâmetro são as strings "DEFAULT", "AMERICAN" e "RUSSIAN" (*), sem espaços, e com caixa alta ( todas as letras maiúsculas ). Quaisquer outros valores serão considerados inválidos, e serão ignorados pela função, sem a emissão de mensagem de erro ou advertência, mantendo a configuração de comportamento inalterada.
Configuração | Separador de Milhar | Separador Decimal | Exemplo |
---|---|---|---|
DEFAULT | "." (Ponto) | "," (Virgula) | 123.456.789,12 |
AMERICAN | "," (Virgula) | "." (Ponto) | 123,456,789.12 |
RUSSIAN* | " " (Espaço) | "," (Virgula) | 123 456 789,12 |
*RUSSIAN só é aceito em builds superiores a 7.00.131227A - 2.4.0 (com geração superior a 20161130).
User Function TSTSETP()
Local cOldCfg
Local nNumTeste := 123456.78
// Mostra na tela um numero formatado e a configuração atual em uso
// Deve ser mostrado 123.456,78 ( formato europeu )
MsgStop( Transform ( nNumTeste , "@E 999,999.99") , "Configuracao "+__SetPicture() )
// retorna a configuração atualmente em uso
// e Troca a configuração atual para padrão americano
cOldCfg := __SetPicture("AMERICAN")
// Mostra na tela um numero formatado e a configuração atual em uso
// Deve ser mostrado 123,456.78 ( formato americano )
MsgStop( Transform ( nNumTeste , "@E 999,999.99") , "Configuracao "+__SetPicture() )
// Restaura a configuração anterior
__SetPicture(cOldCfg)
// Mostra na tela um numero formatado e a configuração atual em uso
// Deve ser mostrado 123.456,78 ( formato europeu )
MsgStop( Transform ( nNumTeste , "@E 999,999.99") , "Configuracao "+__SetPicture() )
Return