COMO SELECIONAR IMPRESSORA
Srs.,
Tenho uma rotina em meu programa, para impressão, porem não sei como fazer para que o programa me peça para informar a impressora para onde deve seguir a impressão, como fazer para abrir a janela do windows de configuração de impressão, e redirecionar os dados que devem ser impressos para esta impressora, hoje o programa nao solicita esta informação e envia para a impressora padrão. Tem como configurar isso, se alguem souber, agradeço a ajuda.
Tenho uma rotina em meu programa, para impressão, porem não sei como fazer para que o programa me peça para informar a impressora para onde deve seguir a impressão, como fazer para abrir a janela do windows de configuração de impressão, e redirecionar os dados que devem ser impressos para esta impressora, hoje o programa nao solicita esta informação e envia para a impressora padrão. Tem como configurar isso, se alguem souber, agradeço a ajuda.
Você está usando o que para imprimir, o PrintDocument? Se sim você deve usar o objeto PrintDialog para fazer isso.
Dim pd as New PrintDialog
pd.Document = seuObjetoPrintDocument
pd.UseEXDialog = True [ô]isso faz ele usar o novo dialogo se o Windows suportar
If (pd.ShowDialog() = DialogResult.OK)
[ô]usuário clicou em Imprimir no dialogo de selecionar impressora
seuObjetoPrintDocument.Print()
Else
[ô]opcionalmente aqui você faz qualquer coisa que precise caso o usuário cancele o dialogo de selecionar impressora
End If
OCELOT, desculpe-me a demora, é que eu estava em viagem, e nao pude mais verificar o VBMANIA.
Estou vendo agora, e desculpe-me a ignorancia mas o que eu coloco em seuobjeto, estou usando o Printdocument vou colocar uma parte da rotina:
cn1.ConnectionString = [Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=c:\dados\cadastro.mdb[Ô]
cn1.Open()
[ô]define o titulo do relatorio
cabecalho = [Ô]MArcio[Ô]
RelatorioTitulo1 = [Ô]Lista de Produtos[Ô]
[ô]nome_da_empresa = [Ô]Nome do Fornecedor:[Ô]
[ô]define os objetos printdocument e os eventos associados
Dim pd As Printing.PrintDocument = New Printing.PrintDocument()
[ô]IMPORTANTE - definimos 3 eventos para tratar a impressão : PringPage, BeginPrint e EndPrint.
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)
[ô]define o objeto para visualizar a impressao
Dim objPrintPreview As New PrintPreviewDialog
Try
[ô]define o formulário como maximizado e com Zoom
With objPrintPreview
.Document = pd
.WindowState = FormWindowState.Maximized
.PrintPreviewControl.Zoom = 1
.Text = [Ô]Relacao de Clientes[Ô]
.ShowDialog()
End With
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub Begin_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)
cmd1 = New OleDbCommand([Ô]SELECT * from produtos order by ref, data_da_compra desc[Ô])
cmd1.Connection = cn1
[ô]cmd1.Parameters.Add([Ô]@fornecedor[Ô], OleDbType.VarWChar, 50).Value = fornecedor.Text
Leitor = cmd1.ExecuteReader()
paginaAtual = 1
End Sub
Private Sub pdRelatorios_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
[ô]Variaveis das linhas
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
[ô]Variaveis das margens
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom + 30
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)
Dim codigo As Integer
Dim REF, data_da_compra, fornecedor, descricao, preco_de_compra, preco_de_venda As String
[ô]Dim fornecedor1 As String = fornecedor.Text
[ô]Variaveis das fontes
Dim FonteNegrito As Font
Dim FonteTitulo As Font
Dim FonteSubTitulo As Font
Dim FonteRodape As Font
Dim FonteNormal As Font
Dim fontenormal1 As Font
[ô]define efeitos em fontes
FonteNegrito = New Font([Ô]Arial[Ô], 8, FontStyle.Bold)
FonteTitulo = New Font([Ô]Arial[Ô], 15, FontStyle.Bold)
FonteSubTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteRodape = New Font([Ô]Arial[Ô], 8)
FonteNormal = New Font([Ô]Arial[Ô], 11)
fontenormal1 = New Font([Ô]Arial[Ô], 7)
[ô]define valores para linha atual e para linha da impressao
LinhaAtual = 0
Dim L As Integer = 0
[ô]Cabecalho
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemDireita, 160)
[ô]nome da empresa
e.Graphics.DrawString(cabecalho, FonteTitulo, Brushes.Blue, MargemEsquerda + 200, 20, New StringFormat())
[ô]Imagem
e.Graphics.DrawString(RelatorioTitulo1, FonteSubTitulo, Brushes.Black, MargemEsquerda + 190, 60, New StringFormat())
e.Graphics.DrawString(nome_da_empresa, FonteNormal, Brushes.Black, MargemEsquerda + 0, 100, New StringFormat())
[ô]campos a serem impressos: Codigo e Nome
e.Graphics.DrawString([Ô]Cod.[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 0, 170, New StringFormat())
e.Graphics.DrawString([Ô]Referencia[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 40, 170, New StringFormat())
e.Graphics.DrawString([Ô]D Compra[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 120, 170, New StringFormat())
e.Graphics.DrawString([Ô]Fornecedor[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 200, 170, New StringFormat())
e.Graphics.DrawString([Ô]Descrição[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 290, 170, New StringFormat())
e.Graphics.DrawString([Ô]Pr Compra[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 500, 170, New StringFormat())
e.Graphics.DrawString([Ô]Pr Venda[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 580, 170, New StringFormat())
[ô]e.Graphics.DrawString([Ô]Cod. Emp[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 670, 170, New StringFormat())
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 190, MargemDireita, 190)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
[ô]Aqui sao lidos os dados
While (LinhaAtual < LinhasPorPagina AndAlso Leitor.Read())
[ô]obtem os valores do datareader
codigo = Leitor.GetInt32(0)
REF = Leitor.GetString(1)
data_da_compra = Leitor.GetValue(2)
fornecedor = Leitor.GetString(3)
descricao = Leitor.GetString(5)
preco_de_compra = Leitor.GetString(6)
preco_de_venda = Leitor.GetString(7)
[ô]inicia a impressao
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(codigo.ToString(), fontenormal1, Brushes.Black, MargemEsquerda + 0, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(REF.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 40, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(data_da_compra.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 120, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(fornecedor.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 200, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(descricao.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 290, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(preco_de_compra.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 510, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(preco_de_venda.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 580, PosicaoDaLinha, New StringFormat())
[ô] e.Graphics.DrawString(fornecedor1, FonteNormal, Brushes.Black, 260, 100)
LinhaAtual += 1
End While
[ô]Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString([Ô]Pagina : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
[ô]Incrementa o n£mero da pagina
paginaAtual += 1
[ô]verifica se continua imprimindo
If (LinhaAtual > LinhasPorPagina) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Private Sub End_Print(ByVal sender As Object, ByVal byvale As Printing.PrintEventArgs)
Leitor.Close()
cn1.Close()
End Sub
Estou vendo agora, e desculpe-me a ignorancia mas o que eu coloco em seuobjeto, estou usando o Printdocument vou colocar uma parte da rotina:
cn1.ConnectionString = [Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=c:\dados\cadastro.mdb[Ô]
cn1.Open()
[ô]define o titulo do relatorio
cabecalho = [Ô]MArcio[Ô]
RelatorioTitulo1 = [Ô]Lista de Produtos[Ô]
[ô]nome_da_empresa = [Ô]Nome do Fornecedor:[Ô]
[ô]define os objetos printdocument e os eventos associados
Dim pd As Printing.PrintDocument = New Printing.PrintDocument()
[ô]IMPORTANTE - definimos 3 eventos para tratar a impressão : PringPage, BeginPrint e EndPrint.
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)
[ô]define o objeto para visualizar a impressao
Dim objPrintPreview As New PrintPreviewDialog
Try
[ô]define o formulário como maximizado e com Zoom
With objPrintPreview
.Document = pd
.WindowState = FormWindowState.Maximized
.PrintPreviewControl.Zoom = 1
.Text = [Ô]Relacao de Clientes[Ô]
.ShowDialog()
End With
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub Begin_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)
cmd1 = New OleDbCommand([Ô]SELECT * from produtos order by ref, data_da_compra desc[Ô])
cmd1.Connection = cn1
[ô]cmd1.Parameters.Add([Ô]@fornecedor[Ô], OleDbType.VarWChar, 50).Value = fornecedor.Text
Leitor = cmd1.ExecuteReader()
paginaAtual = 1
End Sub
Private Sub pdRelatorios_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
[ô]Variaveis das linhas
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
[ô]Variaveis das margens
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom + 30
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)
Dim codigo As Integer
Dim REF, data_da_compra, fornecedor, descricao, preco_de_compra, preco_de_venda As String
[ô]Dim fornecedor1 As String = fornecedor.Text
[ô]Variaveis das fontes
Dim FonteNegrito As Font
Dim FonteTitulo As Font
Dim FonteSubTitulo As Font
Dim FonteRodape As Font
Dim FonteNormal As Font
Dim fontenormal1 As Font
[ô]define efeitos em fontes
FonteNegrito = New Font([Ô]Arial[Ô], 8, FontStyle.Bold)
FonteTitulo = New Font([Ô]Arial[Ô], 15, FontStyle.Bold)
FonteSubTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteRodape = New Font([Ô]Arial[Ô], 8)
FonteNormal = New Font([Ô]Arial[Ô], 11)
fontenormal1 = New Font([Ô]Arial[Ô], 7)
[ô]define valores para linha atual e para linha da impressao
LinhaAtual = 0
Dim L As Integer = 0
[ô]Cabecalho
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemDireita, 160)
[ô]nome da empresa
e.Graphics.DrawString(cabecalho, FonteTitulo, Brushes.Blue, MargemEsquerda + 200, 20, New StringFormat())
[ô]Imagem
e.Graphics.DrawString(RelatorioTitulo1, FonteSubTitulo, Brushes.Black, MargemEsquerda + 190, 60, New StringFormat())
e.Graphics.DrawString(nome_da_empresa, FonteNormal, Brushes.Black, MargemEsquerda + 0, 100, New StringFormat())
[ô]campos a serem impressos: Codigo e Nome
e.Graphics.DrawString([Ô]Cod.[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 0, 170, New StringFormat())
e.Graphics.DrawString([Ô]Referencia[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 40, 170, New StringFormat())
e.Graphics.DrawString([Ô]D Compra[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 120, 170, New StringFormat())
e.Graphics.DrawString([Ô]Fornecedor[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 200, 170, New StringFormat())
e.Graphics.DrawString([Ô]Descrição[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 290, 170, New StringFormat())
e.Graphics.DrawString([Ô]Pr Compra[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 500, 170, New StringFormat())
e.Graphics.DrawString([Ô]Pr Venda[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 580, 170, New StringFormat())
[ô]e.Graphics.DrawString([Ô]Cod. Emp[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 670, 170, New StringFormat())
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 190, MargemDireita, 190)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
[ô]Aqui sao lidos os dados
While (LinhaAtual < LinhasPorPagina AndAlso Leitor.Read())
[ô]obtem os valores do datareader
codigo = Leitor.GetInt32(0)
REF = Leitor.GetString(1)
data_da_compra = Leitor.GetValue(2)
fornecedor = Leitor.GetString(3)
descricao = Leitor.GetString(5)
preco_de_compra = Leitor.GetString(6)
preco_de_venda = Leitor.GetString(7)
[ô]inicia a impressao
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(codigo.ToString(), fontenormal1, Brushes.Black, MargemEsquerda + 0, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(REF.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 40, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(data_da_compra.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 120, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(fornecedor.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 200, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(descricao.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 290, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(preco_de_compra.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 510, PosicaoDaLinha, New StringFormat())
e.Graphics.DrawString(preco_de_venda.ToString, fontenormal1, Brushes.Black, MargemEsquerda + 580, PosicaoDaLinha, New StringFormat())
[ô] e.Graphics.DrawString(fornecedor1, FonteNormal, Brushes.Black, 260, 100)
LinhaAtual += 1
End While
[ô]Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString([Ô]Pagina : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
[ô]Incrementa o n£mero da pagina
paginaAtual += 1
[ô]verifica se continua imprimindo
If (LinhaAtual > LinhasPorPagina) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub
Private Sub End_Print(ByVal sender As Object, ByVal byvale As Printing.PrintEventArgs)
Leitor.Close()
cn1.Close()
End Sub
Tópico encerrado , respostas não são mais permitidas