Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Visual Studio 2019 vb.net Stampa DataGridView
lunedì 16 marzo 2020 - 11.42
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Pacifico
Profilo
| Junior Member
50
messaggi | Data Invio:
lun 16 mar 2020 - 11:42
ho una DataGridView con tre colonne di cui una con la data ridotta.
Ho inserito la funzione stampa inserendo il codice di Hidden al PrintDocument che funziona.
Gradirei sapere se è possibile avere due modifiche:
> Inserire la data ridotta possibilmente a destra;
> avere al centro del foglio il DataGridView
Reinserisco il codice di Hidden:
Try
Static RigheStampate As Integer
Static PagineStampate As Integer
Static MiePagine As Integer
Dim RigheTotali As Integer = DataGridView1.Rows.Count
Dim ControllaPagine As Boolean = True
Dim Rect As Rectangle
Dim RectQuality As Rectangle
Dim ColCorrente As Integer = 0
Dim Top As Integer = 25 ' e.MarginBounds.Top
Dim Left As Integer = 25 ' e.MarginBounds.Left
Dim Height As Integer = DataGridView1.RowTemplate.Height
Dim MaxRighe As Integer = e.MarginBounds.Height / Height
Dim MaxPagine As Integer = DataGridView1.Rows.Count / MaxRighe
Dim MPX As Integer = (DataGridView1.Rows.Count \ MaxRighe) + 1
Dim BrHeader As SolidBrush = New SolidBrush(Color.Azure)
' .Gray)
Dim Hfont As Font = DataGridView1.Font
Dim Fc As String
Dim Fr As String
For Each col As DataGridViewColumn In DataGridView1.Columns
Fc = ""
Dim ColText As String = col.HeaderText
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(ColText, Hfont)
Dim dataStampa As String, oraCorrente As String
While Sz.Width > col.Width
ColText = ColText.Remove(ColText.Length - 1, 1)
Sz = e.Graphics.MeasureString(ColText + "...", Hfont)
Fc = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
dataStampa = Date.Today.ToString
oraCorrente = FormatDateTime(Now, DateFormat.ShortTime)
e.Graphics.DrawString(ColText + Fc, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(ColText, Hfont).Height / 2))
Left += col.Width
If Left > e.PageBounds.Right - 25 Then
MsgBox("Attenzione i campi da stampare sono troppi e la stampa non sarà effettuata correttamente" + Chr(13) + Chr(13) + "Possibili Soluzioni:" + Chr(13) + " .Impostare la stampa in modo Orizzontale" + Chr(13) + " .Selezionare un foglio di dimensioni maggiori" + Chr(13) + " .Ridurre il numero di campi da stampare", MsgBoxStyle.Information)
Exit For
End If
Next
Dim BrRow As SolidBrush = New SolidBrush(Color.Transparent)
Dim PnRow As Pen = New Pen(Color.Black)
Dim RigaCorrente As Integer = 0
For RigaCorrente = RigheStampate To RigheStampate + MaxRighe
Left = 25 ' e.MarginBounds.Left
Top += Height
For Each col As DataGridViewColumn In DataGridView1.Columns
Fr = ""
Dim CelText As String = DataGridView1.Rows(RigaCorrente).Cells(col.Name).Value.ToString
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(CelText, Hfont)
While Sz.Width > col.Width
CelText = CelText.Remove(CelText.Length - 1, 1)
Sz = e.Graphics.MeasureString(CelText + "...", Hfont)
Fr = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
e.Graphics.FillRectangle(BrRow, Rect)
e.Graphics.DrawRectangle(PnRow, Rect)
e.Graphics.DrawString(CelText + Fr, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(CelText, Hfont).Height / 2))
Left += col.Width
Next
RigheStampate += 1
MiePagine = PagineStampate + 1
If RigheStampate >= DataGridView1.Rows.Count Then
ControllaPagine = False
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
Exit For
End If
Next RigaCorrente
If ControllaPagine Then
PagineStampate += 1
If PagineStampate < MaxPagine Then
e.HasMorePages = True
Else
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
End If
End If
BrHeader.Dispose()
BrRow.Dispose()
PnRow.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Anticipatamente ringrazio, saluto.
Domenico.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !