Imprimir Caracteres graficos tipo CHR(218)

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

locio
Usuário Nível 2
Usuário Nível 2
Mensagens: 98
Registrado em: 27 Out 2006 14:21

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por locio »

Estou tentando imprimir uma linha usando caracteres graficos: chr(218) chr(196) chr(194) chr(197)
com a intenção de formatar linhas graficas.

Quando eu crio um arquivo txt e imprimo a partir do arquivo sai tudo ok, mas quando eu tento imprimir direto do programa usando o oPrinter:TextOut sai uns caracteres diferentes.

Pode me ajudar nesse caso.

Lócio
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por sygecom »

Olá Locio,
Você deve está usando WIN32PRN para imprimir, essa classe imprime não imprime esses carácter ASCII , para isso você deve usar os métodos disponível na classe, veja o exemplo do post abaixo:
viewtopic.php?f=4&t=6465&hilit=win32prn
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por Pablo César »

Procure por oPrinter:Box, nunca usei mas acho que faz isso, mas lembre tudo no modo gráfico. Pois WIN32PRN imprime no formato ANSI e não UNICODE como estávamos acostumado com o Clipper. E as medidas não são sempre iguais para todas as impressoras, pois diferem e terá que fazer sempre ajustes.

Box(nX1, nY1, nX2, nY2, nWidth, nHeight)
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por sygecom »

Pablo César escreveu:E as medidas não são sempre iguais para todas as impressoras, pois diferem e terá que fazer sempre ajustes.
Olá Pablo,
É só pensar nas impressoras como uma tela, quando você desenvolve um Aplicativo Gui ele parte para um principio de uma resolução ou você automatiza para várias resolução usando uma regra de 3, onde você vê os limites de impressão(telas) e calcula onde sairá no mesmo lugar em todas as impressoras(resoluções).
viewtopic.php?f=4&t=8247&p=46763&hilit=regra+de+3#p46763
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por Pablo César »

Claro, em outras palavras... muito complicado, fazer isso em modo gráfico. Teria que calcular a área de impressão, dependendo tamanho do papel, margens e determinar a densidade de pixel a impressora comporta ou está habilitada e ainda atribuir a toda a impressão seus valor x,y e com cada resolução. Na minha opinião, melhor fazer em modo texto ou criar em pdf...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por sygecom »

Pablo César escreveu:Claro, em outras palavras... muito complicado, fazer isso em modo gráfico. Teria que calcular a área de impressão, dependendo tamanho do papel, margens e determinar a densidade de pixel a impressora comporta ou está habilitada e ainda atribuir a toda a impressão seus valor x,y e com cada resolução. Na minha opinião, melhor fazer em modo texto ou criar em pdf...
Que nada, bobagem isso, é moleza fazer de fazer, precisa apenas usar a cabeça um pouquinho e ter logica e está aberto para evoluir.

nALT_PAG:=oPrinter:PageHeight
nLARG_PAG:=oPrinter:PageWidth

Depois que tem as coordenadas acima basta seguir o relatório baseado nessas duas resoluções.

oBMP:=W32BMP():new()
oBmp:loadFile( cArq )

PYF:=(p1*1000)/nALT_PAG
PXF:=(p2*1000)/nLARG_PAG
YF:=nALT_PAG*(PYF/100)
XF:=nLARG_PAG*(PXF/100)

PYI:=1500/nALT_PAG
PXI:=1500/nLARG_PAG

YI:=nALT_PAG*(PYI/100)
XI:=nLARG_PAG*(PXI/100)

oBmp:Draw( oPrinter, {XI ,oPrinter:POSY+YI ,IIF(XF > 2000,2000,XF),IIF(YF > 2000,2000, YF)} )


Claro que acima foi baseado nos tamanhos das minhas imagens, mas depois que criar a regra de onde começa o TOP e onde começa o LEFT e tem os seus limites de resolução nada mais é difícil, é apenas matemática.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Imprimir Caracteres graficos tipo CHR(218)

Mensagem por Pablo César »

Obrigado pelo esclarecimento, Leonardo. Claro que eu ainda não testei (deveria ainda) só para sentir na prática e matar dúvidas. Pois eu como não tenho prática quase alguma em impressão gráfica: tudo parece-me bicho de 7 cabeças... mas estou contigo também em: "basta ter logica (isso qq programador teria q ter e vontade tbm) e está aberto para evoluir" (aprender coisas novas). Vlw !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder