Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemino di stampa
Forum - C# / VB.NET - Problemino di stampa

Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
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?


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
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?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
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


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
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?


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
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...

PM Quote