Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB.NET] - ReportDocument

    Con un ReportDocument stampo il contenuto di un dataset, in questo modo:

    codice:
    For count = 0 To dscontatti.Tables("contatti").Rows.Count - 1
                x = 10
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("data"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, x, y)
                x += 150
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("tipologia"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, x, y)
                x += 100
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("relazione"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, x, y)
                y = y + 50
            Next
    Il problema sorge quando il contenuto della riga che stampo, supera le dimensioni orizzontali della pagina stampata (A4).
    Infatti il testo, anzichè andare a capo come vorrei io, viene tagliato.

    Avete qualche suggerimento su come potrei migliorare la stampa, evitando di tagliarmi il testo stampato?

    Grazie.

  2. #2
    Puoi usare un overload di quella funzione, che accetta questi parametri:
    codice:
    Graphics.DrawString(Testo, Font, Brush, Rettangolo)
    La stringa viene sempre disegnata in modo che sti all'interno del rettangolo dato: in questo modo puoi far andare a capo specificando come lunghezza del rettangolo la larghezza del foglio.

  3. #3
    Ok, con il rettangolo ho risolto.

    Il problema ora è in altezza: quando giunge al termine del foglio, taglia tutto anzichè stampare la pagina successiva.
    Non credo di poter anche in questo caso utilizzare il rettangolo, perchè io non uso un rettangolo solo. Posto il codice per far capire meglio:

    codice:
    For count = 0 To dscontatti.Tables("contatti").Rows.Count - 1
                x = 10
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("data"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, x, y)
                x += 150
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("tipologia"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, x, y)
                x += 100
                e.Graphics.DrawString(dscontatti.Tables("contatti").Rows(count).Item("relazione"), New Font("Verdana", 12, FontStyle.Regular), Brushes.Black, New RectangleF(x, y, 500, 100))
                y = y + 80
    
            Next
    C'è modo di fargli stampare anche più pagine?

    Grazie.

  4. #4
    Quella routine è scritta nell'evento PrintPage? Se sì, stai stampando tutto in una sola pagina. Prova a dividere il tutto con un controllo sulla pagina.

  5. #5
    Ho risolto, leggendo soprattutto questa guida, che puo esser d'aiuto anche ad altri: http://it.gotdotnet.com/quickstart/w...sPrinting.aspx

    Ultima cosa:

    io stampo sul foglio incrementando ciclicamente la coordinata Y per spostarmi di riga in riga.
    Dato che una riga puo anche esser lunga e quindi andare a capo automaticamente, posso fare in modo di incrementare Y a seconda del testo stampato sopra?

    cioè, anzichè incrementare sempre di 100 (per esempio), incremento di quel tanto che mi basta per non sovrapporre il testo.

    Perchè a volte capita che in una colonna di un dataset ci sia del testo così lungo, che incrementare Y di 100 non è sufficiente, quindi il testo si sovrappone.

    Esiste un modo per rendere il tutto più dinamico?

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.