Foros del Web » Programación para mayores de 30 ;) » .NET »

referencia a objeto no establecida com instancia de un objeto,Proyecto ImprimirListVi

Estas en el tema de referencia a objeto no establecida com instancia de un objeto,Proyecto ImprimirListVi en el foro de .NET en Foros del Web. Estimados lo que sucede es que estoy tratando de imprimir un listview, aunque trato de darle varios formatos un Setup, Preview y un Print de ...
  #1 (permalink)  
Antiguo 08/02/2011, 09:26
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
referencia a objeto no establecida com instancia de un objeto,Proyecto ImprimirListVi

Estimados lo que sucede es que estoy tratando de imprimir un listview,
aunque trato de darle varios formatos un Setup, Preview y un Print de Impresión.
tengo el siguiente código en una dll creada en visual basic 2010(framework 2)
Realizo esta consulta y me arroja en tiempo de ejecucion la referencia a objeto no establecida. siendo que esta esta siendo utilizada.
Código:
Imports PrintableListView
Imports System
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
   Public Class MainForm
        Inherits Form

Dim vform2 As PrintableListView.PrintableListView
 Private Sub m_btnPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_btnPageSetup.Click
            vform2.PageSetup()
            'Me.m_list.PageSetup()
        End Sub

   End Class
End Namespace
Código:
Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Windows.Forms

Namespace PrintableListView
    Public Class PrintableListView
        Inherits ListView

        Public Sub PageSetup()
            Me.m_setupDlg.ShowDialog
        End Sub
        Private Sub PreparePrint()
            Me.m_fListWidth = 0!
            Me.m_arColsWidth = New Single(MyBase.Columns.Count  - 1) {}
            Dim g As Graphics = MyBase.CreateGraphics
            Me.m_fDpi = g.DpiX
            g.Dispose
            Dim i As Integer
            For i = 0 To MyBase.Columns.Count - 1
                Dim ch As ColumnHeader = MyBase.Columns.Item(i)
                Dim fWidth As Single = (((CSng(ch.Width) / Me.m_fDpi) * 100!) + 1!)
                Me.m_fListWidth = (Me.m_fListWidth + fWidth)
                Me.m_arColsWidth(i) = fWidth
            Next i
            Me.m_fListWidth += 1
        End Sub
        Public Sub Print()
            Me.m_printDlg.AllowSelection = (MyBase.SelectedItems.Count > 0)
            If (Me.m_printDlg.ShowDialog(Me) = DialogResult.OK) Then
                Me.m_printDoc.DocumentName = Me.m_strTitle
                Me.m_bPrintSel = (Me.m_printDlg.PrinterSettings.PrintRange = PrintRange.Selection)
                Me.m_nPageNumber = 1
                Me.m_printDoc.Print
            End If
        End Sub


 Public m_previewDlg As PrintPreviewDialog = New PrintPreviewDialog
        Public m_printDlg As PrintDialog = New PrintDialog
        Public m_printDoc As PrintDocument = New PrintDocument
        Public m_setupDlg As PageSetupDialog = New PageSetupDialog
        Public m_strTitle As String = ""
    End Class
End Namespace

Llevo como 3 días y no cacho mucho . lo que trate de hacer fue llevar un código en C# que encontré y funciona pero no me resulto al llevarlo a visual basic.
[URL="http://www.codeproject.com/KB/list/PrintableListView/PrintableListView_src.zip"]aquí les dejo el enlace[/URL]

Última edición por matarasky; 08/02/2011 a las 09:54
  #2 (permalink)  
Antiguo 08/02/2011, 09:55
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

te dice referencia a objeto no establecida porque no esta declarada como new(o no esta creada fisicamente solo esta como variable)
Código vb.net:
Ver original
  1. Dim vform2 As PrintableListView.PrintableListView
  2.  Private Sub m_btnPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_btnPageSetup.Click
  3.             vform2 = new PrintableListView.PrintableListView '<-------
  4.             vform2.PageSetup()
  5.             'Me.m_list.PageSetup()
  6.         End Sub
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 08/02/2011, 10:35
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

Excelente muchas gracias :D
Solucionado!
  #4 (permalink)  
Antiguo 08/02/2011, 11:25
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

Estimado me resulto, lo malo es que cuando trate de
hacer el preview no me salia nada creo que erre nuevamente si es que pueden verlo
para ver porque no toma el listview plz



[URL="http://www.megaupload.com/?d=FVKIXZV9"]Proyecto Imprimir[/URL]
  #5 (permalink)  
Antiguo 08/02/2011, 11:28
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Exclamación Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

no toma el listview para previzualizarlo
Código:
 Dim vform2 As PrintableListView.PrintableListView
