Oppure

Loading
07/06/11 17:33
Dedalux
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 07/06/11 17:40
aaa
08/06/11 7:43
Jacob241
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:
  
Public Sub quello_che_vuoi(ByVal.....) ...
Dim testo As string = "quello_che_vuoi"
Dim file AS string = "c:\percorso_che_vuoi\file_che_vuoi.txt"
IO.File.WriteAllText(file,testo) \non preoccuparti di creare il file questa
                                             \funzione lo fa da sè 
Call StampaFile(file)
End Sub
Public Sub StampaFile(ByVal Path As String)
  Dim printp As New Process

  printp.StartInfo.FileName=Path
  printp.StartInfo.Verb="Print"
  printp.Start()
End Sub


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

consulta la pagina :pierotofy.it/pages/guide_tutorials/Visual_Basic/Stampare_dei_file/

Spero di essere stato utile!
aaa
08/06/11 13:59
Jacob241
hai provato con Excel...
aaa
08/06/11 16:29
Lafa_96
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 ([pierotofy.it/pages/extras/forum/16/1026819-[vbnet_comunicare_con_excel/ 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 webmasterpoint.org/programmazione/asp-net/tutorial-asp-net/…

poi dopo aver creato il tuo foglio excel lo stampi da visual basic, tutto con unico button!
Ultima modifica effettuata da Lafa_96 08/06/11 16:30
aaa
08/06/11 17:47
Jacob241
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.
Imports System.Drawing

Public Class Form1
    Dim inizio As String = "lista n°1"
    Dim data(2) As String
    Dim cod(2) As String
    Dim img As Image = Image.FromFile("C:\Users\standard\Desktop\blank.bmp")

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        data(1) = "20"
        data(2) = "21"
        data(0) = "19"
        cod(0) = "1234"
        cod(1) = "2345"
        cod(2) = "3456"
        Dim fontobj As Font = New System.Drawing.Font("Arial", 15, FontStyle.Bold)
        e.Graphics.DrawString(inizio, fontobj, Brushes.Black, 5, 1)
        e.Graphics.DrawLine(Pens.Black, 0, 30, 200, 30)
        e.Graphics.DrawString("data", fontobj, Brushes.Black, 5, 40)
        e.Graphics.DrawString("cod.", fontobj, Brushes.Black, 135, 40)
        For cd = 0 To UBound(data)
            e.Graphics.DrawString(data(cd), fontobj, Brushes.Black, 5, 70 + 30 * cd)
        Next
        For cc = 0 To UBound(cod)
            e.Graphics.DrawString(cod(cc), fontobj, Brushes.Black, 135, 70 + 30 * cc)
        Next
    End Sub
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!
aaa
08/06/11 20:03
Lafa_96
puoi provare così, non l'ho testata e non so se funziona ma puoi provare
Private Sub DrawArt(ByVal gr As Graphics)
    gr.DrawLine(Pens.Black, 0, 0, 300, 300)
  End Sub

  Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    DrawArt(e.Graphics)
  End Sub

  Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    DrawArt(e.Graphics)
  End Sub
aaa
11/06/11 17:39
Lafa_96
google.it/… probabilmente non è quello che cerchi, ma se girovaghi un po' qui sopra secondo me trovi qualcosa
aaa