Ayuda para imprimir un listview en vb 2005

Cerrado
Huchia Alban - 31 may 2009 a las 19:00
 omar - 28 sep 2010 a las 17:14
Hola,me pueden decir alban lo q pasa esq estoy acabando un proyecto final de programacion y estoy en la factura lo q estoy haciendo es imprimir el listview pero ala hora de imprimir si los imprime pero no m,e respeta el borde de las columnas es decir los subitems me qdan pegados sin ningun spacio ejemplo:
CABESERA: DESCRIPCION__NOM.ART.__PRECIO__CANT.__TOTAL
SUBITEMS: DISCOLIFE2002400
Cuando ma deveria qdar
CABESERA: DESCRIPCION__NOM.ART.__PRECIO__CANT.__TOTAL
SUBITEMS: DISCO LIFE 200 2 400
A ste es elcodigo : Private Sub print_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs)
Dim lineHeight As Single
Dim yPos As Single = e.MarginBounds.Top
Dim leftMargin As Single = e.MarginBounds.Left
Dim printFont As System.Drawing.Font
Dim sb As System.Text.StringBuilder
Dim lvi As ListViewItem
Dim Título As String
Dim z As System.Drawing.Size
Dim ancho As Single
'
' Asignar el tipo de letra
printFont = New System.Drawing.Font("Courier New", 11)
'printFont = prtFont
lineHeight = printFont.GetHeight(e.Graphics)
Dim fontTitulo As New Font("Arial", 20, FontStyle.Bold)
e.Graphics.DrawString("FACTURA" & Título, fontTitulo, _
Brushes.Black, leftMargin, yPos)
yPos += fontTitulo.GetHeight(e.Graphics)
' imprimir la cabecera de la página
sb = New System.Text.StringBuilder
For i As Integer = 0 To ListView1.Columns.Count - 1
sb.AppendFormat("{0} ", ListView1.Columns(i).Text)
Next
yPos += lineHeight
e.Graphics.DrawString(sb.ToString, printFont, Brushes.Black, leftMargin, yPos)
'
sb = New System.Text.StringBuilder
For i As Integer = 0 To Me.ListView1.Columns.Count - 1
sb.AppendFormat("{0} ", New String("-"c, Me.ListView1.Columns(i).Text.Length))
Next
yPos += lineHeight
e.Graphics.DrawString(sb.ToString, printFont, Brushes.Black, leftMargin, yPos)
'
' imprimir cada una de las líneas de esta página
Do
yPos += lineHeight
lvi = Me.ListView1.Items(lineaActual)
' tener en cuenta el ancho de cada columna
sb = New System.Text.StringBuilder
For i As Integer = 0 To lvi.SubItems.Count - 1
sb.AppendFormat("{0} ", lvi.SubItems(i).Text)
ancho = ListView1.Columns(i).Width
Next
e.Graphics.DrawString(sb.ToString, printFont, Brushes.Black, leftMargin, yPos)
lineaActual += 1
Loop Until yPos >= e.MarginBounds.Bottom OrElse lineaActual >= Me.ListView1.Items.Count
' e.Graphics.DrawString(TextBox1.Text, prFont, Brushes.Black, 55, 70)
If lineaActual < Me.ListView1.Items.Count Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
Dim xPos As Single = e.MarginBounds.Left
Dim prFont As New Font("Arial", 24, FontStyle.Bold)
Dim zPos As Single = prFont.GetHeight(e.Graphics)
e.Graphics.DrawString(Txt2.Text, prFont, Brushes.Black, 55, 70)
e.Graphics.DrawString(txtpro.Text, prFont, Brushes.Black, 55, 80)
e.Graphics.DrawString(ListView1.Text, prFont, Brushes.Black, 55, 90)
lineaActual += 1
e.HasMorePages = False

End Sub
porfa si algien me pude ori9entar se lo agradecere mucho gracias
Consulta también:

1 respuesta

usa & vbtab
para dejar espacios a los datos
0