HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Nyomtatás alapjai, avagy a PrintDocument komponens


Példaprogram letöltése

6997 bájt

Ha papíron kell megjelenítenünk tetszőleges adatokat, akkor ebben nagy segítséget nyújt a PrintDocument komponens. Mellékelt példában ezzel ismerkedhetünk meg.

Nyomtatáshoz tegyünk fel tehát egy PrintDocument komponenst. Feladatként azt valósítjuk meg, hogy kinyomtatjuk az autoexec.bat állomány tartalmát. Ha esetleg az ön rendszerében ez nincs jelen, akkor írja át a forráskódban ezt a hivatkozást egy másik, létező szöveges állományra.
Ahhoz, hogy nyomtatni tudjunk egy szöveges állományt, ahhoz ismernünk kell annak tartalmát. Ehhez egy StreamReader osztályt hívunk segítségül, mellyel beolvashatjuk az állományunk tartalmát. A nyomtatási munka elindításához a PrintDocument komponens Print függvényét kell meghívnunk.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Try
    st = New StreamReader("c:\\autoexec.bat")
    Try
      f = New Font("Courier New", 10)
      PrintDocument1.Print()
    Finally
      st.Close()
    End Try
  Catch ex As Exception
    MessageBox.Show(ex.Message)
  End Try
End Sub
Amikor e Print meghívásra kerül, akkor jön létre a komponens PrintPage eseménye. Ez lesz az a pont a programunkban, ahol megmondhatjuk, hogy mit is küldünk a nyomtató felé.
Az esemény paramétereként kapunk egy PrintPageEventArgs típusú változót. Ebben sok olyan adat áll a rendelkezésünkre, melyet felhasználhatunk a nyomtatási munka elvégzéséhez. Így például a MarginBounds property-ben megkapjuk papírlaphoz tartozó margót. A Graphics property-n keresztül pedig tetszőleges grafikai funkciót elérhetünk a dokumentumunk kirajzolásához.
A szöveges állomány nyomtatását úgy végezzük el, hogy egy while ciklussal végigmegyünk az állomány egyes sorain. Ez a ciklus addig fut, amíg van elegendő hely az adott lapon a következő sor kinyomtatásához, vagy amíg van mit kinyomtatni. A ciklusmagban számláljuk az aktuális sor pozícióját, ahová írnunk kell. A szöveg kirajzolását a Graphics osztály DrawString függvényével végezzük.
A ciklus végeztével szintén a PrintPageEventArgs típusú változón keresztül jelezhetjük a PrintDocument komponens felé, hogy van-e még nyomtatandó munka vagy már végeztünk. Ezt a HasMorePages logikai property-nek történő értékadással tehetjük meg. Amennyiben ennek igaz értéket adunk, úgy a PrintDocument komponens új lapot nyit és újra aktivizálja a PrintPage eseményét.
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
  Dim y As Single = 0
  Dim count As Integer = 0
  Dim line As String = Nothing
  Dim l As Single = e.MarginBounds.Left
  Dim t As Single = e.MarginBounds.Top
  Dim h As Single = f.GetHeight(e.Graphics)
  Dim max As Single = e.MarginBounds.Height / h
  line = st.ReadLine()
  While count < max And line <> Nothing
    y = count * h + t
    e.Graphics.DrawString(line, f, Brushes.Black, l, y, New StringFormat())
    count = count + 1
    line = st.ReadLine()
  End While
  e.HasMorePages = line <> Nothing
End Sub

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |