GDI+ e stampa su più colonne

giovedì 12 febbraio 2009 - 10.57

Teech Profilo | Expert

Vorrei fare una stampa in cui ho un elenco di dati suddiviso in colonne. Siccome, oltre che avere i dati allineati a sinistra rispetto alla colonna, in alcuni casi li vorrei allineati a destra ed in altri al centro mi chiedevo se era una operazione corretta creare dei rettangoli e scrivere all'interno di essi nel seguente modo:
Dim f As Font 'Font di stampa Dim a As RectangleF 'Area di stampa Dim sf As New StringFormat 'Formato stringa si stampa f = New Font("Vedana", 16, FontStyle.Bold) a = New RectangleF(x, y, w, f.GetHeight(e.Graphics)) sf.Alignment = StringAlignment.Center '<--- Qui cambio l'allineamento rispetto alla colonna e.Graphics.DrawString("MiaStringa", f, Brushes.Black, a, sf) y += f.GetHeight(e.Graphics) f.Dispose()
Ovviamente il tutto moltiplicato per N righe (userò un ciclo) e N colonne (parliamo di una decina di colonne).
E' un inutile spreco di risorse ed esistono modi più eleganti/leggeri per fare ciò oppure è la soluzione corretta?

Grazie del consiglio!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

freeteo Profilo | Guru

Ciao e perdona il ritardo nella risposta, probabilmente avrai già risolto cmq ti rispondo lo stesso.

Vorrei chiederti se tutta la fatica che stai facendo per farti a mano valga la pena, vista l'esistenza di tool di reportistica.
SqlReporting in particolare, a livello di deploy addirittura ti basta copiare le 4 librerie nella bin dell'applicazione e poi farti il report come vuoi tu dentro a visual studio.

Li dentro faresti tutto in maniera molto semplice (visuale con drag&drop) e poi gli passi i dati di sorgente per la visualizzazione...io non ci penserei un minuto se devi visualizzare vari dati, fai presto e puoi fare la sofisticazione che vuoi, compresi calcoli, multicolonne, stili di colore, esportazioni in pdf/excel etc...insomma tutto quello che ti può servire per gestire qualsiasi stampa

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Teech Profilo | Expert

Scusa ma avevo dimenticato una informazione fondamentale:
Nel momento in cui stampo non so nemmeno se esiste un DB e ho solo delle classi (e collection di classi) con le loro proprietà. E' per questo che ho scelto di stampare con GDI+.
Sottolineo il fatto che sono un principiante totale per ciò che riguarda le stampe e non conosco alcun tool di reportistica se non Cristal Report (che meno lo uso meglio stò). Se esistono dei tool per VS2005 e Framework 2.0 che mi permettono di utilizzare delle classi per le stampe al posto del DB sarò ben lieto di studiarli.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

freeteo Profilo | Guru

Ciao,
ti consiglio di dare un'occhiata a sql reporting, in particolare alla sezione "RDLC" ossia con i report che girano in locale come file singolo senza aver bisogno di un ReportServer, ti basta solo passargli i dati da visualizzare tu, come collection tipizzata o come DataTable. L'importante è che la struttura di quello che gli passi sia la stessa che hai usato per costruire il report stesso.

Parti da questi link per capire l'argomento:
http://msdn.microsoft.com/it-it/library/ms159106.aspx
http://msdn.microsoft.com/it-it/library/ms251671(VS.80).aspx
http://www.gotreportviewer.com/

e poi magari ci sentiamo nella stanza apposita di questo forum.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5