Oppure

Loading
20/04/08 12:07
Kesar
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.
aaa
20/04/08 13:21
Il Totem
totem.altervista.org/guida/versione2/…
totem.altervista.org/guida/versione2/…
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.
aaa
20/04/08 13:33
Kesar
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
aaa
20/04/08 13:44
Il Totem
   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

Potrebbe non funzionare bene con i processi, per questo è sempre meglio usare la grafica per stampare.
Ultima modifica effettuata da Il Totem 20/04/08 13:51
aaa
27/04/08 11:26
K&B

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.
aaa
27/04/08 13:11
Il Totem
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:
    Public Shared Function ScreenShot() As Bitmap
        SendKeys.SendWait("^{PRTSC}")
        Dim Obj As IDataObject = Clipboard.GetDataObject
        If (Obj.GetDataPresent(DataFormats.Bitmap)) Then
            Dim Img As Bitmap = New Bitmap(CType((Obj.GetData("System.Drawing.Bitmap")), Bitmap))
            Return Img
        End If
        Return Nothing
    End Function
aaa
27/04/08 16:06
K&B
Funziona perfettamente, un po piccola l'immagine ma almeno la stampa.
Grazie.
aaa