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 - printdocument
Forum - C# / VB.NET - printdocument

Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 14:14
Domenica, 23/11/2008
Problema:Dopo aver effettuato regolarmente una stampa dalla routine Print_page,alla successiva richiesta di stampa,dopo aver modificato il documento, mi ristampa il documento precedente,senza la variazione effettuata.Ho azzerato tutte le variabili static.Controllando il codice passo passo ho notato che alla successiva richiesta,la routine _printpage non viene eseguita. Vi posto il codice che chiama l'evento _printPage dal secondo form presente nella procedura.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub frmAnteprima_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.  Dim intLivelliPdeiC As Integer
  3.  Me.PrintPreviewControl2.Zoom=1.3
  4.                  Me.PrintPreviewControl2.Document = Form1.prtPianoDeiConti
  5.  'chiama la rutine del form pricipale    
  6.  lblPaginaAttuale.Text = "1"
  7.  Me.PrintPreviewControl2.UseAntiAlias = True
  8.  
  9. End Sub


Grazie a tutti

Ultima modifica effettuata da sergio58 il 23/11/2008 alle 14:15
PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 0:19
Lunedì, 24/11/2008
ciao,probabilmente rimane in cache il file che invii allo spooler di stampa, riesci a allegare il progetto intero o un progettino funzionante che esegue la funzione di stampa che usi?
Ciao

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:27
Lunedì, 24/11/2008
Forse hai postato il codice sbagliato (non c'è riferimento al metodo Print). Comunque penso che l'errore sia in PrintPage, poiché è quella la procedura che si occupa di prelevare i dati e stampare. Secondo me, i dati non sono stati aggiornati e vengono perciò presi dalla stessa fonte.

PM Quote
Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 22:31
Lunedì, 24/11/2008
Il codice della routine print_page è un normalissimo codice, di cui ne posto l'inizio perchè molto lungo.
Ma il problema secondo me è, come ha detto Gianluca, dello scarico della cache, ma non so come fare.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub prtPianoDeiConti_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prtPianoDeiConti.PrintPage
  2.         Dim i As Integer
  3.         '  Dim y As Integer
  4.         Dim strDesMastro As String
  5.         Dim strDesConto As String
  6.         Dim intCodMastro As Integer
  7.         Dim intCodConto As Integer
  8.         Dim strCeeDare As String
  9.         Dim strCeeAvere As String
  10.         Dim strPatrimoniale_Economico As String
  11.         Dim strFunzionamento As String
  12.         Dim strCespite As String
  13.         Dim intPuntaIniMastro As Integer
  14.         Dim intPuntaFinMastro As Integer
  15.         Dim intPuntaConto As Integer
  16.         Dim strMastro As String
  17.         Dim strCancellato As String
  18.         Dim strConto As String
  19.         Dim intNumMastri As Integer
  20.         Dim strP_E As String
  21.         Dim strInserimento As String = ""
  22.  
  23.         '
  24.                '
  25.         Static Numrighe As Integer = 0
  26.         Static CicloMastro As Integer = 1
  27.         Static Pagina As Integer = 1
  28.         Dim stzDimensioneStringa As New SizeF
  29.         Dim sngFineColonna As Single
  30.         Dim strRigaStampa As String
  31.  
  32.         'definisce il font e determina l'altezza della riga
  33.         Dim TipoCarattere As New Font("Arial", 9)
  34.         Dim MastroGrasso As New Font("Arial", 9, FontStyle.Bold)
  35.         Dim Grassetto As New Font("Verdana", 12, FontStyle.Bold)
  36.         'rende la riga più grande di 2 pixel rispetto al carattere
  37.         Dim sngAltezzaRiga As Single = TipoCarattere.GetHeight + 2
  38.         Dim sngStampaX As Single
  39.         Dim sngStampaY As Single = e.MarginBounds.Top
  40.         Dim sngFinePagina As Single = 1100
  41.         Dim gr As Graphics = e.Graphics
  42.         Dim penBlack As New Pen(Color.Black, 1)
  43.  
  44.         gr.DrawRectangle(penBlack, 10, 20, 790, 80)
  45.         sngStampaY = 50
  46.         sngStampaX = 300
  47.         strRigaStampa = "PIANO  DEI   CONTI"
  48.         e.Graphics.DrawString(strRigaStampa, Grassetto, Brushes.Black, sngStampaX, sngStampaY)
  49.         sngStampaY = sngStampaY + sngAltezzaRiga
  50.         '
  51.         sngStampaY = 110
  52.         sngStampaX = 10
  53.         strRigaStampa = "Conto"
  54.         e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)
  55.         sngFineColonna = 180
  56.         strRigaStampa = "Descrizione"
  57.         stzDimensioneStringa = e.Graphics.MeasureString(strRigaStampa, TipoCarattere) 'misura la stringa in questo carattere
  58.         sngStampaX = sngFineColonna - stzDimensioneStringa.Width
  59.         e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)
  60.  
  61.         sngStampaX = 350
  62.         strRigaStampa = "Funzionamento"
  63.         e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)
  64.         '
  65.         sngStampaX = 500
  66.         strRigaStampa = "Cee Dare"
  67.         e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)
  68.  
  69.         '
  70.         sngStampaX = 700
  71.         strRigaStampa = "Cee Avere"
  72.         e.Graphics.DrawString(strRigaStampa, TipoCarattere, Brushes.Black, sngStampaX, sngStampaY)
  73.         sngStampaY = sngStampaY + sngAltezzaRiga
  74.         '
  75.         'linea orizzontale
  76.         gr.DrawLine(penBlack, 10, 130, 790, 130)
  77.         sngStampaY = 150
  78.   'azzeramenti
  79.         frmAnteprima.lblPagine.Text = Pagina
  80.         Numrighe = 0
  81.         CicloMastro = 1
  82.         Pagina = 1


PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 3:13
Martedì, 25/11/2008
Ciao, il codice che mi hai postato non mi è di aiuto non conoscendo l'applicazione... se vuoi mi trovi su msn prendi pure il contatto dal mio profilo

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:57
Martedì, 25/11/2008
Il codice stampa la stessa cosa su tutte le pagine. Io chiedevo la parte di codice in cui c'è la variazione (lettura da file/database/oggetti).

PM Quote