Página 1 de 1
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 00:43
por Vandi
Boa noite,
Numa certa rotina gostaria de mostrar alguns numeros, porém, tenho que alinhá-los a direita.
Alguém poderia me dizer como fazer isso? Já fiz algumas pesqueisas, mas não achei a solução.
Gilvandi
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 01:36
por alxsts
Olá!
Os campos numéricos são naturalmente alinhados à direita.
A tua dúvida não ficou clara. Estes "números" estão contidos em campos numéricos ou do tipo carácter? Qual seria a situação? Get, TBrowse, Say?
Por favor, forneça mais detalhes para que a análise e solução do problema seja facilitada.
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 08:15
por Vandi
Alexandre,
Bom dia...
A rotina que mostra os valores na tela é essa aí. Acontece que dependendo do valor êles não ficam corretamente alinhados na margem direita.
Gilvandi
Código: Selecionar todos
*-------------------------------------------------
Function MostraDados()
*---------------------------------------------------------------------
@479,113 SAY StrZero(gQtd,5) COLOR BLUE SIZE 65, 30 FONT oFont003 OF TelaVenda1
@473,158 SAY TRANSFORM(gRefKg,"999.999") COLOR BLUE SIZE 65, 30 FONT oFont003 OF TelaVenda1
@460,203 SAY TRANSFORM(gRefVr,"999,999.99") COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
@460,248 SAY TRANSFORM(gBebVr,"999,999.99") COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
@460,293 SAY TRANSFORM(gSobVr,"999,999.99") COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
Return Nil
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 08:36
por Pablo César
Gilvandi, para exibir na tela é fácil. Mas para que isso dê certo você vai precisar setar a fonte para o tipo mono-espaçada como Courier New. Pois outra fonte como Arial, que tem medidas diferenciadas como o 1 ( um ) e o 0 ( zero ) que não ocupam o mesmo tamanho.
Código: Selecionar todos
*-------------------------------------------------
Function MostraDados()
*---------------------------------------------------------------------
@479,113 SAY StrZero(gQtd,5) COLOR BLUE SIZE 65, 30 FONT oFont003 OF TelaVenda1
@473,158 SAY PadL(Alltrim(TRANSFORM(gRefKg,"999.999")),10) COLOR BLUE SIZE 65, 30 FONT oFont003 OF TelaVenda1
@460,203 SAY PadL(Alltrim(TRANSFORM(gRefVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
@460,248 SAY PadL(Alltrim(TRANSFORM(gBebVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
@460,293 SAY PadL(Alltrim(TRANSFORM(gSobVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1
Return Nil
Só resta te perguntar se você quer manter a exibição do modo americano ou quer exibir no modo brasileiro onde o milhar é separado com ponto e o decimal com vírgula ?
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 09:31
por Vandi
Pablo,
Bom dia...
Agradeço sua atenção... poderia postar então como ficaria essa rotina, inclusive no padrão brasileiro?
Gilvandi
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 12:25
por sygecom
Olá Vandi,
OS SAY são alinhados a ESQUERADA por padrão e os GET NUMÉRICO a DIREITA.
Para alinhar seu exemplo a DIREITA pode usar assim:
Código: Selecionar todos
*-------------------------------------------------
Function MostraDados()
*---------------------------------------------------------------------
@460,113 SAY StrZero(gQtd,5) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1;
STYLE SS_RIGHT
@460,158 SAY PadL(Alltrim(TRANSFORM(gRefKg,"999.999")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1;
STYLE SS_RIGHT
@460,203 SAY PadL(Alltrim(TRANSFORM(gRefVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1;
STYLE SS_RIGHT
@460,248 SAY PadL(Alltrim(TRANSFORM(gBebVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1;
STYLE SS_RIGHT
@460,293 SAY PadL(Alltrim(TRANSFORM(gSobVr,"999,999.99")),10) COLOR BLUE SIZE 80, 30 FONT oFont003 OF TelaVenda1;
STYLE SS_RIGHT
Return Nil
Cuide apenas para que o tamanho dos SIZE seja o mesmo para ficar tudo bem alinhado corretamente, e cuide também para que comece na mesma coluna. Veja que mudei isso no seu exemplo.
Se quiser pode pegar mais tipos de STYLE que você pode usar em: \hwgui\include\windows.ch
Abaixo os STYLE que podem ser usados nos SAY
Código: Selecionar todos
/*
* Static Control Constants
*/
#define SS_LEFT 0 // 0x00000000L
#define SS_CENTER 1 // 0x00000001L
#define SS_RIGHT 2 // 0x00000002L
#define SS_ICON 3 // 0x00000003L
#define SS_BLACKRECT 4 // 0x00000004L
#define SS_GRAYRECT 5 // 0x00000005L
#define SS_WHITERECT 6 // 0x00000006L
#define SS_BLACKFRAME 7 // 0x00000007L
#define SS_GRAYFRAME 8 // 0x00000008L
#define SS_WHITEFRAME 9 // 0x00000009L
#define SS_USERITEM 10 // 0x0000000AL
#define SS_SIMPLE 11 // 0x0000000BL
#define SS_LEFTNOWORDWRAP 12 // 0x0000000CL
#define SS_OWNERDRAW 13 // 0x0000000DL
#define SS_BITMAP 14 // 0x0000000EL
#define SS_ENHMETAFILE 15 // 0x0000000FL
#define SS_ETCHEDHORZ 16 // 0x00000010L
#define SS_ETCHEDVERT 17 // 0x00000011L
#define SS_ETCHEDFRAME 18 // 0x00000012L
#define SS_TYPEMASK 31 // 0x0000001FL
#define SS_NOTIFY 256 // 0x00000100L
#define SS_CENTERIMAGE 512 // 0x00000200L
#define SS_RIGHTJUST 1024 // 0x00000400L
#define SS_REALSIZEIMAGE 2048 // 0x00000800L
#define SS_SUNKEN 4096 // 0x00001000L
Como alinhar numeros a direita?
Enviado: 16 Mai 2012 17:07
por Vandi
Sygecom,
Obrigado pela dica... deu ok!!! Alterei minha rotina e ficou perfeita.
Gilvandi
Como alinhar numeros a direita?
Enviado: 05 Set 2022 22:44
por Linguagemclipper
Estou precisando fazer isso em modo console. O exemplo dado foi em modo gráfico com a HWGUI.
Código: Selecionar todos
nVALOR := 0
@ 00,00 SAY "VALOR R$" GET nVALOR PICTURE "@E 999,999,999.99"
READ
No caso aí fica no padrão Britânico e Brasileiro, mas é muito chato entrar com números da esquerda para a direita.
Quando fosse número teria que começar da direita para a esquerda.
Nos exemplos de máscaras existentes que testei nenhuma deu certo. Vou ter que desenvolver um "reader" próprio?... Alguém teria isso aí pronto para eu não ter que reinventar a roda? Agradeço.
Como alinhar numeros a direita?
Enviado: 06 Set 2022 01:44
por alxsts
Olá!
Veja o tópico
Alinhar GET numérico à DIREITA. É um tópico longo e confuso mas, talvez sirva de inspiração...