Forum - C# / VB.NET
- Problemino di stampa
Thejuster (Admin )
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
salve ho un piccolo problemino alla stampa.
in pratica non sò come dire al programma di stampare su piu pagine.
al mento che imposto HasMorePage = true;
incomincia ad incrementarsi da solo fino all'infinito arrivando a 4000 pagine e piu
mostro un secondo il codice
Codice sorgente - presumibilmente C++
int righe = 0, pagina = 0 ;
for ( int i = 0 ; i < Stampa.Count ; i++ )
{
//Intestazione
if ( righe == 0) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par0) ; }
if ( righe == 1) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par1) ; }
if ( righe == 2) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par2) ; }
if ( righe == 3) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par3) ; }
if ( righe == 4) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par4) ; }
if ( righe == 5) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par5) ; }
if ( righe == 6) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par6) ; }
if ( righe == 7) { e.Graphics .DrawString ( Stampa[ i] .cli , intest, Brushes.Black , par7) ; }
//Materiale
if ( righe == 0) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat0) ; }
if ( righe == 1) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat1) ; }
if ( righe == 2) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat2) ; }
if ( righe == 3) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat3) ; }
if ( righe == 4) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat4) ; }
if ( righe == 5) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat5) ; }
if ( righe == 6) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat6) ; }
if ( righe == 7) { e.Graphics .DrawString ( Stampa[ i] .mat , mat, Brushes.Black , mat7) ; }
//Riferimento
if ( righe == 0) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs0) ; }
if ( righe == 1) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs1) ; }
if ( righe == 2) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs2) ; }
if ( righe == 3) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs3) ; }
if ( righe == 4) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs4) ; }
if ( righe == 5) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs5) ; }
if ( righe == 6) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs6) ; }
if ( righe == 7) { e.Graphics .DrawString ( Stampa[ i] .rif , mat, Brushes.Black , rifs7) ; }
//misure
if ( righe == 0 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis0) ; }
if ( righe == 1 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis1) ; }
if ( righe == 2 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis2) ; }
if ( righe == 3 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis3) ; }
if ( righe == 4 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis4) ; }
if ( righe == 5 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis5) ; }
if ( righe == 6 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis6) ; }
if ( righe == 7 ) { e.Graphics .DrawString ( Stampa[ i] .pezzi + " = " + Stampa[ i] .corta + " X " + Stampa[ i] .lunga , intest, Brushes.Black , mis7) ; }
if ( righe <= 7) { righe++ ; } else { righe = 0 ; pagina++ ; }
}
Mi servirebbe che questa porzione verrebbe alternata per il numero di pagine.
C'è una lista chiamata Stampa Basata su una struttura
la lista contiene tutti i record
quindi me ne servono 8 per pagina.
qualche aiutino?
Il Totem (Admin )
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
Chissà quante volte l'ho già detto, dovrei inserire un paragrafo nelle FAQs.
HasMorePages deve essere impostato a true SOLO SE ci sono altre pagine da stampare. Tu hai un tot di record da stampare, e ne vuoi mettere 8 per pagina, quindi attiverai quella proprietà quando hai superato un multiplo di 7 nel contatore. Tuttavia, al prossimo evento devi reiniziare il conto da dove hai terminato e non da 0!!
Ti serve una variabile locale statica... ma non so come si dichiari in C# (forse non esiste). Puoi comunque usare una variabile dichiarata fuori dalla procedura.
Codice sorgente - presumibilmente C# / VB.NET
int index;
//...
int i;
for(i = index; (i < index + 8) && (i < Stampa.Length); i++)
{
//...
}
if (i < Stampa.Length)
{
index = i;
e.HasMorePages = true;
}
P.S.: deve sicuramente esserci un modo per rimuovere tutti quegli if, ci hai pensato?
Thejuster (Admin )
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
P.S.: deve sicuramente esserci un modo per rimuovere tutti quegli if, ci hai pensato?
si
perché non è un mio progetto.
già è molto ingarbugliato e pieno di monnezza.
sto cercando di recuperare il recuperabile
ma mi serviva appunto questa funzione per togliere non sò quante righe inutili.
Chiedo scusa ma ho usato poco quanto mai il printing nelle applicazioni.
Ultima modifica effettuata da Thejuster il 16/11/2009 alle 15:02
Thejuster (Admin )
Guru^2
Messaggi: 2298
Iscritto: 04/05/2008
ho un'altro piccolo problemino,
per le pagine e tutto ok le visualizzo tutto e le mostra tutte.
tranne per un problema.
al momento della stampa
non mi stampa le pagine una ad una
ma mi và a stampare l'ultima di tutto il documento.
c'è qualcosa che sicuramente non sò.
potete aiutarmi?
Il Totem (Admin )
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
Posso indonvinare il codice con qualche giochino telepatico?
P.S.: non ho ancora capito perchè mandi sempre a capo le parole nel bel mezzo delle frasi...