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 - [VB.NET] Stampare i dati delle classi di una collezione
Forum - C# / VB.NET - [VB.NET] Stampare i dati delle classi di una collezione

Avatar
Dedalux (Member)
Pro


Messaggi: 103
Iscritto: 15/12/2010

Segnala al moderatore
Postato alle 19:33
Martedì, 07/06/2011
Salve a tutti,
probabilmente il titolo non è molto chiaro, e mi spiego subito.
Nella mia applicazione (che sfrutta come mio solito MVVM) ho una ListView che mi mostra una collezione di classi Fattura, ognuna chiaramente contenente i valori Importo, Iva, Fornitore, Scadenza, e tutto il resto.
Avrei bisogno di poter stampare su carta il contenuto della ListView così come si presenta.
Informandomi ho scoperto che esistono i Crystal Reports, che attraverso la definizione di templates (simili a quelli di WPF immagino) dovrebbero permettermi di presentare i dati come preferisco.
Potreste aiutarmi a capire come si utilizza questa tecnologia?
Altro non sono riuscito a scoprire...

Eventualmente ci sono altre soluzioni per fare questa stampa di dati?

Grazie mille
e buona fine dell'anno scolastico per gli studenti come me :k:

Ultima modifica effettuata da Dedalux il 07/06/2011 alle 19:40


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM
Avatar
Jacob241 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/06/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 9:43
Mercoledì, 08/06/2011
ciao compagno(sono anche io uno studente) ho una soluzione da proporti:
Potresti creare un file .txt da cui poi potresti stampare in vb.net.
Partiamo dal fatto che tu hai immesso in una variabile stringa(testo) ciò che vuoi stampare:
Codice sorgente - presumibilmente VB.NET

  1. Public Sub quello_che_vuoi(ByVal.....) ...
  2. Dim testo As string = "quello_che_vuoi"
  3. Dim file AS string = "c:\percorso_che_vuoi\file_che_vuoi.txt"
  4. IO.File.WriteAllText(file,testo) \\non preoccuparti di creare il file questa
  5.                                              \\funzione lo fa da sè
  6. Call StampaFile(file)
  7. End Sub
  8. Public Sub StampaFile(ByVal Path As String)
  9.   Dim printp As New Process
  10.  
  11.   printp.StartInfo.FileName=Path
  12.   printp.StartInfo.Verb="Print"
  13.   printp.Start()
  14. End Sub



alla fine se vuoi cancellare ogni traccia inserisci l'istruzione IO.File.Delete(Posizione_e_nome_file)

consulta la pagina :http://www.pierotofy.it/pages/guide_tutorials/Visual_Basic ...

Spero di essere stato utile!

grazie per la risposta. Però io avrei bisogno di qualcosa di piu avanzato.. Ho bisogno creare colonne, gruppi, e altre cose che non si possono fare con un semplice txt... - Dedalux - 08/06/11 15:34
per darvi un'idea dovrei fare una cosa del genere http://tallyerp9help.com/Pages/Reports/L-3/Img/18-Purchase%20Bills%20Pending%20Report%20in%20TallyERP9.jpg - Dedalux - 08/06/11 15:47


Il mondo è fatto da due fondamentali tipologie di persone :Una prima risolve i problemi ,la seconda invece ne crea.Ecco io appartengo alla terza.
PM
Avatar
Jacob241 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/06/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 15:59
Mercoledì, 08/06/2011
hai provato con Excel...

in che senso? io dovrei avere questa funzionalità nel programma, una cosa tipo "stampa fatture", mi si apre una finestra di preview e poi stampa. - Dedalux - 08/06/11 16:02


