Visual Basic.NET - arreglado pero.... HasMorePages??

 
Vista:

arreglado pero.... HasMorePages??

Publicado por aseluis (26 intervenciones) el 05/11/2005 20:59:23
Lo he conseguido si pongo la orientación antes del print:
PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
PrintDocument1.DefaultPageSettings.Landscape = True
PrintDocument1.Print()
Asi si da resultado.

Ahora el problema es que si pongo e.HasMorePages = True me imprime miles de folios (menos mal que tengo apagada la iompresora)
He probado muchísimas formas y nunca consigo dar un salto de página en la línea que yo quiera, ya que al establcer el valor a True crea montones de páginas y si al crear la segunda página lo establezco a False solo me crea la primera.
Estoy un poco perdio ya en el tema.
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

RE:arreglado pero.... HasMorePages??

Publicado por aseluis (26 intervenciones) el 06/11/2005 10:49:19
Ya he solventado también este problema. Por si alguien necesita saber como se soluciona. La cuestión es que si se nececitan más páginas (por ejemplo la 2), hay que indicar el e.hasmorepages=true y acto seguido nos salimos del procedimeinto con el exit sub. Al indicar que hay nuevas páginas, volverá a ejecutarse el metodo print de printdocument, por lo que si añadimos al procedimiento un contador, podemos hacer que despues de imprimir la primera parte del código, se salga y al volver a entrar el contador lo pasa a otra línea de código donde puede existir otra vez e.hasmorepages=true y exit sub, o si es la última página simplemente termina el procedimeinto y no se ejecuta más veces al no volver a indicarle e.hasmorepages=true.
Mi trabajo me ha costao pero por fin consigo hacer lo mismo que antes con el vb6 se podía hacer con el famoso printer.print "Linea de prueba".
Además, si se añade al formulario un PrintPreviewDialog1, y en su poropiedad Document le ponemos el PrintDocument1, y en un Button ponemos el siguiente código:
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintDocument1.DefaultPageSettings.Landscape = True 'apaisado
PrintPreviewDialog1.ShowDialog()
Tendremos un preview de lo que se va a imprimir.
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

cierto, con exit sub se soluciona el problema

Publicado por Angel1970Vcia (4 intervenciones) el 28/12/2008 00:32:59
Cierto, con Exit Sub se soluciona el problema del bucle de HasMorePages.

Os pego el código:

---------------------------------------------------------------------------------------------------------------

Private cntImp As Integer = -1

Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)

cntImp = cntImp + 1

Me.dibujarUnaPaginaDelDocumentoEnLaImpresora(e.Graphics, cntImp)

Select Case cntImp = pgCont
Case True
e.HasMorePages = False
Exit Sub
Case False
e.HasMorePages = True
Exit Sub 'es necesario el Exit Sub, si no cae en un bucle
End Select

End Sub

Private Sub butImprimir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butImprimir.Click

cntImp = -1

pd.Print()

If Not guardarParametros() Then MsgBox("No se han podido guardar los últimos cambios.", MsgBoxStyle.Exclamation)

Me.Dispose()

End Sub
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

cierto, con exit sub se soluciona el problema

Publicado por JESUS PINEDA (1 intervención) el 26/04/2017 16:08:30
Buenas trate esto pero solo consiguo imprimir la primera pagina.

este el codigo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
While i < nrow
 
        e.Graphics.DrawString(PRO_002.INVEN.Item(0, ce).Value.ToString, DRAWFONT1, drawBrush, 70, COLPOS)
        e.Graphics.DrawString(PRO_002.INVEN.Item(1, ce).Value.ToString, DRAWFONT1, drawBrush, 150, COLPOS)
        e.Graphics.DrawString(PRO_002.INVEN.Item(2, ce).Value.ToString, DRAWFONT1, drawBrush, 300, COLPOS)
        e.Graphics.DrawString(PRO_002.INVEN.Item(3, ce).Value.ToString, DRAWFONT1, drawBrush, 560, COLPOS)
        e.Graphics.DrawString(PRO_002.INVEN.Item(4, ce).Value.ToString, DRAWFONT1, drawBrush, 675, COLPOS)
        e.Graphics.DrawString(i, DRAWFONT1, drawBrush, 2, COLPOS)
        COLPOS = COLPOS + 20
        jp += 1
        i += 1
        ce = ce + 1
 
        If i = 38 Then
            e.HasMorePages = True
            jp = 0
            COLPOS = 101
            Exit Sub
        End If
        If i > nrow Then
            e.HasMorePages = False
        End If
 
    End While
    e.HasMorePages = False
End Sub
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