PDA

View Full Version : [VB2010] - Adattare stampa DataGridView a formato foglio


lucausa75
05-01-2011, 10:22
Salve ragazzi,

sono riuscito, dopo ricerche su internet e "aggiustaggi" vari, a stampare su un foglio il contenuto di una DataGridView; il mio problema, adesso, è quello di riuscire a stampare tutte le colonne adattandole alla larghezza del foglio.

Come vedete le stampe risultano contenenti solo alcune colonne in quanto la loro larghezza è superiore alla dimensione del foglio.

Chi mi aiuta a sistemare il codice?

Da questo link sarà possibile scaricare il progetto: http://musicbylucausa75.altervista.org/PrintDGV.zip

Grazie

jackk87
05-01-2011, 11:18
Salve ragazzi,

sono riuscito, dopo ricerche su internet e "aggiustaggi" vari, a stampare su un foglio il contenuto di una DataGridView; il mio problema, adesso, è quello di riuscire a stampare tutte le colonne adattandole alla larghezza del foglio.

Come vedete le stampe risultano contenenti solo alcune colonne in quanto la loro larghezza è superiore alla dimensione del foglio.

Chi mi aiuta a sistemare il codice?

Da questo link sarà possibile scaricare il progetto: http://musicbylucausa75.altervista.org/PrintDGV.zip

Grazie

Ciao non ho tempo per guardare il codice appena ho 2 minuti ci do un'occhiata quindi non so com'è strutturato e intanto voglio dirti alcune cose.
Per la larghezza delle colonne potresti impostarla tu e poi mandare il testo a capo contando i caratteri oppure ancora meglio utilizzare la funzione MeasureString del namespace graphics http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx e andare a capo quando trovi un carattere come spazio.
Oppure hai provato ad impostare il foglio in landscape cioè in orizzontale?
appena posso guardo il codice cmq se provi a fare qualcosa fammi sapere ;)

jackk87
05-01-2011, 11:30
allora ho dato uno sguardo veloce al codice e ho visto che utilizzi una classe datagridviewprinter dove o modifichi questa classe con le dritte che ti ho dato in modo che imposti una larghezza fissa della colonna e mandi il testo a capo quando supera una certa lunghezza oppure puoi farti un'idea guardando questa discussione che ho risposto http://www.hwupgrade.it/forum/showthread.php?t=2297094 c'è un link dove c'è un pò di codice per stampare una dgw.
devi lavorarci un pò però poi i risultati sono migliori se hai problemi chiedi pure :D

lucausa75
06-01-2011, 14:19
Grazie a tutti per i consigli ma non riesco a venirne fuori :D

Con le vostre dritte sono riuscito in parte ad adattare alcune colonne ad una parte del foglio ma con risultati che vi lascio immaginare.

Non è che qualcuno di voi ha un codice già pronto per la stampa di un DataGridView adattata ad un foglio?

Ve ne sarei grato...

jackk87
06-01-2011, 15:09
Grazie a tutti per i consigli ma non riesco a venirne fuori :D

Con le vostre dritte sono riuscito in parte ad adattare alcune colonne ad una parte del foglio ma con risultati che vi lascio immaginare.

Non è che qualcuno di voi ha un codice già pronto per la stampa di un DataGridView adattata ad un foglio?

Ve ne sarei grato...

ciao io del codice già pronto per il tuo tipo di utilizzo non ce l'ho e bisogna tirare un bel pò di codice giù anzi più che un bel pò di codice bisogna sviluppare un pò di logica. Ho provato ad aprire il tuo progetto ma non posso perchè ho visual studio 2008 e non il 2010 quindi non posso neanche lavorarci cmq se inizi a tirare giù un pò di codice iniziando con l'intestazione della pagina poi il corpo in un ciclo while e infine se vuoi con il piè di pagina ed il risultato è di più di quello sperato però come dicevo prima si deve tirare giù un pò di codice e se inizi man mano posti le tue problematiche qui e ti do volentieri una mano in modo da concludere la cosa nei migliori dei modi con il risultato di più del dovuto ;)

lucausa75
09-01-2011, 17:51
Salve ragazzi,
intanto un buon rientro a tutti dalle ferie natalizie e di inizio d'anno :D

Finalmente ho trovato un progetto che risolve il mio problema: http://www.vbdotnetheaven.com/uploadfile/mahesh/datagridsamp04232005050133am/datagridsamp.aspx

L'ho modificato secondo le mie necessità e adesso gli unici problemi rimanenti sono quelli evidenziati in questa immagine ed elencati a seguire:
http://img211.imageshack.us/img211/66/previewmo.th.png (http://img211.imageshack.us/i/previewmo.png/)

1) Allineare l'intestazione a sinistra
2) Indicare in grassetto solo le intestazioni di ogni colonna

Vorrei anche inserire una immagine a mo di logo accanto la scritta "Data Grid Print Test" visibile anche nel preview.

Qui a seguire è possibile scaricare il progetto da me modificato: http://[email protected]/DataGridPrinter.zip

Attendo vostre soluzioni

Grazie

jackk87
09-01-2011, 23:17
Vorrei anche inserire una immagine a mo di logo accanto la scritta "Data Grid Print Test" visibile anche nel preview.



http://msdn.microsoft.com/en-us/library/93c57cby.aspx



1) Allineare l'intestazione a sinistra
2) Indicare in grassetto solo le intestazioni di ogni colonna



Ciao per il grassetto con l'intestazione a sinistra devi creare un nuovo font http://msdn.microsoft.com/en-us/library/zet4c3fa.aspx

dove imposti il nome del font la dimensione e il grassetto ecc..
poi quanto la vai a stampare usando drawstring (per l'immagine drawimage come sopra) alla fine del drawstring puoi mettere l'allineamento (destra,sinistra,centro) http://msdn.microsoft.com/en-us/library/aa327576%28v=VS.71%29.aspx dove stringformat è l'allineamento del testo
se hai problemi scrivi pure ;)