none
Laço DataGridView esta com erro RRS feed

  • Pergunta

  • Por favor preciso de ajuda.

    erro dentro do laço, em printDocument1. Eu entedi que devo instanciar um objeto, não sei ao certo.Tentei instanciar a linha que tem a palavra Graphics, só que e.Graphics é quem fica com erro.

    Segue todo o cógigo, desde já agradeço. 

    Obs.: Sou Noob em programção

    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
        Private Sub txboxendereco_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txboxendereco.KeyPress
    
            'Valida campo endereço para não receber texto, tem que ativar o evento KeyPress do objeto
            If Not IsNumeric(e.KeyChar) And e.KeyChar <> "," And e.KeyChar <> vbBack Then
                e.KeyChar = Nothing
            End If
        End Sub
    
        Private Sub txboxsalario_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txboxsalario.KeyPress
    
            'Valida campo salário para não receber texto, tem que ativar o evento KeyPress do objeto
            If Not IsNumeric(e.KeyChar) And e.KeyChar <> "," And e.KeyChar <> vbBack Then
                e.KeyChar = Nothing
            End If
    
        End Sub
    
        Private Sub btnovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnovo.Click
            txboxnome.Clear()
            txboxendereco.Clear()
            txboxsalario.Clear()
            txboxnome.Focus()
        End Sub
    
        Private Sub txboxnome_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txboxnome.KeyPress
    
            'Valida campo nome para não receber número, tem que ativar o evento KeyPress do objeto
            If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Then
                e.Handled = True
                e = Nothing
            End If
        End Sub
    
        Private Sub btremover_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btremover.Click
    
            Dim indiceDaLinhaSelect As Integer
    
            If DataGridView1.RowCount = 0 Then
                MsgBox("Não existe linhas na datagridview")
            Else
                'obter o índice da linha da datagridview selecionada
                indiceDaLinhaSelect = DataGridView1.CurrentRow.Index
                MsgBox("Índice da linha selecionada: " & indiceDaLinhaSelect)
    
                'para remover uma linha da datagridview
                DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
            End If
        End Sub
    End Class
    

    domingo, 16 de junho de 2013 01:52

Respostas

  • Obrigado Ninho_Blink pela sua atenção.

    Ontem a noite um amigo me ajudando descobriu o erro.

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

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

    Obrigado a todos e até mais.

    terça-feira, 18 de junho de 2013 14:58

Todas as Respostas

  • Qual o erro que está dando ?
    E  qual a linha q esta dando erro ?
    terça-feira, 18 de junho de 2013 01:02
  • Obrigado Ninho_Blink pela sua atenção.

    Ontem a noite um amigo me ajudando descobriu o erro.

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

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

    Obrigado a todos e até mais.

    terça-feira, 18 de junho de 2013 14:58