Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davi_Marcondes

[Resolvido] CommonDialog Control e Impressora padrão

Recommended Posts

Saudações.

 

Utilizo VB 6.0 e estou com a seguinte dúvida:

 

Eu quero duas opções de impressão: física e em pdf. Tenho uma impressora virtual que cria os arquivos em pdf para mim, perfeito. Sempre a deixo como Default. Assim, se quero imprimir como pdf, mando a impressão e pronto.

Na impressão física, eu tenho um CommonDialog que me permite escolher qual impressora quero usar. Ok, tudo bonito. Seleciono um HP daqui e beleza, a impressão sai.

 

Entretanto, e sempre tem um entretanto... ao fazer novamente uma impressão em pdf, tive a surpresa: a impressão saiu na HP. Verifiquei o que acontece, e eis o problema. Ao escolher uma impressora no CommonDialog, ela é configurada como Default (o poder subiu à cabeça, haha). E não quero nada disso, eu quero apenas imprimir nela, e não configurá-la como padrão.

 

Alguém já passou por situação semelhante? Para dúvidas, eis como eu escolho a impressora:

 

"Select Case Trim(UCase(Button.Key))

 

Case "PDF"

LL_Mensagem = MsgBox("PREPARE A IMPRESSORA!", 1, "ATENÇÃO")

If LL_Mensagem = 1 Then SU_IMPRESSÃO_EVENTOS

 

Case "IMPRIMIR"

LL_Mensagem = MsgBox("PREPARE A IMPRESSORA!", 1, "ATENÇÃO")

If LL_Mensagem = 1 Then

CommonDialog1.ShowPrinter

MsgBox Printer.DeviceName

CommonDialog1.Flags = &H200

SU_IMPRESSÃO_EVENTOS

End If"

 

A dúvida principal (ou anexada, rs) é a seguinte: como eu faço para enviar as minhas opções de escolha de um CommonDialog para a impressão?

 

Agradeço a atenção http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio, apenas para fins de esclarecimento, posso postar a solução que elaborei? Pois consegui exatamente o que eu queria, e como o tema é recorrente, achei interessante postar aqui como foi que eu consegui fazer.

 

Meu problema:

Enviar uma impressão diretamente para uma impressora específica, independete de ser ou não a Default.

 

A solução escolhida por mim:

 

Obtendo o nome da Default, guardando-o em uma variável String, eu indiquei o caminho da impressão com a impressora de pdf. Depois, retornei o caminho para a antiga impressora Default. Tudo isso sem mudá-la da posição de impressora padrão.

 

"Select Case Trim(UCase(Button.Key))

 

Case "PDF"

LL_Mensagem = MsgBox("PREPARE A IMPRESSORA!", 1, "ATENÇÃO")

If LL_Mensagem = 1 Then

'** RESERVA O NOME DA DEFAULT

LS_ImpDefault = Printer.DeviceName

'** SETA A IMPRESSORA PDF

For Each P_Imps In Printers '

If P_Imps.DeviceName = "CutePDF Writer" Then

Set Printer = P_Imps

Exit For

End If

Next

SU_IMPRESSÃO_EVENTOS

'** RETORNA À IMPRESSORA DEFAULT

For Each P_Imps In Printers

If P_Imps.DeviceName = LS_ImpDefault Then

Set Printer = P_Imps

Exit For

End If

Next

End If"

 

Apenas para esclarecer. Obrigado, Claudio http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.