Il mondo è fatto da due fondamentali tipologie di persone :Una prima risolve i problemi ,la seconda invece ne crea.Ecco io appartengo alla terza.
PM
Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 18:29
Mercoledì, 08/06/2011
potresti seguire il consiglio di jacob, per interagire con excel avevo postato in una risposta un tutorial su youtube che spiega come si interagisce con excel tramite VB ([http://www.pierotofy.it/pages/extras/forum/16/1026819-[vbn ... questa è la domanda), poi potresti approfondire l'argomento e vedere come si fanno i bordi bordi delle celle in grassetto ecc...
forse qui c'è qualcosa di più dei tutorial su youtube, dagli un occhiata http://www.webmasterpoint.org/programmazione/asp-net/tutor ...

poi dopo aver creato il tuo foglio excel lo stampi da visual basic, tutto con unico button!

Ultima modifica effettuata da Lafa_96 il 08/06/2011 alle 18:30


Non hai bisogno di vedere l’intera scalinata. Inizia semplicemente a salire il primo gradino. (Martin Luther King)
PM
Avatar
Jacob241 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/06/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 19:47
Mercoledì, 08/06/2011
credo di essere arrivato ad una soluzione "interna" a vb.net:
Usare la system.drawing.
C'è un solo problema non riesco a convertire la graphics della picture box in immaggine stampabile.
Codice sorgente - presumibilmente VB.NET

  1. Imports System.Drawing
  2.  
  3. Public Class Form1
  4.     Dim inizio As String = "lista n°1"
  5.     Dim data(2) As String
  6.     Dim cod(2) As String
  7.     Dim img As Image = Image.FromFile("C:\Users\standard\Desktop\blank.bmp")
  8.  
  9.     Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
  10.         data(1) = "20\7\11"
  11.         data(2) = "21\7\11"
  12.         data(0) = "19\7\11"
  13.         cod(0) = "1234"
  14.         cod(1) = "2345"
  15.         cod(2) = "3456"
  16.         Dim fontobj As Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
  17.         e.Graphics.DrawString(inizio, fontobj, Brushes.Black, 5, 1)
  18.         e.Graphics.DrawLine(Pens.Black, 0, 30, 200, 30)
  19.         e.Graphics.DrawString("data", fontobj, Brushes.Black, 5, 40)
  20.         e.Graphics.DrawString("cod.", fontobj, Brushes.Black, 135, 40)
  21.         For cd = 0 To UBound(data)
  22.             e.Graphics.DrawString(data(cd), fontobj, Brushes.Black, 5, 70 + 30 * cd)
  23.         Next
  24.         For cc = 0 To UBound(cod)
  25.             e.Graphics.DrawString(cod(cc), fontobj, Brushes.Black, 135, 70 + 30 * cc)
  26.         Next
  27.     End Sub
  28. End Class



Qualcuno più ferrato di me nell'argomento potrebbe aiutarti.Comunque il programma funziona di per se infatti puoi visualizzarlo(richiede una picture box).
se trovi un'altra via o riesci a portare avanti il programma fammi un fischio!


Il mondo è fatto da due fondamentali tipologie di persone :Una prima risolve i problemi ,la seconda invece ne crea.Ecco io appartengo alla terza.
PM
Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 22:03
Mercoledì, 08/06/2011
puoi provare così, non l'ho testata e non so se funziona ma puoi provare
Codice sorgente - presumibilmente VB.NET

  1. Private Sub DrawArt(ByVal gr As Graphics)
  2.     gr.DrawLine(Pens.Black, 0, 0, 300, 300)
  3.   End Sub
  4.  
  5.   Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
  6.     DrawArt(e.Graphics)
  7.   End Sub
  8.  
  9.   Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
  10.     DrawArt(e.Graphics)
  11.   End Sub


vi ringrazio per il vostro aiuto, ma io spero di riuscire ad utilizzare i Crystal Reports, perchè la cosa in questo modo diventa parecchio complicata, e forse nemmeno fattibile per quello che ho bisogno di fare... se qualcuno ha mai avuto anche una minima esperienza coi CR mi faccia un fischio - Dedalux - 11/06/11 14:49


Non hai bisogno di vedere l’intera scalinata. Inizia semplicemente a salire il primo gradino. (Martin Luther King)
PM
Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 19:39
Sabato, 11/06/2011
http://www.google.it/url?sa=t&source=web&cd=2&ved=0CC4QFjA ... probabilmente non è quello che cerchi, ma se girovaghi un po' qui sopra secondo me trovi qualcosa


Non hai bisogno di vedere l’intera scalinata. Inizia semplicemente a salire il primo gradino. (Martin Luther King)
PM