Ho sviluppato una applicazione per la fatturazione delle vendite.
Per creare le fatture utilizzo il componente PrintDocument.
Ho una form contenente un PrintDocument, un PrintPreviewDialog, due Button (Anteprima / Stampa Diretta) e un datagridview contenente i dati delle vendite.
Il problema è che durante la visualizzazione dell'anteprima tutto funziona correttamente, durante la stampa no.
Codice di Anteprima:
codice:Try 'Avvia l'anteprima PrintDocument1.DefaultPageSettings.Landscape = False ' orientamento PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.Width = My.Computer.Screen.WorkingArea.Width PrintPreviewDialog1.Height = My.Computer.Screen.WorkingArea.Height PrintPreviewDialog1.ShowDialog() PrintPreviewDialog1.Top = True Catch ex As Exception 'Gestione dell'errore LocalError("Button4_Click") End Try
Codice di PrintDocument1_PrintPage
Come mai a video funziona tutto alla perfezione ma nel momento in cui lancio da stampa,codice:Try 'Caratteri disponibili 'Regular = Grassetto Dim drawFont00 As New Font("Verdana", 6, FontStyle.Regular) '6pt 'Bold = Grassetto Dim drawFont100 As New Font("Verdana", 8, FontStyle.Bold) '8pt 'Italic = Corsivo Dim drawFont200 As New Font("Verdana", 8, FontStyle.Italic) '8pt 'INTESTAZIONE DI PAGINA 'Dati aziendali: ... (Tutto funziona) 'Caratteristiche del documento: 'Disegno un rettangolo e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds.Left, 210, e.MarginBounds.Size.Width, 36) '1.Tipo documento Dim Caratteristiche As String = "TIPO DOCUMENTO" & vbCrLf & Documento e.Graphics.DrawString(Caratteristiche, drawFont100 , Brushes.Black, e.MarginBounds.Left, 213) ... (Tutto funziona) 'Intestazione di colonne: ... (Tutto funziona) (Il Corpo funziona solo a video, quando devo stamapre non stampa niente) 'Corpo del documento: '------------------------------------------------------------------------------- 'Valori di documento Dim TotValore, TotIva, TotQuantita, TotSconto1, TotSconto2, TotSconto3 As Double 'Questa variabile contiene la posizione nel dataset Static z As Integer 'In questa invece si mette la posizione di stampa della prima riga dei dati Dim Y As Integer = 330 'Inizio a ciclare le righe contenute nel datagridview (Ho semplificato per l'esempi) 'In questo punto decido quanti record inserire in ogni pagina (in questo caso 50 ognuna) For z = 0 To z + 50 If z < Dw.Count Then 'Quantità e.Graphics.DrawString(FormatNumber(Dw.Item(z).Item(19).ToString, 2), drawFont00, Brushes.Black, e.MarginBounds.Left + 256, Y) 'Prezzo e.Graphics.DrawString(FormatNumber(Dw.Item(z).Item(20).ToString, 2) , drawFont00, Brushes.Black, e.MarginBounds.Left + 310, Y) e.HasMorePages = True 'Permetto di stampare la pagina successiva Else e.HasMorePages = False End If Next z 'Fine del documento (..Tutto funziona correttamente) Catch ex As Exception 'Gestione dell'errore LocalError("PrintDocument1_PrintPage") End Try
che essa sia diretta o attraverso l'anteprima vengono stampati tutti i caratteri correttamente tranne tutti quelli contenuti nel ciclo for..next z

Rispondi quotando