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 - vb 2005 Print
Forum - C# / VB.NET - vb 2005 Print

Avatar
Kesar (Normal User)
Newbie


Messaggi: 4
Iscritto: 20/04/2008

Segnala al moderatore
Postato alle 14:07
Domenica, 20/04/2008
Salve.
Dopo enormi sforzi per creare un applicazione con vb2005, giusto alla fine mi sono imbattuto in uno scoglio "insormontabile"...la Stampa del form.
Cerco di spiegare il problema:
Il terzo form collegato alla mia applicazione, quello tra l'altro piu semplice, contiene una tabella composta da 42 textbox su 2 colonne, l'inserimento dei valori avviene tramite combobox associati ai textbox e fin qui tutto bene.Salvataggio e aggiornamento ok, purtroppo per la stampa, passaggio fondamentale nel mio caso, ho grossi problemi.Pur leggendo la guida e un piccolo manuale, non riesco a capire la meccanica del processo legato alla stampa.Chi avesse la pazienza di rispondere sarebbe molto gentile.
P.S.Sono un principiante.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:21
Domenica, 20/04/2008
http://totem.altervista.org/guida/versione2/C11.php
http://totem.altervista.org/guida/versione2/C12.php
In pratica, stampare è come "disegnare" sulla stampante, ossia sullo stream di dati ad essa associato. Per questo motivo, è fondamentale che tu conosca la classe Graphics e la sappia usare.
A meno che, ovviamente, tu non voglia propriamente fotografare il form (tipo screenshot): allora in quel  caso basterebbe fare eseguire un processo Print sul file immagine temporaneo salvato in memoria.

PM Quote
Avatar
Kesar (Normal User)
Newbie


Messaggi: 4
Iscritto: 20/04/2008

Segnala al moderatore
Postato alle 15:33
Domenica, 20/04/2008
Se"fotografare"significa stampare tutto quello che si sta visualizzando in quel momento(tabella e stringhe),va benissimo,pero non capisco quale è la differenza...
Print su file immagine...se è breve potresti scrive il codice o un esempio?
Grazie della risposta
(oppure se non puoi darmi un esempio, potresti dirmi dove cercare...).
I link che mi hai mandato sono troppo complessi da capire per ora
:d

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:44
Domenica, 20/04/2008
Codice sorgente - presumibilmente VB.NET

  1. Private Sub TakeScreenshotAndPrint()
  2.         'Simula la pressione del pulsante
  3.         'Print Screen
  4.         SendKeys.SendWait("^{PRTSC}")
  5.  
  6.         'Preleva l'immagine dello schermo dagli appunti
  7.         Dim Img As Image
  8.         Img = Clipboard.GetImage
  9.         'Crea un nome di file temporaneo
  10.         Dim File As String = IO.Path.GetTempFileName & ".jpg"
  11.         'Salva l'immagine temporanea
  12.         Img.Save(File)
  13.  
  14.         'Inizia il processo di stampa
  15.         Dim P As New Process
  16.         P.StartInfo.FileName = File
  17.         P.StartInfo.Verb = "Print"
  18.         P.Start()
  19.     End Sub


Potrebbe non funzionare bene con i processi, per questo è sempre meglio usare la grafica per stampare.

Ultima modifica effettuata da Il Totem il 20/04/2008 alle 15:51
PM Quote
Avatar
K&B (Normal User)
Newbie


Messaggi: 2
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 13:26
Domenica, 27/04/2008

Private Sub TakeScreenshotAndPrint()
'Simula la pressione del pulsante
'Print Screen
SendKeys.SendWait("^{PRTSC}")

'Preleva l'immagine dello schermo dagli appunti
Dim Img As Image
Img = Clipboard.GetImage
'Crea un nome di file temporaneo
Dim File As String = IO.Path.GetTempFileName & ".jpg"
'Salva l'immagine temporanea
Img.Save(File)

'Inizia il processo di stampa
Dim P As New Process
P.StartInfo.FileName = File
P.StartInfo.Verb = "Print"
P.Start()
End Sub


Mi da un errore: Riferimento a un oggetto non impostato su un'istanza di oggetto(Riferito a :Img.Save(File)).
Devo inserire "new" da qualche parte?
Grazie.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:11
Domenica, 27/04/2008
Probabilmente fa così perchè l'oggetto salvato non è un'Image, ma forse un tipo base come Bitmap. Quindi ti suggerisco di usare il codice proposto da Screenshot Capture:
Codice sorgente - presumibilmente VB.NET

  1. Public Shared Function ScreenShot() As Bitmap
  2.         SendKeys.SendWait("^{PRTSC}")
  3.         Dim Obj As IDataObject = Clipboard.GetDataObject
  4.         If (Obj.GetDataPresent(DataFormats.Bitmap)) Then
  5.             Dim Img As Bitmap = New Bitmap(CType((Obj.GetData("System.Drawing.Bitmap")), Bitmap))
  6.             Return Img
  7.         End If
  8.         Return Nothing
  9.     End Function


PM Quote
Avatar
K&B (Normal User)
Newbie


Messaggi: 2
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 18:06
Domenica, 27/04/2008
Funziona perfettamente, un po piccola l'immagine ma almeno la stampa.
Grazie.

PM Quote