It's me again. Masih bahas perihal penggunaan PrintDocument untuk printing/reporting. Lanjutan dari postingan ini ya: Mengenal Komponen PrintDocument Mengatur Font Printing Tetep UI yang sama kita pakai ya, cuma code nya kita ubah. Klo di permulaan-awal kita hitung manual posisi y (vertikal) object string yang mau di print. Sekarang kita akan membuatnya ter-generate otomatis dengan menciptakan function berikut: Public Function PrintCellText( ByVal strValue As String , ByVal x As Integer , ByVal y As Integer , _ ByVal w As Integer , _ ByVal e As System.Drawing .Printing. PrintPageEventArgs , _ Font As Font ) As Integer 'deklarasikan persegi panjang/ rectangle Dim cellRect As RectangleF = New RectangleF() 'memilih posisi permulaan persegi panjang/ rectangle cellRect.Location = New Point(x, y) 'mengontrol ukuran persegi panjang/ rectangle, menyesuaikan jumlah karakter string cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w, _ StringFormat.GenericTypographic).Height)) 'mendefinisikan text yang mau di print e.Graphics.DrawString(strValue, Font, Brushes .Black, cellRect) Return y + cellRect.Size.Height End Function Intinya function PrintCellText ini mencetak string dalam suatu persegi panjang. Persegi panjang ini ukuran nya akan menyesuaikan dengan panjang abjad string secara vertikal. Untuk lebar sudah ditentukan. Semacam multiple line ke bawah gitu. Deklarasi font yang hendak kita gunakan. Dim fnt As Font = New Font ( "Arial" , 11, FontStyle .Regular, GraphicsUnit .Point) Kita atur Event PrintPage nya sebagai berikut: Private Sub PrintDocument1_PrintPage(sender As Object , e As Printing. PrintPageEventArgs ) _ Handles PrintDocument1.PrintPage Dim CurX As Integer = 50 Dim CurY As Integer = 50 Dim iWidth As Integer = 500 CurY = PrintCellText( "Text on 1st row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 2nd row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 3rd row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 4th row." , CurX, CurY, iWidth, e, fnt) End Sub Event button1_click untuk mentrigger proses printing. Private Sub Button1_Click(sender As Object , e As EventArgs ) _ Handles Button1.Click PrintDocument1.Print() End Sub Kode lengkapnya sebagai berikut: Public Class Form1 Dim fnt As Font = New Font ( "Arial" , 11, FontStyle .Regular, GraphicsUnit .Point) Public Function PrintCellText( ByVal strValue As String , ByVal x As Integer , ByVal y As Integer , _ ByVal w As Integer , _ ByVal e As System.Drawing .Printing. PrintPageEventArgs , _ Font As Font ) As Integer 'deklarasikan persegi panjang/ rectangle Dim cellRect As RectangleF = New RectangleF() 'memilih posisi awal persegi panjang/ rectangle cellRect.Location = New Point(x, y) 'mengontrol ukuran persegi panjang/ rectangle, menyesuaikan jumlah huruf string cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w, _ StringFormat.GenericTypographic).Height)) 'mendefinisikan text yang hendak di print e.Graphics.DrawString(strValue, Font, Brushes .Black, cellRect) Return y + cellRect.Size.Height End Function Private Sub Button1_Click(sender As Object , e As EventArgs ) _ Handles Button1.Click PrintDocument1.Print() End Sub Private Sub PrintDocument1_PrintPage(sender As Object , e As Printing. PrintPageEventArgs ) _ Handles PrintDocument1.PrintPage Dim CurX As Integer = 50 Dim CurY As Integer = 50 Dim iWidth As Integer = 500 CurY = PrintCellText( "Text on 1st row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 2nd row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 3rd row." , CurX, CurY, iWidth, e, fnt) CurY = PrintCellText( "Text on 4th row." , CurX, CurY, iWidth, e, fnt) End Sub End Class Kita coba run. Kemudian klik Button 1. Dan proses printing ajan tereksekusi. Untuk simulasi printing Rani pakai pdf printer, dan akibatnya selaku berikut. Sampai disini, klo ada pertanyaan komen di bawah ya. Next article kita bakal bahas lebih lanjut soal RectangleF untuk alignment . Sumber http://rani-irsan.blogspot.com
pop
Rabu, 19 Agustus 2020
Vb.Net: Printdocument, Mengontrol Jarak Antar Baris Secara Otomatis
Diterbitkan Agustus 19, 2020
Artikel Terkait
Langganan:
Posting Komentar (Atom)
EmoticonEmoticon