Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemino di stampa
Forum - C# / VB.NET - Problemino di stampa

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1820
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:44
Lunedý, 16/11/2009
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++

  1. int righe = 0, pagina = 0;
  2.             for (int i = 0; i < Stampa.Count; i++)
  3.             {
  4.                
  5.  
  6.                 //Intestazione
  7.                 if (righe == 0) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par0); }
  8.                 if (righe == 1) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par1); }
  9.                 if (righe == 2) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par2); }
  10.                 if (righe == 3) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par3); }
  11.                 if (righe == 4) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par4); }
  12.                 if (righe == 5) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par5); }
  13.                 if (righe == 6) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par6); }
  14.                 if (righe == 7) { e.Graphics.DrawString(Stampa[i].cli, intest, Brushes.Black, par7); }
  15.                 //Materiale
  16.                 if (righe == 0) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat0); }
  17.                 if (righe == 1) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat1); }
  18.                 if (righe == 2) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat2); }
  19.                 if (righe == 3) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat3); }
  20.                 if (righe == 4) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat4); }
  21.                 if (righe == 5) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat5); }
  22.                 if (righe == 6) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat6); }
  23.                 if (righe == 7) { e.Graphics.DrawString(Stampa[i].mat, mat, Brushes.Black, mat7); }
  24.                 //Riferimento
  25.                 if (righe == 0) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs0); }
  26.                 if (righe == 1) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs1); }
  27.                 if (righe == 2) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs2); }
  28.                 if (righe == 3) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs3); }
  29.                 if (righe == 4) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs4); }
  30.                 if (righe == 5) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs5); }
  31.                 if (righe == 6) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs6); }
  32.                 if (righe == 7) { e.Graphics.DrawString(Stampa[i].rif, mat, Brushes.Black, rifs7); }
  33.                 //misure
  34.                 if (righe == 0) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis0); }
  35.                 if (righe == 1) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis1); }
  36.                 if (righe == 2) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis2); }
  37.                 if (righe == 3) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis3); }
  38.                 if (righe == 4) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis4); }
  39.                 if (righe == 5) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis5); }
  40.                 if (righe == 6) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis6); }
  41.                 if (righe == 7) { e.Graphics.DrawString(Stampa[i].pezzi + " = " + Stampa[i].corta + " X " + Stampa[i].lunga, intest, Brushes.Black, mis7); }
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.                 if (righe <= 7) { righe++; } else { righe = 0; pagina++; }
  49.                
  50.             }



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?


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:08
Lunedý, 16/11/2009
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

  1. int index;
  2.  
  3. //...
  4. int i;
  5. for(i = index; (i < index + 8) && (i < Stampa.Length); i++)
  6. {
  7.   //...
  8. }
  9.  
  10. if (i < Stampa.Length)
  11. {
  12.   index = i;
  13.   e.HasMorePages = true;
  14. }



P.S.: deve sicuramente esserci un modo per rimuovere tutti quegli if, ci hai pensato?


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupiditÓ."
(Fligende Blatter)

"Dubitare di se stessi Ŕ il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1820
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:12
Lunedý, 16/11/2009
Testo quotato


P.S.: deve sicuramente esserci un modo per rimuovere tutti quegli if, ci hai pensato?



si :rotfl: 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


PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1820
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:01
Venerdý, 04/12/2009
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?


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:07
Venerdý, 04/12/2009
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...


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupiditÓ."
(Fligende Blatter)

"Dubitare di se stessi Ŕ il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote