Ir para conteúdo

Arquivado

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

edjisil

Laço PrintDocument está com erro

Recommended Posts

Estou fazendo um trabalho de escola, quando aperto F5 o visual studio mostra que tem erro aqui:

 

linha = 150
        For i = 0 To DataGridView1.RowCount - 1
            importar.DrawString(DataGridView1.Item(0, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 50, linha)
            importar.DrawString(DataGridView1.Item(1, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 250, linha)
            importar.DrawString(DataGridView1.Item(2, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 450, linha)
            importar.DrawString(DataGridView1.Item(3, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 650, linha)
            linha = linha + 25
'Este é o código completo

Public Class Form1
    Dim objColuna As DataColumn
    Dim objLinha As DataRow
    Dim tabela As New DataTable
    

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txboxnome.Focus()
    End Sub
    Private Sub DataGridView_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        objColuna = New DataColumn
        With objColuna
            objColuna.DataType = System.Type.GetType("System.String")
            objColuna.ColumnName = "nomeCli"
            objColuna.ReadOnly = True
        End With

        tabela.Columns.Add(objColuna)

        objColuna = New DataColumn
        With objColuna
            objColuna.DataType = System.Type.GetType("System.DateTime")
            objColuna.ColumnName = "nascCli"
            objColuna.ReadOnly = True
        End With

        tabela.Columns.Add(objColuna)

        objColuna = New DataColumn
        With objColuna
            objColuna.DataType = System.Type.GetType("System.Int32")
            objColuna.ColumnName = "endeCli"
            objColuna.ReadOnly = True
        End With

        tabela.Columns.Add(objColuna)

        objColuna = New DataColumn
        With objColuna
            objColuna.DataType = System.Type.GetType("System.Double")
            objColuna.ColumnName = "salarioCli"
            objColuna.ReadOnly = True
        End With

        tabela.Columns.Add(objColuna)

        DataGridView1.DataSource = tabela

        'Formatação do texto do cabeçalho de uma DataGridView
        DataGridView1.Columns(0).HeaderText = "Nome"
        DataGridView1.Columns(1).HeaderText = "Data Nascimento"
        DataGridView1.Columns(2).HeaderText = "Endereço"
        DataGridView1.Columns(3).HeaderText = "Salário"

        'Formatação da largura da coluna de uma DataGridView
        DataGridView1.Columns(0).Width = 200
        DataGridView1.Columns(1).Width = 120
        DataGridView1.Columns(2).Width = 100
        DataGridView1.Columns(3).Width = 120

        'Formatação da coluna data de nascimento no formato dd/mm/yyyy
        DataGridView1.Columns.Item(1).DefaultCellStyle.Format = "dd/MM/yyyy"


    End Sub

    Private Sub btvisualimpressao_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btvisualimpressao.Click

        With PrintPreviewDialog1
            .Document = Me.PrintDocument1 'nome do objeto print documento
            .Text = "Visualizando impressão" 'título de janela
            .WindowState = FormWindowState.Maximized 'status da janela do preview
            .PrintPreviewControl.Columns = 2 'quantas páginas serão mostradas na tela
            .PrintPreviewControl.Zoom = 0.6 'zoom inicial do preview
            .ShowDialog() 'mostrar janela do preview
        End With
    End Sub

    Private Sub Cadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cadastrar.Click

        objLinha = tabela.NewRow
        objLinha("nomeCli") = txboxnome.Text
        objLinha("nascCli") = datenasc.Value.Date
        objLinha("endeCli") = txboxendereco.Text
        objLinha("salarioCli") = txboxsalario.Text
        tabela.Rows.Add(objLinha)
        DataGridView1.Columns.Item(1).DefaultCellStyle.Format = "dd/MM/yyyy"
        DataGridView1.Columns.Item(3).DefaultCellStyle.Format = "C2"
        
    End Sub


    Private Sub btimprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btimprimir.Click
        
        If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            PrintDocument1.Print()
        End If

    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim linha As Integer
        Dim pg As Integer

        Dim importar As Graphics = e.Graphics

        'cabeçalho do relatório
        importar.DrawString("Título de Relatório", New System.Drawing.Font("arial", 14, FontStyle.Bold), Brushes.Black, 50, 50)
        e.Graphics.DrawLine(New Pen(Color.DarkBlue, 2.0), 50, 75, 800, 75)

        'cabeçalho das colunas
        importar.DrawString("Nome", New System.Drawing.Font("arial", 12, FontStyle.Underline), Brushes.Blue, 50, 120)
        importar.DrawString("Nascimento", New System.Drawing.Font("arial", 12, FontStyle.Underline), Brushes.Blue, 250, 120)
        importar.DrawString("Nº casa", New System.Drawing.Font("arial", 12, FontStyle.Underline), Brushes.Blue, 450, 120)
        importar.DrawString("Salário", New System.Drawing.Font("arial", 12, FontStyle.Underline), Brushes.Blue, 650, 120)

        'exibição dos registros do relatório    
        linha = 150
        For i = 0 To DataGridView1.RowCount - 1
            importar.DrawString(DataGridView1.Item(0, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 50, linha)
            importar.DrawString(DataGridView1.Item(1, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 250, linha)
            importar.DrawString(DataGridView1.Item(2, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 450, linha)
            importar.DrawString(DataGridView1.Item(3, i).Value.ToString, New System.Drawing.Font("arial", 12, FontStyle.Regular), Brushes.Black, 650, linha)
            linha = linha + 25
        Next

        'rodapé do relatório
        e.Graphics.DrawLine(New Pen(Color.DarkBlue, 1.5), 50, 1115, 800, 1115)
        importar.DrawString("Data: " + System.DateTime.Now.ToString, New System.Drawing.Font("arial", 12, FontStyle.Underline), Brushes.Blue, 50, 1120)
        importar.DrawString("Página: " + pg.ToString, New System.Drawing.Font("arial", 12, FontStyle.Bold), Brushes.Black, 680, 1120)

    End Sub
 
End Class

 

Next

Agradeço desde já pela ajuda.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você não nos deu nada, simplesmente passou uma sequencia, o seu código completo e falou "Resolvam ai". Amigo, nós resolvemos dúvidas, mas não vamos fazer todo o trabalho para você.

 

Qual é o erro? Já procurou uma resolução? O que você está tentando fazer? Lembre-se de ler minha assinatura para postar.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe se as informações não estão claras.

 

Na linha 3 do laço, quando eu clico no visualizar impressão o visio studio mostra que é preciso: "Referência de objeto não definida para uma instância de um objeto." Já tentei instanciar o objeto Graphics com a palavra New, mos o erro muda para e.Graphics.

 

Desde já agradeço pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ontem a noite um amigo me ajudou a descobriu o erro.

ele ocorre dentro do evento printpage, dentro do laço for na 3ª linha.

Onde estava Value.ToString, foi tirado a palavra to ToString e pronto rodou perfeitamente.

Obrigado a todos e até mais.

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.