Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[vb.net] stampa con printdocument

867 views
Skip to first unread message

Andromeda

unread,
Nov 2, 2009, 8:42:20 AM11/2/09
to
Salve a tutti,
sto muovendo i primi passi con vb.net e ho la necessit� di fare stampe
semplicissime solamente testuali... per far cio' sto provando il
printdocument pero' abituato a vb6 mi trovo un momento in difficolt�... in
particolare, dovendo stampare il risultato di una query come faccio a
passare il risultato, o eventualmente il datareader alla sub
PrinterDocument1_PrintPage??? e inoltre, come faccio se devo stampare piu'
"moduli"? devo creare un printdocument per ogni "modulo"? In questo caso un
bel printer.print sarebbe stato comodissimo :)

grazie a tutti
A.


Andrea [Work]

unread,
Nov 2, 2009, 9:08:07 AM11/2/09
to
Il Mon, 2 Nov 2009 14:42:20 +0100, Andromeda ha scritto:

> in
> particolare, dovendo stampare il risultato di una query come faccio a
> passare il risultato, o eventualmente il datareader alla sub
> PrinterDocument1_PrintPage??? e inoltre, come faccio se devo stampare piu'
> "moduli"? devo creare un printdocument per ogni "modulo"? In questo caso un
> bel printer.print sarebbe stato comodissimo :)

L'ho usato poco il PrintDocument e solo per fare una stampa di 4 textbox,
ma l'ho trovato abbastanza scomodo.
Un software di report dovrebbe andare molto meglio. ReportMan dovrebbe
andare anche su .NET.

Andromeda

unread,
Nov 2, 2009, 10:53:09 AM11/2/09
to

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel
messaggio news:69t9xz51buwj.1q...@40tude.net...

sto facendo dei piccoli passi avanti... ora mi sono bloccato nel salto
pagina... vi posto il codice per intero sperando che qualcuno mi sappia
spiegare come fare:

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

Dim carattereStampa As New Font("Courier New", 8, FontStyle.Regular)

Dim strHeader As String

Dim strLine As String

Dim LineY As Integer

strHeader =
"--------------------------------------------------------------------------------"
& vbNewLine & _

" REPORT " & vbNewLine & _

"--------------------------------------------------------------------------------"

e.Graphics.DrawString(strHeader, carattereStampa, Brushes.Black, 0, 0)

LineY = 30

While dr.Read

If (LineY + 20 > e.MarginBounds.Bottom) Then

e.HasMorePages = True

e.Graphics.DrawString(strHeader, carattereStampa, Brushes.Black, 0, 0)

LineY = 30

End If

LineY = LineY + 10

strLine = Format(dr("BARAG0"), "{0,-30}")

e.Graphics.DrawString(strLine, carattereStampa, Brushes.Black, 0, LineY)

End While

End Sub


quello che ottengo al momento � la stampa di n pagine tutte sovrapposte in
una sola... in teoria e.HasMorePages = true dovrebbe crearmi una nuova
pagina, ed infatti riesco a stampare l'strHeader ma poi le altre righe...
niente :(

aiutoooo ci sto diventando matto!!!!

A.


Andrea [Work]

unread,
Nov 2, 2009, 11:26:24 AM11/2/09
to
Il Mon, 2 Nov 2009 16:53:09 +0100, Andromeda ha scritto:

> sto facendo dei piccoli passi avanti... ora mi sono bloccato nel salto
> pagina... vi posto il codice per intero sperando che qualcuno mi sappia
> spiegare come fare:

> quello che ottengo al momento � la stampa di n pagine tutte sovrapposte in

> una sola... in teoria e.HasMorePages = true dovrebbe crearmi una nuova
> pagina, ed infatti riesco a stampare l'strHeader ma poi le altre righe...
> niente :(
>
> aiutoooo ci sto diventando matto!!!!

Non hai studiato bene :).
AFAIK HasMorePages serve solo quando lo setti a False parte la stampa.
http://totem.altervista.org/guida/versione2/C12.php

Andrea [Work]

unread,
Nov 2, 2009, 11:28:21 AM11/2/09
to
Il Mon, 2 Nov 2009 16:53:09 +0100, Andromeda ha scritto:

> sto facendo dei piccoli passi avanti... ora mi sono bloccato nel salto
> pagina... vi posto il codice per intero sperando che qualcuno mi sappia
> spiegare come fare:

> quello che ottengo al momento � la stampa di n pagine tutte sovrapposte in

> una sola... in teoria e.HasMorePages = true dovrebbe crearmi una nuova
> pagina, ed infatti riesco a stampare l'strHeader ma poi le altre righe...
> niente :(
>
> aiutoooo ci sto diventando matto!!!!

Non hai studiato bene :).


AFAIK HasMorePages serve solo quando lo setti a False parte la stampa.
http://totem.altervista.org/guida/versione2/C12.php

http://www.dotnethell.it/forum/messages.aspx?ThreadID=1125

Alcibiade

unread,
Nov 3, 2009, 3:47:23 AM11/3/09
to

"Andromeda" <i...@qui.it> ha scritto nel messaggio
news:4aef0063$1...@news.x-privat.org...

> sto facendo dei piccoli passi avanti... ora mi sono bloccato nel salto
> pagina... vi posto il codice per intero sperando che qualcuno mi sappia
> spiegare come fare:

Public Class Form1

Dim a As Integer

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

a = 1

Me.PrintDocument1.Print()

End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e
As System.Drawing.Printing.PrintPageEventArgs) Handles
PrintDocument1.PrintPage

Select Case a

Case 1

'stampo sulla prima pagina

e.Graphics.DrawRectangle(Pens.Blue, New Rectangle(e.PageBounds.Width \ 2 -
90, 150, 180, 30))

e.HasMorePages = True 'significa che appena il programma esce da questa
subrotine, verr� nuovamente scatenato l'evento di stampa: in termini pratici
questa subroutine verr� richiamata nuovamente

a = 2

Case 2

'stampo sulla seconda pagina

e.Graphics.DrawRectangle(Pens.Blue, New Rectangle(e.MarginBounds.Width \ 2 -
90, 250, 180, 30))

e.HasMorePages = false

End Select

End Sub

End Class

0 new messages