Newsgroup: it.comp.lang.visual-basic
Titolo: [vb.net] stampa con printdocument

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. 

 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.

"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. 

 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

 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

 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