VB - 10 dicas sobre impressão usando o objeto Printer


As dicas abaixo referem-se ao objeto Printer. Você não precisa fazer nenhuma referência para usá-lo no seu projeto.

1- Imprimir um texto em uma posição específica

Private Sub Command1_Click()
' este exemplo irá imprimir Macoratti na coordenada 100,300
    Printer.CurrentX = 100
    Printer.CurrentY = 300

    Printer.Print "Macoratti"
' O comando EndDoc envia o texto para a impressora
    Printer.EndDoc
End Sub

2- Imprimir um texto com alinhamento específico

Public Sub ImprimeTextoAlinhado(texto As String, Alignment As String)
    Select Case Alignment
    Case "Centro"
        Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(texto)) \ 2
    Case "Esquerda"
        Printer.CurrentX = 0
    Case "Direita"
        Printer.CurrentX = Printer.ScaleWidth - Printer.TextWidth(texto)
    End Select
    Printer.Print texto
    Printer.EndDoc
End Sub

Private Sub Command1_Click()
   'Para escolher o alinhamento informe ("Centro", "Esquerda" ou "Direita") 
   Call ImprimeTextoAlinhado("Macoratti", "Centro")
End Sub

3- Imprimir uma linha

Public Sub ImprimeLinha(Largura As Single)
    Printer.Line (0, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY + largura), , BF
     Printer.EndDoc
End Sub

Private Sub Command1_Click()
    
' 40 indica a largura da linha
    ImprimeLinha (40)
End Sub

4- Imprimir o texto em um controle RichTextBox (não imprime figuras)

Private Sub Command1_Click()
    Call RichTextBox1.SelPrint(Printer.hdc)
End Sub

5- Imprimir um arquivo texto

Para testar o código , no formulário inclua uma caixa de texto com a propriedade Multiline definida como True.
Neste exemplo estou imprimindo o arquivo a
utoexec.bat

Private Sub Form_Load()
   Dim file As String

    file = "c:\autoexec.bat"
    Open file For Input As #1
    Text1.Text = Input(LOF(1), #1)
    Close
    Printer.Print Text1.Text
    Printer.EndDoc

End Sub

6- Verificar se a impressora esta instalada

  Public Function ImpressoraInstalada() As Boolean
    On Error Resume Next
    
    Dim strVerifica As String
    strVerifica = Printer.DeviceName
    
    If Err.Number Then
        ImpressoraInstalada = False
    Else
        ImpressoraInstalada = True
    End If
    
End Function
Private Sub Form_Load()
    MsgBox ImpressoraInstalada()
End Sub

7- Definir a fonte da impressora

Private Sub Command1_Click()

    Printer.FontName = "Arial"
    Printer.FontUnderline = False
    Printer.FontBold = False
    Printer.FontItalic = True
    Printer.FontSize = "30"
    Printer.Print "hello"
    Printer.EndDoc

End Sub

8 - Imprimir um formulário

Private Sub Form_Load()
    Form1.PrintForm
End Sub

9 - Imprimir uma imagem

O codigo abaixo imprime a imagem em Picture1.(Voce pode usar o controle image).
Para imprimir na posição atual substitua as coordendas 0,0 por
Printer.CurrentX, Printer.CurrentY.
Para aumentar a largura e/ou o comprimento da imagem impressa altere os valores de Picture1.Width, Picture1.Height.
Ex:
Picture1.Width * 2, Picture1.Height * 2 ( imprime a imagem com o dobro do tamanho)

Private Sub Command1_Click()
'
     Printer.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height
     Printer.EndDoc
End Sub

10 - Imprimir um relatório feito no Microsoft Access

Não esqueça de fazer a referência a biblioteca - Microsoft Access X.0 Object Library - no seu projeto.
Você tem que abrir o banco de dados Access e pode escolher se deseja visualizar ou não a impressão.

Private Sub Command1_Click()

    Dim ac As Access.Application
    Set ac = New Access.Application
    ac.OpenCurrentDatabase ("c:\teste\SeuBancoAccess.mdb")
   
' Para visualizar a impressão descomente a linha abaixo
    ' ac.Visible = True
   
' e substitua o valor acViewNormal por acViewPreview na linha de código abaixo para visualizar a impressora
    ac.DoCmd.OpenReport "Catalog", acViewNormal
   
' e exclua a linha a baixo para visualizar a impressão
    ac.CloseCurrentDatabase
End Sub

E ponto final. Até mais ver ...


José Carlos Macoratti