WIN32PRN() c/ sobrescrito e subscrito
Moderador: Moderadores
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
Como faço?
Preciso imprimir uma numeração tipo índice de rodapé colocando uma numeração em sobrescrito.
Não tinha sobrescrito nem subscrito no meu código ainda.
Não tem no win32prn() ?
Preciso imprimir uma numeração tipo índice de rodapé colocando uma numeração em sobrescrito.
Não tinha sobrescrito nem subscrito no meu código ainda.
Não tem no win32prn() ?
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
WIN32PRN() c/ sobrescrito e subscrito
O que você chama de sobrescrito e subscrito? Pode explicar melhor?Linguagemclipper escreveu:Não tinha sobrescrito nem subscrito no meu código ainda.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
WIN32PRN() c/ sobrescrito e subscrito
Ops... Falta de atenção. Relendo sua mensagem entendi.Jairo Maia escreveu:O que você chama de sobrescrito e subscrito? Pode explicar melhor?
Nunca usei também mas com Win_Prn acho que poderia ser com :textAtFont().
Sobrescrito:
Código: Selecionar todos
oPrinter:textAtFont( Nil, oPrinter:PosY - ( oPrinter:lineHeight / 2 ), "Seu Texto", Nil, ( oPrinter:fontPointSize / 2 ) )Código: Selecionar todos
oPrinter:textAtFont( Nil, oPrinter:PosY + ( oPrinter:lineHeight / 2 ), "Seu Texto", Nil, ( oPrinter:fontPointSize / 2 ) )Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
Olá Jairo, obrigado pela luz!Jairo Maia escreveu:Ops... Falta de atenção. Relendo sua mensagem entendi.Jairo Maia escreveu:O que você chama de sobrescrito e subscrito? Pode explicar melhor?
Nunca usei também mas com Win_Prn acho que poderia ser com :textAtFont().
Sobrescrito:Subscrito:Código: Selecionar todos
oPrinter:textAtFont( Nil, oPrinter:PosY - ( oPrinter:lineHeight / 2 ), "Seu Texto", Nil, ( oPrinter:fontPointSize / 2 ) )Código: Selecionar todos
oPrinter:textAtFont( Nil, oPrinter:PosY + ( oPrinter:lineHeight / 2 ), "Seu Texto", Nil, ( oPrinter:fontPointSize / 2 ) )
Vou dar uma olhada se tenho como implementar isso aí no meu sistema de impressão.
Fiz algo provisório com em código ASCII, mas só conta até 3: ¹,²,³. Como dificilmente iria até 3 está indo...
Quando for pegar pra fazer dou um feedback.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
Testei seu exemplo, mas a letra não diminuiu...
Outra observação: ele ativa e tem que desativar depois com um comando inverso.
Fiz uns testes e ajustes e ficou melhor assim:
Outra observação: ele ativa e tem que desativar depois com um comando inverso.
Fiz uns testes e ajustes e ficou melhor assim:
Código: Selecionar todos
oPrinter:TextOut(RTRIM("H"),,, )
oPrinter:textAtFont( Nil, oPrinter:PosY + ( oPrinter:fontPointSize / 2 ), "", Nil, oPrinter:SetFont(,oPrinter:fontPointSize / 2)) // ATIVA SUBSCRITO
oPrinter:TextOut(RTRIM("2"),,, ) // esse '2' sairá subscrito
oPrinter:textAtFont( Nil, oPrinter:PosY - ( oPrinter:fontPointSize / 2 ), "", Nil, oPrinter:SetFont(,oPrinter:fontPointSize + oPrinter:fontPointSize)) // DESATIVA SUBSCRITO
oPrinter:TextOut(RTRIM("O"),,, )Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
WIN32PRN() c/ sobrescrito e subscrito
Caramba...
Na verdade sugeri os exemplos e como você pode ver sem fazer os testes. Importante que está funcional, mas se tiver um tempo, tente ver onde eu errei nos parâmetros da :textAtFont(), porque tenho certeza que em um deles ela retorna a posição original do cursor (talvez troquei o .F. por .T. ou vice-versa). É que devo ter errado em um deles (eu acho, ou mudou).
Mas que bom que pode ajudar em algo. Valeu pelo retorno.
Na verdade sugeri os exemplos e como você pode ver sem fazer os testes. Importante que está funcional, mas se tiver um tempo, tente ver onde eu errei nos parâmetros da :textAtFont(), porque tenho certeza que em um deles ela retorna a posição original do cursor (talvez troquei o .F. por .T. ou vice-versa). É que devo ter errado em um deles (eu acho, ou mudou).
Mas que bom que pode ajudar em algo. Valeu pelo retorno.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
O subscrito ficou certinho, o H2O ficou show, mas o sobrescrito não está... 
Vim testar agora a noite o sobrescrito colocando a numeração de rodapé¹
-------------------
¹Rodapé
O problema é que não teve fórmula que desse certo... até agora. Amanhã vou tentar mais, mas já saí da inércia, né?
Vim testar agora a noite o sobrescrito colocando a numeração de rodapé¹
-------------------
¹Rodapé
O problema é que não teve fórmula que desse certo... até agora. Amanhã vou tentar mais, mas já saí da inércia, né?
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
WIN32PRN() c/ sobrescrito e subscrito
É só pensar igual ao bom e velho console.Linguagemclipper escreveu:O subscrito ficou certinho, o H2O ficou show, mas o sobrescrito não está...
Vim testar agora a noite o sobrescrito colocando a numeração de rodapé¹
-------------------
¹Rodapé
O problema é que não teve fórmula que desse certo... até agora. Amanhã vou tentar mais, mas já saí da inércia, né?
Pelo que entendi da rotina ela usa metade do tamanho da letra ( fontsize / 2 )
Só precisa ajustar pra X/Y, porque se for igual PDF, a linha seguinte é tirando o valor e não somando.
Acho que pra parte de baixo talvez seja a posição normal, e só pra parte de cima precise ajustar.
Só testando.
Se a impressão considera como referência a linha de baixo: embaixo é normal, e encima tira meio fonte.
Se a impressão considera como referência a linha de cima, embaixo soma meio fonte, e encima é normal.
Considerando que o somar/tirar meio fonte pode ser sinal invertido, depende de como funciona a referência x/y de winprn.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
WIN32PRN() c/ sobrescrito e subscrito
De novo:
Pelo menos no PDF, na hora de imprimir o texto, o texto é considerado de baixo pra cima, a posição de impressão é a parte de baixo da letra.
Se for assim, o subscrito é a mesma posição, e o sobrescrito seria a posição voltando meio fonte.
E lógico... o texto vai ser no tamanho de meio fonte.
E o detalhe adicional é como calcula X/Y.
No PDF a posição ZERO é a última e não a primeira. Ao somar um número na posição está indo pra cima e não pra baixo.
Agora é testar usando essas referências, pra ver se o texto está subindo ou descendo, pra ver se vai ter que somar ou tirar.
E ver como que trata o tamanho do texto no winprn.
Pelo menos no PDF, na hora de imprimir o texto, o texto é considerado de baixo pra cima, a posição de impressão é a parte de baixo da letra.
Se for assim, o subscrito é a mesma posição, e o sobrescrito seria a posição voltando meio fonte.
E lógico... o texto vai ser no tamanho de meio fonte.
E o detalhe adicional é como calcula X/Y.
No PDF a posição ZERO é a última e não a primeira. Ao somar um número na posição está indo pra cima e não pra baixo.
Agora é testar usando essas referências, pra ver se o texto está subindo ou descendo, pra ver se vai ter que somar ou tirar.
E ver como que trata o tamanho do texto no winprn.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
Conseguí, ficou certinho dessa forma no xHarbour 1.2.1, mas no Harbour 3.2 ficou pra cima parecendo sobrescrito ao invés de subscrito.
Vou ter que jogar um #ifdef __XHARBOUR para compilar de um jeito para o xHarbour e de outro jeito para Harbour.
Desse jeito ficou certinho no xHarbour:
No Harbour tem que fazer novos testes...
Vou ter que jogar um #ifdef __XHARBOUR para compilar de um jeito para o xHarbour e de outro jeito para Harbour.
Desse jeito ficou certinho no xHarbour:
Código: Selecionar todos
oPrinter:TextOut(RTRIM("H"),,, )
oPrinter:textAtFont( Nil, oPrinter:PosY + ( oPrinter:lineHeight * 0,05 ), "", Nil, oPrinter:SetFont(,oPrinter:fontPointSize / 2)) // ATIVA SUBSCRITO
oPrinter:TextOut(RTRIM("2"),,, ) // esse '2' sairá subscrito
oPrinter:textAtFont( Nil, oPrinter:PosY - ( oPrinter:lineHeight * 0,05 ), '', Nil, oPrinter:SetFont(,oPrinter:fontPointSize + oPrinter:fontPointSize)) // DESATIVA SUBSCRITO
oPrinter:TextOut(RTRIM("O"),,, )Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
WIN32PRN() c/ sobrescrito e subscrito
Talvez dependa do texto anterior, sei lá....
Mesmo caso que já comentei: o desenho começa de cima pra baixo ou de baixo pra cima?
E o WinPrn? deveria considerar a posição escolhida, mas e se está ficando algum "lixo" do fonte anterior?
Talvez primeiro setar fonte e depois posicionar, ou posicionar e depois setar fonte....
Talvez compense uns testes básicos desse tipo.
Ou até o velho truque da matricial, vai saber.... de posicionar e mandar um espaço em branco.
De repente acaba achando algum bug em alguma das LIBs.
Não sei se dá pra usar de outra linguagem de programação pra fazer um comparativo, com outra referência.
Ou de outra LIB.
Mesmo caso que já comentei: o desenho começa de cima pra baixo ou de baixo pra cima?
E o WinPrn? deveria considerar a posição escolhida, mas e se está ficando algum "lixo" do fonte anterior?
Talvez primeiro setar fonte e depois posicionar, ou posicionar e depois setar fonte....
Talvez compense uns testes básicos desse tipo.
Ou até o velho truque da matricial, vai saber.... de posicionar e mandar um espaço em branco.
De repente acaba achando algum bug em alguma das LIBs.
Não sei se dá pra usar de outra linguagem de programação pra fazer um comparativo, com outra referência.
Ou de outra LIB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Linguagemclipper
- Usuário Nível 3

- Mensagens: 240
- Registrado em: 16 Abr 2016 17:33
- Localização: Maceió/AL
- Contato:
WIN32PRN() c/ sobrescrito e subscrito
Já resolví tudo aqui.
A questão é que oPrinter:lineHeight começa em cima no xHarbour e no Harbour começa embaixo. Só inverter os cálculos quando compilar com o outro.
A questão é que oPrinter:lineHeight começa em cima no xHarbour e no Harbour começa embaixo. Só inverter os cálculos quando compilar com o outro.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.