Stampa riga troppo lunga.

venerdì 02 settembre 2016 - 14.48
Tag Elenco Tags  VB.NET  |  SQL Server 2008 R2

Peppino Profilo | Junior Member

Ciao a tutti.
Uso Visual Basic 2010 Express e Sql Express 2008 R2

Spero che con il codice postato di seguito, aiuta a spiegarmi meglio.

Static i As Integer
Dim lunghezzadescrizione As Integer
Dim contaRighe As Integer
Dim CaratteriPerRiga As Integer = CInt(NumericUpDown7.Value)

For i = i To i + RighePerPagina

Dim PuntatoreCarattereInizioRiga As Integer = 1
If i < bds.Count Then
descrizione = CStr(dst.Tables("Descrizione").Rows(i).Item(5))
lunghezzadescrizione = Len(descrizione)
If lunghezzadescrizione <= CaratteriPerRiga Then
e.Graphics.DrawString(descrizione, Font6, Brushes.Black, x, y)
Else
e.Graphics.DrawString(Mid(descrizione, PuntatoreCarattereInizioRiga, CaratteriPerRiga), Font6, Brushes.Black, x, y)
For contaRighe = 1 To CInt(lunghezzadescrizione / CaratteriPerRiga)
y += 18
PuntatoreCarattereInizioRiga += CaratteriPerRiga
e.Graphics.DrawString(Mid(descrizione, PuntatoreCarattereInizioRiga, CaratteriPerRiga), Font6, Brushes.Black, x, y)
Next
End If

y += 18 'Incremento della variabile Y

e.HasMorePages = True
Else
e.HasMorePages = False
End If
Next

Con questo codice, se tutte le righe rientrano nell'area di stampa va bene, ma quando le righe sono più lunghe dell'area di stampa, la rimanenza
dei caratteri li porta a capo. Purtroppo, portando la rimanenza a capo come normale che sia, aumenta anche di una riga e di conseguenza esce
fuori dall'area di stampa. Secondo me dovrei trovare il modo che ogni riga che aumenta andando a capo, dovrebbe diminuire il valore di RighePerPagina.
Ho provato secondo le mie possibilità a fare questo ma senza successo. Ho cercato in rete qualcosa ma anche qui niente.
Ho provato a fare un ciclo prima per ricavarmi quante righe superano la lunghezza diminuendo cosi il valore di RighePerPagina, ma cosi facendo mi
diminuisce le righe anche alle pagine che non sono presenti righe più lunghe.
Gentilmente come lo siete sempre, potreste darmi una dritta. Chiedo scusa se il post è un po lunghetto.
Ringrazio anticipatamente per l'eventuale risposta.
Ciao. Peppino.

stefano1856 Profilo | Junior Member

Secondo me dovresti sostituire il for con un Do While e quando trovi una riga che non entra nell'area di stampa incrementi il contatore del ciclo
in pratica fai saltare un ciclo e ti stamperà un riga in meno, senza modificare il numero di righe da stampare che deve rimanere fisso.
Ciao

Peppino Profilo | Junior Member

Ciao.
Grazie per la risposta, anche se per altri impegni, non ho ancora avuto il tempo di provare con il tuo consiglio.
Eventualmente mi farò risentire. Grazie ancora.
Ciao. Peppino.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5