Visual Basic.NET - Impresion y listview

 
Vista:

Impresion y listview

Publicado por Jose Ivan (4 intervenciones) el 22/12/2005 21:45:36
Hola Chicos.
Estoy realiznado un sistema de facturacion y necesito que me ayudan con 2 preguntitas:

1. Tengo un listview, el problema esta en que el usuario puede redimensionar el ancho de las columnas en tiempo de ejecucion, quiero saber como se puede bloquear esa opcion.

2. El vb 6.0 para la impresion de una factura u otro documento con formato, yo solia utilizar en objeto Printer, en el le daba la sangira necesaria a cada linea de impresion. Quiero saber como puedo hacer esto en vbnet(aun estoy empezando en este inmendso mundo), la idea es que la impresion se realize sin que salga el cuadro de dialogo de imprimir y ademas se dea el formato adecuado.

De antemano les agradezco su colaboración, bye hasta otra oportunidad
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

la impresion. El listview para otro.

Publicado por erque (26 intervenciones) el 23/12/2005 20:04:11
El listview lo dejo para otro.
Lo de imprimir, que me ha costao tela porque aquí nadie respondió a mis plegarias. Vengo de VB6 y utilizaba sin temor el Print y me di de bruces con el VB.Net.
Tendrás la opción de imprimir directamente o bien ver primero el resultado y después imprimir. Yo te pongo un ejmplo que me hice para futuras aplicaciones, solo has de cambiar lo que necesites.
Tienes que añadir al formulario lo siguiente (dejale el 1 que le añade a cada control el propio sistema, por ejemplo PrintDialog1):
-PrintDialog
-PrintDocument
-PrintPreviewDialog
-Button1 con el text =imprimir
-Button2 con el text=Preview

Variable:
en el Public Class Form1
Inherits System.Windows.Forms.Form
Public valor As Single
Public otrovalor As Single
Public dato1 As String
Public x As Single
Public y As Single

en Private Sub Form1_Load
valor = 1
x = 10
y = 10

en el Private Sub Button1_Click

Dim siono As Integer
siono = PrintDialog1.ShowDialog()
If siono = 1 Then
PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
PrintDocument1.DefaultPageSettings.Landscape = True
PrintDocument1.Print()
Else
Exit Sub
End If

en el Private Sub Button2_Click

PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintDocument1.DefaultPageSettings.Landscape = True
PrintPreviewDialog1.ShowDialog()

Ahora viene la madre del cordero. Importantisimo el e.HasMorePages = False, que le indica que ya no hay más páginas, por eso utilizo el preview ya que si cometes el error de no saber indicar este argumento, seguirá imprimiendo folios hasta que se jarte. Puedes hacer un preview y cuando veas que funciona pones el botón que no se vea y listo.
Según entiendo, el PrintDocument1_PrintPage se va llamando una y otra vez como un bucle hasta que le indiques que ha llegado la última página. Por eso, cada vez que quieres una pagina nueva indicas e.HasMorePages = True.
En mi ejemplo, dale primero al preview ya que en caso contrario te imprime 3 folios en apaisado.
A veces pongo variables publicas para realizar llamadas y cambiarle los valores desde otros formularios. También puede haber alguna que utilice dentro de otro formulario y no veas que utilizo en este, es cuestion de limpiar el codigo.

en el Private Sub PrintDocument1_PrintPage:

Dim pincel As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim fuente As New System.Drawing.Font("courier new", 12)
Dim dato2 As String
Dim dato3 As String
Dim cuenta As Single
Dim i As Single
cuenta = 0
dato1 = "primera linea" + vbCrLf
dato2 = "segunda linea" + vbCrLf
dato3 = "tercera linea" + vbCrLf
If valor = 1 Then
x = 10 ' x es la horizontal
y = 10 '
For i = 1 To 10
e.Graphics.PageUnit = GraphicsUnit.Millimeter
'x = x + 5 ' x es la horizontal
y = y + 5 ' y es la vertical
e.Graphics.DrawString(dato1, fuente, pincel, x, y)
'x = x + 5
y = y + 5
e.Graphics.DrawString(dato2, fuente, pincel, x, y)
'x = x + 5
y = y + 5
e.Graphics.DrawString(dato3, fuente, pincel, x, y)
Next
e.HasMorePages = True
valor = 2
Exit Sub
ElseIf valor = 2 Then
dato1 = Space(2) & "VENDEDOR" & Space(19) & "HABITACIONES" & Replace(Space(6), " ", "-") '& String(6, "-")
x = 10
y = 30
e.Graphics.DrawString(dato1, fuente, pincel, x, y)
e.HasMorePages = True
valor = 3
Exit Sub
Else
dato1 = Space(2) & "pagina3" & Space(19) & "HABITACIONES" & Replace(Space(6), " ", "-") & "prueba esto" & New String("-", 9)
x = 10
y = 50
e.Graphics.DrawString(dato1, fuente, pincel, x, y)
e.HasMorePages = False
valor = 1
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por Jose Ivan (5 intervenciones) el 26/12/2005 01:07:22
Gracias por tu valiosa ayuda Erque, se que me servirá de mucho.. bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:la impresion. El listview para otro.

Publicado por diego (3 intervenciones) el 30/12/2005 20:18:07
hola he intentado agregar este codigo a mi programa y me da un error porque e no esta definido..me gustaria saber cual es el problema gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar