tisk z PrintDocumentu   otázka

VB.NET, WinForms, Tisk

Dobrý den,

potřeboval bych poradit s následujícím :

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

Dim X As Integer = 50
Dim Y As Integer = 30
Dim row As Integer = 1
Dim PísmoTisku As New Font("Arial", 10)


For i As Integer = 0 To Form2.DG.RowCount - 1
            e.Graphics.DrawString(row, PísmoTisku, Brushes.Black, X - 30, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(0).Value).Trim(), PísmoTisku, Brushes.Black, X, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(1).Value).Trim(), PísmoTisku, Brushes.Black, X + 80, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(2).Value).Trim(), PísmoTisku, Brushes.Black, X + 150, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(3).Value).Trim(), PísmoTisku, Brushes.Black, X + 210, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(4).Value).Trim(), PísmoTisku, Brushes.Black, X + 230, Y)
            e.Graphics.DrawString(CStr(Form2.DG.Rows(i).Cells(5).Value).Trim(), PísmoTisku, Brushes.Black, X + 280, Y)


Y = Y + 15

If row = 50 Then
   e.HasMorePages = True
   Y = 30
   row = 0
  Else
   e.HasMorePages = False
End If

    row = row + 1
Next
End Sub

z DataGridu tahám data, které chci vytisknout, ale nejde mi se dostat na další stránku. Buď to se to vykresluje kamsi do nekonečna nebo se data na stránce přepisují.

problém bude asi s e.HasMorePage

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Když nastavíte e.HasMorePages na True, zavolá se PrintPage událost znovu a s novým e.Graphics kreslícím plátnem pro každou stránku k tisku. Vytiskněte tedy řádků padesát a pak nastavte e.HasMorePages na True, pokud nějaké zbývají a v dalším zavolání PrintPage pokračujte od řádku 51 dále. Proměnnou row tedy budete nejspíše chtít posunout nad samotný handler události PrintPage.

Mimochodem, deklaraci písma je vhodné zaobalit do Using ... End Usign bloku, protože implementuje IDisposable, následovně:

Dim row = 0
Sub 
  Using f = New Font("Arial", 10)
    For row To Form2.DG.RowCount - 1
      Dim i = row Mod 50
      ' i je Zbytek po dělení, pro řádek #51 bude na stránce 
      ' #2 vracet jedničku, protože je to první řádek té
      ' stránky. Proměnnou i použijte pro měření umístění textů
      ' ...
    Next
  End Using
End Sub
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý den,

nějak se mi nedaří, ať dělám co dělám.

Můžete mi prosím trochu víc poradit s kódem?

Podmínka je splněna, souřadnice pro text se "vrátí" na začátek, ale data se vypisují stále na stejnou stránku a přepisují se.

Díky moc za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

http://www.vbnet.cz/forum-tema--5789-tis...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

stále se mi nedaří :(

Může mi někdo poradit, nastínit (např. 500 záznamů po 20řádcích)

Když už to dostanu na další stránku, tak mi to přepíše i tu první tím co je na druhé

nebo

mám první stránku a druhou se zbytkem záznamů.

Už fakt nevím ...

Díky předem

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback