Testo non completato al salto pagina.

venerdì 16 febbraio 2018 - 17.05

Peppino Profilo | Junior Member

Chiedo scusa se non è la stanza giusta, magari mi indicate.

' Ciao a tutti.
' Uso Visual Studio Community, Sql Server 2008 R2 e per la stampa PrintDocument

' Siccome faccio l'amministratore ma solo per il mio condominio, ho pensato di farmi un piccolo
' applicativo personale. Diciamo che ci sono quasi riuscito. Dico quasi perchè mi sono infancato
' nella stampa del verbale. Siccome non voglio che l'intero verbale sia scritto in un'unica
' variabile, (che non ci sarebbero problemi) ma solo per abbellirlo un poco usando diversi tipi di font.

' Qui ci sono altri record salvati che stampa normalmente.

' Qui siamo arrivati alla stampa del primo ordine del giorno. Anche lui salvato con una variabile separata dal testo.
' Come detto prima, l'ordine del giorno viene stampato con un font diverso.
' Fino a questo diciamo che va bene.

' Il problema nasce sul record o sui record seguenti, in quanto ad ogni ordine del giorno è associato il testo.
' La variabile testo ( nel database sql è salvata come varCharMAX )
' Per la stampa dei testi di ogni orine del giorno, ho inserito il seguente codice.

' Il problema: arivato alla stampa del primo ordine del giorno, stampa il testo facendo fa anche il salto pagina se
' il testo è più lungo di una pagina. Passato al secondo cosi anche per gli altri, le cose cambiano, sono riuscito
' ad accodarlo come riga, ma arrivato a fine pagina se il testo non è finito, fa il salto pagina, ma il resto del
' testo non viene stampato perchè esce da quel record e passa a quello successivo.

' Non ho più punti della testa dove sbattere. E non vorrei rinunciarci. Quindi chiedo se quancuno gentilmente
' vorrebe dare regolata a questo codice in modo da far realizzare il mio desiderio.
' Mi scuso per il post un po lungo. Certo della vostra disponibilità come sempre, in attesa di una eventuale risposta,
' Ringrazio anticipatamente e porgo i saluti.
' Ciao a tutti. Peppino.

Do

If i < dt.Rows.Count Then

If RigheStampate < RighePerPagina Then

' Qui ci sono altri record che stampa normalmente.

If testo <> "" Then

Static intCurrentChar As Int32

' Qui ho dovuto adattare il font in questo modo perchè al salto pagina,
' ho mangia delle righe ho li ripete.
Dim font As New Font("Arial", 11.41369295125)

Dim intPrintAreaHeight, intPrintAreaWidth, marginLeft, marginTop As Int32

With PrintDocument1.DefaultPageSettings
intPrintAreaHeight = .PaperSize.Height - .Margins.Top - .Margins.Bottom
intPrintAreaWidth = .PaperSize.Width - .Margins.Left - .Margins.Right
marginLeft = X + 10
marginTop = Y
End With

If PrintDocument1.DefaultPageSettings.Landscape Then
Dim intTemp As Int32
intTemp = intPrintAreaHeight
intPrintAreaHeight = intPrintAreaWidth
intPrintAreaWidth = intTemp
End If

Dim intLineCount As Int32 = CInt(intPrintAreaHeight / font.Height)
Dim rectPrintingArea As New RectangleF(marginLeft, marginTop, 725, 1078 - Y)

Dim fmt As New StringFormat(StringFormatFlags.LineLimit)
Dim intLinesFilled, intCharsFitted As Int32

e.Graphics.MeasureString(Mid(testo, intCurrentChar + 1), font,
New SizeF(intPrintAreaWidth, intPrintAreaHeight), fmt, intCharsFitted, intLinesFilled)

e.Graphics.DrawString(Mid(testo, intCurrentChar + 1), Font5, Brushes.Black, rectPrintingArea, fmt)

intCurrentChar += intCharsFitted

If intCurrentChar < testo.Length Then
e.HasMorePages = True
righeStampate = 0

' i è l'avanzamento dei record
i = i
Exit Do
Else
intCurrentChar = 0

Y += CInt((intLinesFilled * 0.5) * AltezzaRiga)
righeStampate = CInt(Y / AltezzaRiga)

End If

End If

' Qui ci sono altri record che non stampa normalmente. In quanto la variabile che incrementa
' la riga successiva, da un risultato sballato.

i += 1

Else
e.HasMorePages = True
righeStampate = 0
Exit Do
End If

e.HasMorePages = True
Else
e.HasMorePages = False
Exit Do
End If

Loop
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 !
Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5