Oppure

Loading
17/09/08 6:43
sergio58
Di nuovo ben ritrovati a tutti,
il problema che mi affligge oggi è che non riesco a far visualizzare il numero di pagine di un documento nel form anteprima di stampa.
Mi spiego meglio, ho un form MDI padre , da un form figlio chiamo l'anteprima di stampa con questo codice che si trova in un bottone(forse sbagliato):

Private Documento As Printing.PrintDocument
Private sPagina As String

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStampa.Click
      
        Documento = New Printing.PrintDocument
      
        AddHandler Documento.PrintPage, AddressOf prtAllegatiCli_PrintPage
        Dim anteprimaCli As New frmAnteprimaAllegati(Documento)
        With anteprimaCli
            .ShowDialog()
        End With
        anteprimaCli.Dispose()
End Sub

nel form anteprima c'è il codice che richiama la routine printpage:
Dim strTestoPassato As String

    Public Sub New(ByVal strPagine As String)
        InitializeComponent()
        
        strTestoPassato = strPagine
    End Sub

    Public Sub visualizza()
        lblPagine.Text = strTestoPassato
    End Sub
    Public Sub New(ByVal documento As Printing.PrintDocument)
        InitializeComponent()
        Me.PrintPreviewControl2.Document = documento
    End Sub


ed alla fine della routine di stampa ho messo:

If IndiceCiclo < 5 Then 
            Pagina = Pagina + 1
            e.HasMorePages = True
          
        Else
            e.HasMorePages = False

            sPagina = CStr(Pagina)
            Dim Anteprima As New frmAnteprimaAllegati(sPagina)
            Anteprima.visualizza()
        End If

Ho eseguito il debug il numero delle pagine viene passato nel form anteprima , ma non viene visualizzato, perchè dopo :
With anteprimaCli
            .ShowDialog()
        End With

non visualizza più niente.
Qualche consiglio ?
Sergio
Ultima modifica effettuata da Il Totem 17/09/08 13:10
aaa
17/09/08 13:14
Il Totem
Non ho capito niente. Dove sarebbero da visualizzare le pagine: sul form anteprima o sul documento?
Il form anteprima viene creato con un parametro PrintDocument, e poi con una stringa, e non capisco perchè. Inoltre la routine di stampa è parziale.
aaa
17/09/08 14:02
sergio58
Hai ragione, nella foga di scrivere ho dimenticato di dire alcune cose:
Il formAnteprima di stampa contiene il controllo
PrintPreviewControl1, sul quale verrà visualizzato il documento.Contiene anche la label lblPagine su cui io vorrei venisse visualizzato il numero delle pagine del documento elaborate nella routine prtAllegati_PrintPage, che si trova nel form figlio.
Se ti riferisci alla stringa sPagina dovrebbe contenere il numero delle pagine(avrei potuto definirlo in Integer), che è collegato alla routine:

Public Sub New(ByVal strPagine As String)
InitializeComponent()
strTestoPassato = strPagine
End Sub

Non riesco a fare questo passaggio.
Se non sono stato abbastanza chiaro, o se hai bisogno di qualche altra parte di codice sono a disposizione.
Sergio.
aaa
18/09/08 14:20
Il Totem
... Quale passaggio?
aaa
19/09/08 14:02
sergio58
Il passaggio di far visualizzare il valore del numero delle pagine nella label lblPagine che si trova nel form anteprima
aaa
20/09/08 13:23
Il Totem
Quindi la routine di stampa si trova nel form principale, e presumo che anche il With sia sempre nel form principale. Penso che il tuo unico problema non sia visualizzare il numero, ma visualizzarlo sullo stesso form aperto. Per questo ti suggerisco di dichiarare il form di anteprima come variabile globale.

P.S.: dopo visualizza() manca Show().
Ultima modifica effettuata da Il Totem 20/09/08 13:24
aaa