TAMANHO DO PAPEL NA IMPRESSAO

ADHEL 13/09/2010 10:46:03
#352845
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

ADHEL 13/09/2010 11:08:13
#352849
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.
Tópico encerrado , respostas não são mais permitidas