Página 1 de 1
Como Imprimir uma Linha Horizontal com a Win_Prn()?
Enviado: 28 Out 2013 12:27
por Jairo Maia
Olá Pessoal,
Estou apanhando para imprimir uma simples linha horizontal. E apanhando mesmo, e não sei como fazer, alguém pode me dar uma dica? Se tento assim, imprime sempre na vertical:
Código: Selecionar todos
oPrinter:NewLine()
oPrinter:Line( oPrinter:PosX, oPrinter:LeftMargin, oPrinter:PosX, oPrinter:RightMargin )
Também já fiz várias inversões e tenho sempre o mesmo resultado.
Como Imprimir uma Linha Horizontal com a Win_Prn()?
Enviado: 28 Out 2013 16:29
por Toledo
Olá Jairo, veja este exemplo:
Código: Selecionar todos
#include "hbwin.ch"
PROCEDURE Main()
LOCAL nPrn := 1
LOCAL aPrn := WIN_PRINTERLIST()
CLS
IF Empty( aPrn )
Alert("Nenhuma impressora instalada")
QUIT
ENDIF
DO WHILE nPrn != 0
CLS
@ 2, 0 TO MaxRow(), MaxCol()
nPrn := AChoice( 3, 1, MaxRow() - 1, MaxCol() - 1, aPrn, .T.,, nPrn )
IF nPrn != 0
PrnTest( aPrn[ nPrn ])
ENDIF
ENDDO
RETURN
STATIC PROCEDURE PrnTest( cPrinter )
LOCAL oPrinter := Win_Prn():New( cPrinter )
oPrinter:Landscape := .F.
oPrinter:FormType := WIN_DMPAPER_A4
oPrinter:Copies := 1
IF ! oPrinter:Create()
Alert( "Nao pode criar oPrinter" )
ELSE
IF ! oPrinter:startDoc( "Imprimindo Linhas" )
Alert( "StartDoc() falhou" )
ELSE
oPrinter:SetPen( WIN_PS_SOLID, 1 ) //tipo de linha
oPrinter:LineHeight:=150 //espaço entre linhas
For i=1 to 30
oPrinter:TextOut("Linha "+alltrim(str(i)))
oPrinter:Line( oPrinter:LeftMargin, oPrinter:PosY + 5, oPrinter:RightMargin, oPrinter:PosY + 5 )
oPrinter:NewLine()
Next
oPrinter:EndDoc()
ENDIF
oPrinter:Destroy()
ENDIF
RETURN
Abraços,
Como Imprimir uma Linha Horizontal com a Win_Prn()?
Enviado: 28 Out 2013 16:34
por Eolo
Horizontal
oprinter:line(esquerda,altura,direita,altura)
Imprime os pixels sempre na mesma altura, começando em esquerda e terminando em direita.
Vertical
oprinter:line(posicao,topo,posicao,base)
Imprime os pixels sempre na mesma posicão (centro da folha ou o que for), começando em topo e indo até base.
A WinPRN imprime em pixels, então as coordenadas em pixels mudam dependendo do tamanho do papel e da resolução da impressão.
Dá uma olhada neste t'pico:
https://pctoledo.org/forum/viewto ... tas#p74185
Como Imprimir uma Linha Horizontal com a Win_Prn()?
Enviado: 30 Out 2013 08:39
por Jairo Maia
Obrigado Toledo e Obrigado Eolo,
O objetivo foi montar a impressão de um carne de parcelamento. Depois das dicas consegui entender como funciona o movimento nos eixos X e Y. Obrigado a todos.