TAMANHO DO PAPEL NA IMPRESSAO
Bom dia pessoal
Tenho uma rotina de impressão que peguei um pouco aqui do VBMANIA e um pouco do Macoratti.
Adaptei ela e está funcionando.
O problema é :
Quando termina a impressão o próximo formulário avança bastante,ficando no meio do formulário.E sou obrigado a voltar ao ponto desejado.
A impressora que estou usando é uma epson LX 300 e o papel é um formulário contÃnuo.Esse formulário mede 21,5 cm x 21,5 cm (sem, as bordas).
Gostaria de configurar o tamanho do formulário para ficar sempre no ponto exato
Vou postar a rotina
Obrigado a todos
Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click
Dim pd As Printing.PrintDocument = New Printing.PrintDocument()
AddHandler pd.PrintPage, New Printing.PrintPageEventHandler(AddressOf Me.pdRelatorios_PrintPage)
AddHandler pd.BeginPrint, New Printing.PrintEventHandler(AddressOf Me.Begin_Print)
AddHandler pd.EndPrint, New Printing.PrintEventHandler(AddressOf Me.End_Print)
Dim objPrintPreview As New PrintPreviewDialog
With objPrintPreview
.Document = pd
.WindowState = FormWindowState.Maximized
.PrintPreviewControl.Zoom = 1
.Text = [Ô]Vendas por Número[Ô]
.ShowDialog()
End With
End Sub
Private Sub Begin_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)
sqlSelect = ([Ô]Select Codigo,Produto,Quantidade,Valor_Unitario,Total From Vendas2 Where Num_Venda = [ô][Ô] & txtNumVenda.Text & [Ô][ô][Ô])
Comando = New MySqlCommand(sqlSelect, Conexao)
leitor = Comando.ExecuteReader
PaginaAtual = 1
End Sub
Private Sub pdRelatorios_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
Dim MargemEsquerda As Single = e.MarginBounds.Left - 60
Dim MargemSuperior As Single = e.MarginBounds.Top + 120
Dim MargemDireita As Single = e.MarginBounds.Right + 60
Dim Total As String
Dim Produto As String
Dim Quantidade As Integer
Dim ValorUnitario As String
Dim FonteNegrito As Font
Dim FonteNormal As Font
FonteNegrito = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteNormal = New Font([Ô]Verdana[Ô], 9)
LinhaAtual = 0
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
txtData.Text = Microsoft.VisualBasic.Left(txtData.Text, 10)
While (LinhaAtual < LinhasPorPagina AndAlso leitor.Read())
Codigo = leitor.GetInt32(0)
Produto = leitor.GetString(1)
Total = leitor.GetString(4)
ValorUnitario = leitor.GetString(3)
Quantidade = leitor.GetString(2)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(Codigo.ToString, FonteNormal, Brushes.Black, MargemEsquerda - 20, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Produto.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 50, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Quantidade.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 610, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(ValorUnitario.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 525, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Total.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 690, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(txtNome.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 40, New StringFormat())
e.Graphics.DrawString(txtContato.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 40, New StringFormat())
e.Graphics.DrawString(txtData.Text, FonteNormal, Brushes.Black, MargemEsquerda + 660, 20, New StringFormat())
e.Graphics.DrawString(txtEndereco.Text, FonteNormal, Brushes.Black, MargemEsquerda + 45, 70, New StringFormat())
e.Graphics.DrawString(txtTelefone.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 70, New StringFormat())
e.Graphics.DrawString(txtBairro.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 110, New StringFormat())
e.Graphics.DrawString(txtVendedor.Text, FonteNormal, Brushes.Black, MargemEsquerda + 455, 110, New StringFormat())
e.Graphics.DrawString(txtCidade.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 140, New StringFormat())
e.Graphics.DrawString(txtNumVenda.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 140, New StringFormat())
e.Graphics.DrawString(Label1.Text, FonteNegrito, Brushes.Black, MargemEsquerda + 620, 600, New StringFormat())
e.Graphics.DrawString(txtData1.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 600, New StringFormat())
e.Graphics.DrawString(txtData2.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 620, New StringFormat())
e.Graphics.DrawString(txtData3.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 640, New StringFormat())
e.Graphics.DrawString(txtParcela1.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 600, New StringFormat())
e.Graphics.DrawString(txtParcela2.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 620, New StringFormat())
e.Graphics.DrawString(txtParcela3.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 640, New StringFormat())
LinhaAtual += 1
End While
e.HasMorePages = False
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
PaginaAtual += 1
End Sub
Private Sub End_Print(ByVal sender As Object, ByVal byvale As Printing.PrintEventArgs)
leitor.Close()
Conexao.Close()
End Sub
Tenho uma rotina de impressão que peguei um pouco aqui do VBMANIA e um pouco do Macoratti.
Adaptei ela e está funcionando.
O problema é :
Quando termina a impressão o próximo formulário avança bastante,ficando no meio do formulário.E sou obrigado a voltar ao ponto desejado.
A impressora que estou usando é uma epson LX 300 e o papel é um formulário contÃnuo.Esse formulário mede 21,5 cm x 21,5 cm (sem, as bordas).
Gostaria de configurar o tamanho do formulário para ficar sempre no ponto exato
Vou postar a rotina
Obrigado a todos
Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click
Dim pd As Printing.PrintDocument = New Printing.PrintDocument()
AddHandler pd.PrintPage, New Printing.PrintPageEventHandler(AddressOf Me.pdRelatorios_PrintPage)
AddHandler pd.BeginPrint, New Printing.PrintEventHandler(AddressOf Me.Begin_Print)
AddHandler pd.EndPrint, New Printing.PrintEventHandler(AddressOf Me.End_Print)
Dim objPrintPreview As New PrintPreviewDialog
With objPrintPreview
.Document = pd
.WindowState = FormWindowState.Maximized
.PrintPreviewControl.Zoom = 1
.Text = [Ô]Vendas por Número[Ô]
.ShowDialog()
End With
End Sub
Private Sub Begin_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)
sqlSelect = ([Ô]Select Codigo,Produto,Quantidade,Valor_Unitario,Total From Vendas2 Where Num_Venda = [ô][Ô] & txtNumVenda.Text & [Ô][ô][Ô])
Comando = New MySqlCommand(sqlSelect, Conexao)
leitor = Comando.ExecuteReader
PaginaAtual = 1
End Sub
Private Sub pdRelatorios_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
Dim MargemEsquerda As Single = e.MarginBounds.Left - 60
Dim MargemSuperior As Single = e.MarginBounds.Top + 120
Dim MargemDireita As Single = e.MarginBounds.Right + 60
Dim Total As String
Dim Produto As String
Dim Quantidade As Integer
Dim ValorUnitario As String
Dim FonteNegrito As Font
Dim FonteNormal As Font
FonteNegrito = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteNormal = New Font([Ô]Verdana[Ô], 9)
LinhaAtual = 0
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
txtData.Text = Microsoft.VisualBasic.Left(txtData.Text, 10)
While (LinhaAtual < LinhasPorPagina AndAlso leitor.Read())
Codigo = leitor.GetInt32(0)
Produto = leitor.GetString(1)
Total = leitor.GetString(4)
ValorUnitario = leitor.GetString(3)
Quantidade = leitor.GetString(2)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(Codigo.ToString, FonteNormal, Brushes.Black, MargemEsquerda - 20, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Produto.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 50, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Quantidade.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 610, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(ValorUnitario.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 525, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(Total.ToString, FonteNormal, Brushes.Black, MargemEsquerda + 690, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(txtNome.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 40, New StringFormat())
e.Graphics.DrawString(txtContato.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 40, New StringFormat())
e.Graphics.DrawString(txtData.Text, FonteNormal, Brushes.Black, MargemEsquerda + 660, 20, New StringFormat())
e.Graphics.DrawString(txtEndereco.Text, FonteNormal, Brushes.Black, MargemEsquerda + 45, 70, New StringFormat())
e.Graphics.DrawString(txtTelefone.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 70, New StringFormat())
e.Graphics.DrawString(txtBairro.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 110, New StringFormat())
e.Graphics.DrawString(txtVendedor.Text, FonteNormal, Brushes.Black, MargemEsquerda + 455, 110, New StringFormat())
e.Graphics.DrawString(txtCidade.Text, FonteNormal, Brushes.Black, MargemEsquerda + 20, 140, New StringFormat())
e.Graphics.DrawString(txtNumVenda.Text, FonteNormal, Brushes.Black, MargemEsquerda + 450, 140, New StringFormat())
e.Graphics.DrawString(Label1.Text, FonteNegrito, Brushes.Black, MargemEsquerda + 620, 600, New StringFormat())
e.Graphics.DrawString(txtData1.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 600, New StringFormat())
e.Graphics.DrawString(txtData2.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 620, New StringFormat())
e.Graphics.DrawString(txtData3.Text, FonteNormal, Brushes.Black, MargemEsquerda + 30, 640, New StringFormat())
e.Graphics.DrawString(txtParcela1.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 600, New StringFormat())
e.Graphics.DrawString(txtParcela2.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 620, New StringFormat())
e.Graphics.DrawString(txtParcela3.Text, FonteNormal, Brushes.Black, MargemEsquerda + 130, 640, New StringFormat())
LinhaAtual += 1
End While
e.HasMorePages = False
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
PaginaAtual += 1
End Sub
Private Sub End_Print(ByVal sender As Object, ByVal byvale As Printing.PrintEventArgs)
leitor.Close()
Conexao.Close()
End Sub
Pessoal já consegui.
Devo isso ao Colega LLAIA.Em um tópico de vb6 ele mostrou como faz.
Eu criei um formulário com a medida desejada na opção exibir impressoras.
Depois coloquei ele como padrão,e tudo acabou maravilhosamente bem.
Devo isso ao Colega LLAIA.Em um tópico de vb6 ele mostrou como faz.
Eu criei um formulário com a medida desejada na opção exibir impressoras.
Depois coloquei ele como padrão,e tudo acabou maravilhosamente bem.
Tópico encerrado , respostas não são mais permitidas