COMO SELECIONAR IMPRESSORA

MARCIOLOPES1967 14/11/2013 10:55:03
#431129
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.
OCELOT 14/11/2013 11:07:18
#431132
Resposta escolhida
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
MARCIOLOPES1967 22/11/2013 18:06:35
#431396
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
Tópico encerrado , respostas não são mais permitidas