*Private Sub m_btnPageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_btnPageSetup.Click
* * * * * * vform2 = new PrintableListView.PrintableListView 
* * * * * * vform2.PageSetup()
* * * * End Sub
Código:
 Public Class PrintableListView
        Inherits ListView
        Private Function GetItem(ByVal index As Integer) As ListViewItem
            Return If(Me.m_bPrintSel, MyBase.SelectedItems.Item(index), MyBase.Items.Item(index))
        End Function
        Private Sub OnBeginPrint(ByVal sender As Object, ByVal e As PrintEventArgs)
            Me.PreparePrint
        End Sub
        Private Sub OnPrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
            Dim nNumItems As Integer = Me.GetItemsCount
            If ((nNumItems = 0) OrElse (Me.m_nStartRow >= nNumItems)) Then
                e.HasMorePages = False
            Else
                Dim rectFull As RectangleF
                Dim ch As ColumnHeader
                Dim sf As StringFormat
                Dim rectText As RectangleF
                Dim nNextStartCol As Integer = 0
                Dim x As Single = 0!
                Dim y As Single = 0!
                Dim cx As Single = 4!
                Dim fScale As Single = 1!
                Dim fRowHeight As Single = 0!
                Dim fColWidth As Single = 0!
                Dim bUnprintable As Boolean = False
                Dim g As Graphics = e.Graphics
                If (g.VisibleClipBounds.X < 0!) Then
                    rectFull = e.MarginBounds
                    rectFull = New RectangleF(((rectFull.X / Me.m_fDpi) * 100!), ((rectFull.Y / Me.m_fDpi) * 100!), ((rectFull.Width / Me.m_fDpi) * 100!), ((rectFull.Height / Me.m_fDpi) * 100!))
                Else
                    rectFull = New RectangleF((e.MarginBounds.Left - ((e.PageBounds.Width - g.VisibleClipBounds.Width) / 2!)), (e.MarginBounds.Top - ((e.PageBounds.Height - g.VisibleClipBounds.Height) / 2!)), CSng(e.MarginBounds.Width), CSng(e.MarginBounds.Height))
                End If
                Dim rectBody As RectangleF = RectangleF.Inflate(rectFull, 0!, (-2! * Me.Font.GetHeight(g)))
                Dim sfmt As New StringFormat
                sfmt.Alignment = StringAlignment.Center
                g.DrawString(Me.m_strTitle, Me.Font, Brushes.Black, rectFull, sfmt)
                sfmt.LineAlignment = StringAlignment.Far
                g.DrawString(("Page " & Me.m_nPageNumber), Me.Font, Brushes.Black, rectFull, sfmt)
                If (((Me.m_nStartCol = 0) AndAlso Me.m_bFitToPage) AndAlso (Me.m_fListWidth > rectBody.Width)) Then
                    fScale = (rectBody.Width / Me.m_fListWidth)
                End If
                rectFull = New RectangleF((rectFull.X / fScale), (rectFull.Y / fScale), (rectFull.Width / fScale), (rectFull.Height / fScale))
                rectBody = New RectangleF((rectBody.X / fScale), (rectBody.Y / fScale), (rectBody.Width / fScale), (rectBody.Height / fScale))
                g.ScaleTransform(fScale, fScale)
                g.PageUnit = GraphicsUnit.Inch
                g.PageScale = 0.01!
                nNextStartCol = 0
                y = rectBody.Top
                Dim brushHeader As Brush = New SolidBrush(Color.LightGray)
                Dim fontHeader As New Font(Me.Font, FontStyle.Bold)
                fRowHeight = (fontHeader.GetHeight(g) * 3!)
                x = rectBody.Left
                Dim i As Integer = Me.m_nStartCol
                Do While (i < MyBase.Columns.Count)
                    ch = MyBase.Columns.Item(i)
                    fColWidth = Me.m_arColsWidth(i)
               If ((x + fColWidth) <= rectBody.Right) Then
                        g.FillRectangle(brushHeader, x, y, fColWidth, fRowHeight)
                        g.DrawRectangle(Pens.Black, x, y, fColWidth, fRowHeight)
                        sf = New StringFormat
                 If (ch.TextAlign = HorizontalAlignment.Left) Then
                            sf.Alignment = StringAlignment.Near
               ElseIf (ch.TextAlign = HorizontalAlignment.Center) Then
                            sf.Alignment = StringAlignment.Center
               Else
                            sf.Alignment = StringAlignment.Far
                End If
          sf.LineAlignment = StringAlignment.Center
        sf.FormatFlags = StringFormatFlags.NoWrap
      sf.Trimming = StringTrimming.EllipsisCharacter
    rectText = New RectangleF((x + cx), y, ((fColWidth - 1!) - (2! * cx)), fRowHeight)
                        g.DrawString(ch.Text, fontHeader, Brushes.Black, rectText, sf)
                        x = (x + fColWidth)
                    Else
                        If (i = Me.m_nStartCol) Then
                            bUnprintable = True
                        End If
                        nNextStartCol = i
                        Exit Do
                    End If
                    i += 1
                Loop
                y = (y + fRowHeight)
                Dim nRow As Integer = Me.m_nStartRow
                Dim bEndOfPage As Boolean = False
                Do While (Not bEndOfPage AndAlso (nRow < nNumItems))
                    Dim item As ListViewItem = Me.GetItem(nRow)
                    fRowHeight = (((CSng(item.Bounds.Height) / Me.m_fDpi) * 100!) + 5!)
                    If ((y + fRowHeight) > rectBody.Bottom) Then
                        bEndOfPage = True
                    Else
                        x = rectBody.Left
                        For i = Me.m_nStartCol To MyBase.Columns.Count - 1
                            ch = MyBase.Columns.Item(i)
                            fColWidth = Me.m_arColsWidth(i)
                            If ((x + fColWidth) <= rectBody.Right) Then
                                g.DrawRectangle(Pens.Black, x, y, fColWidth, fRowHeight)
                                sf = New StringFormat
                                If (ch.TextAlign = HorizontalAlignment.Left) Then
                                    sf.Alignment = StringAlignment.Near
                                ElseIf (ch.TextAlign = HorizontalAlignment.Center) Then
                                    sf.Alignment = StringAlignment.Center
                                Else
                                    sf.Alignment = StringAlignment.Far
                                End If
                                sf.LineAlignment = StringAlignment.Center
                                sf.FormatFlags = StringFormatFlags.NoWrap
                                sf.Trimming = StringTrimming.EllipsisCharacter
                                Dim strText As String = If((i = 0), item.Text, item.SubItems.Item(i).Text)
                                Dim font As Font = If((i = 0), item.Font, item.SubItems.Item(i).Font)
                                rectText = New RectangleF((x + cx), y, ((fColWidth - 1!) - (2! * cx)), fRowHeight)
                                g.DrawString(strText, font, Brushes.Black, rectText, sf)
                                x = (x + fColWidth)
                            Else
                                nNextStartCol = i
                                Exit For
                            End If
                        Next i
                        y = (y + fRowHeight)
                        nRow += 1
                    End If
                Loop
                If (nNextStartCol = 0) Then
                    Me.m_nStartRow = nRow
                End If
                Me.m_nStartCol = nNextStartCol
                Me.m_nPageNumber += 1
                e.HasMorePages = (((Not bUnprintable AndAlso (Me.m_nStartRow > 0)) AndAlso (Me.m_nStartRow < nNumItems)) OrElse (Me.m_nStartCol > 0))
                If Not e.HasMorePages Then
                    Me.m_nPageNumber = 1
                    Me.m_nStartRow = 0
                    Me.m_nStartCol = 0
                End If
                brushHeader.Dispose
            End If
        End Sub
        Private Sub PreparePrint()
            Me.m_fListWidth = 0!
            Me.m_arColsWidth = New Single(MyBase.Columns.Count  - 1) {}
            Dim g As Graphics = MyBase.CreateGraphics
            Me.m_fDpi = g.DpiX
            g.Dispose
            Dim i As Integer
            For i = 0 To MyBase.Columns.Count - 1
                Dim ch As ColumnHeader = MyBase.Columns.Item(i)
                Dim fWidth As Single = (((CSng(ch.Width) / Me.m_fDpi) * 100!) + 1!)
                Me.m_fListWidth = (Me.m_fListWidth + fWidth)
                Me.m_arColsWidth(i) = fWidth
            Next i
            Me.m_fListWidth += 1
        End Sub
        Public Sub PrintPreview()
            Me.m_printDoc.DocumentName = "Documentos Asociados al Cómite Paritario"
            Me.m_nPageNumber = 1
            Me.m_bPrintSel = False
            Me.m_previewDlg.ShowDialog(Me)
        End Sub
        ' Properties
        Public Property FitToPage As Boolean
            Get
                Return Me.m_bFitToPage
            End Get
            Set(ByVal value As Boolean)
                Me.m_bFitToPage = value
            End Set
        End Property
        Public m_bPrintSel As Boolean = False
        Public m_previewDlg As PrintPreviewDialog = New PrintPreviewDialog
        Public m_printDlg As PrintDialog = New PrintDialog
        Public m_printDoc As PrintDocument = New PrintDocument
        Public m_setupDlg As PageSetupDialog = New PageSetupDialog
        Public m_strTitle As String = ""
    End Class

Última edición por matarasky; 08/02/2011 a las 12:16
  #6 (permalink)  
Antiguo 08/02/2011, 14:22
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

Ya lo solucione y con creces
espero subir la solución si por casualidad alguno lo necesite algún día .
  #7 (permalink)  
Antiguo 08/02/2011, 14:26
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: referencia a objeto no establecida com instancia de un objeto,Proyecto Imp

perfecto! solo pon el code de la solucion, no es necesario el archivo . Saludos!
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: establecida, instancia, objeto, referencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:36.