Usuario
no entiendo printDoc.PrintPage

Pregunta
-
Buenas, el caso es que imprimo unas 15 etiquetas para un producto y todo perfecto, luego selecciono otro producto y este tiene 9 etiquetas y me imprime 8, viene otro producto con 12 etiquetas y me imprime 10 y si sigo asi va disminuyendo.
Sera que hay un buffer, por que inicializo las variable en cero cuando le doy click para otro grupo de etiquetas, o sera que printDoc.Print() tiene alguna propiedad o metodo que hay que inicializar o limpiar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ddlprinter.SelectedItem = "" Then
MsgBox("Error Debe Seleccionar una Impresora")
Exit Sub
End If
cuantos = 0
count = 0
printFont = New Font("Arial", 12)
Dim Etiquetas As New PaperSize("etique73", 355, 100)
printDoc.DefaultPageSettings.PaperSize = Etiquetas
AddHandler printDoc.PrintPage, AddressOf print_PrintPage
cuantos = DataGrid1.Rows.Count - 1
printDoc.Print()
End Sub
Private Sub print_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs)
textnombre = DataGrid1.Rows(count).Cells("nombre").Value
textapellido = DataGrid1.Rows(count).Cells("apellido").Value
textdire = DataGrid1.Rows(count).Cells("direccion").Value
textedo = DataGrid1.Rows(count).Cells("edo").Value
textcod = DataGrid1.Rows(count).Cells("zipcod").Value
e.Graphics.DrawString(Trim(textnombre), printFont, Brushes.Black, 5, 20)
e.Graphics.DrawString(Trim(textapellido), printFont, Brushes.Black, 173, 20)
e.Graphics.DrawString(Trim(textdire), printFont, Brushes.Black, 1, 39)
e.Graphics.DrawString(Trim(textedo), printFont, Brushes.Black, 248, 39)
e.Graphics.DrawString(Trim(textcod), printFont, Brushes.Black, 275, 39)
If count < cuantos Then
e.HasMorePages = True
count += 1
Return
Else
e.HasMorePages = False
End If
End Subgracias
Todas las respuestas
-
mmmm... considerando el contador como base 0 (cero)
si el control DataGridView tiene 10 lineas, no restes al asignar a la variable "cuantos", así que cuantos sera 10
ya en el metodo de imprimir... no coloques el sumador dentro de If dejalo antes
count += 1 If count < cuantos Then e.HasMorePages = True else e.HasMorePages = False End If
así deberia de funcionar sin problema: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 al llegar a 9 dejara de imprimir.
Marvin E. Pineda
ComboBoxMultiColumns
-
mmmm... considerando el contador como base 0 (cero)
si el control DataGridView tiene 10 lineas, no restes al asignar a la variable "cuantos", así que cuantos sera 10
ya en el metodo de imprimir... no coloques el sumador dentro de If dejalo antes
count += 1 If count < cuantos Then e.HasMorePages = True else e.HasMorePages = False End If
así deberia de funcionar sin problema: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 al llegar a 9 dejara de imprimir.
Marvin E. Pineda
ComboBoxMultiColumns
-
si, es problema como menciona Luis que sea problema del donde creas el documento. intenta creando el documento en el boton que usas para imprimir.
este es un pequeño ejemplo que he creado:
Public Class Form1 Private cuantas As Integer = 0 Private impresas As Integer = 0 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Me.impresas = 0 Me.cuantas = Me.NumericUpDown1.Value Dim pd As New PrintDocument AddHandler pd.PrintPage, AddressOf pd_printPage Dim preview As New PrintPreviewDialog preview.Document = pd preview.ShowDialog() preview.Dispose() End Sub Private Sub pd_printPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) e.Graphics.DrawString(Me.impresas.ToString(), Me.Font, Brushes.Black, 10, 10) Me.impresas += 1 If Me.impresas < Me.cuantas Then e.HasMorePages = True Else e.HasMorePages = False End If End Sub End Class
como veras... he creado un formulario al cual he agredo un boton y un control NumericUpDown para indicar la cantidad de paginas a imprimir.
pruebalo para que veas como funciona... y si te funciona bien adaptalo a tu código...
en espera de tus comentarios.
Salu2,
Marvin E. Pineda
ComboBoxMultiColumns
- Propuesto como respuesta Marvin E. Pineda sábado, 24 de marzo de 2012 18:41
-