Rabu, 19 Agustus 2020

Vb.Net: Printdocument Mengatur Alignment

Ini ialah postingan berkelanjutan jadi baca juga postingan sebelumnya: Mengenal Komponen PrintDocument Mengatur Font Printing Mengatur Jarak Antar Baris secara Otomatis Kita mau lanjut dari artikel sebelumnya. Tapi pertama-tama kita akan coba mengerti tentang Alignment dan bagaimana cara kerja nya. Alignment ada horizontal dan vertikal. Jika dikombinasikan antara rata kiri, kanan dan tengah maka akan ada 9 jenis yaitu: - Atas Kiri - Atas Tengah - Atas Kanan - Tengah Kiri - Tengah Tengah - Tengah Kanan - Bawah Kiri - Bawah Tengah - Bawah Kanan Masih menggunakan yang serupa: Kombinasi alignment ini disimpan dalam object StringFormat. Kita akan mendeklarasikan 9 jenis StringFormat ini ke dalam 9 object mirip berikut: Dim TopLeft As StringFormat = New   StringFormat () Dim   TopCenter  As  StringFormat  =  New   StringFormat () Dim   TopRight  As  StringFormat  =  New   StringFormat () Dim   MidLeft  As   StringFormat  =  New   StringFormat () Dim   MidCenter  As   StringFormat  =  New   StringFormat () Dim   MidRight  As   StringFormat  =  New   StringFormat () Dim   BottomLeft  As   StringFormat  =  New   StringFormat () Dim   BottomCenter  As   StringFormat  =  New   StringFormat () Dim   BottomRight  As   StringFormat  =  New   StringFormat ()  Kemudian kita atur format saat event Form1_Load() Private Sub Form1_Load(sender As Object , e As EventArgs ) Handles MyBase .Load   TopLeft.LineAlignment = StringAlignment .Near   TopLeft.Alignment =  StringAlignment .Near   TopCenter.LineAlignment =  StringAlignment .Near   TopCenter.Alignment =  StringAlignment .Center   TopRight.LineAlignment =  StringAlignment .Near   TopRight.Alignment =  StringAlignment .Far   MidLeft.LineAlignment =  StringAlignment .Center   MidLeft.Alignment =  StringAlignment .Near   MidCenter.LineAlignment =  StringAlignment .Center   MidCenter.Alignment =  StringAlignment .Center   MidRight.LineAlignment =  StringAlignment .Center   MidRight.Alignment =  StringAlignment .Far   BottomLeft.LineAlignment =  StringAlignment .Far   BottomLeft.Alignment =  StringAlignment .Near   BottomCenter.LineAlignment =  StringAlignment .Far   BottomCenter.Alignment =  StringAlignment .Center   BottomRight.LineAlignment =  StringAlignment .Far   BottomRight.Alignment =  StringAlignment .Far End Sub Untuk melihat perbedaannya lebih jelas kita coba format ini satu per satu yah. Bagian dengan warna kuning adalah yang mau Rani ubah untuk sample selanjutnya. 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       Dim  cellRect As RectangleF      cellRect = New  RectangleF ()      cellRect.Location = New Point (CurX, CurY)      cellRect.Size = New Size (iWidth, CurY + 25)      e.Graphics.DrawString( "Top Left" , Font, Brushes .Black, cellRect, TopLeft )      e.Graphics.DrawRectangle( Pens .Black, Rectangle .Round(cellRect)) End Sub Jangan lupa event button click untuk mentrigger proses printing. Private Sub  Button1_Click(sender  As Object , e  As  EventArgs ) _     Handles Button1.Click     PrintDocument1.Print() End Sub Kita coba run dan print: Hasil print sebagai berikut: Kita coba format yang lain, buah bagian baris DrawString nya saja dan run. e.Graphics.DrawString( "Top Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Top Right" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Middle Left" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Middle  Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Middle Right " , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( "Bottom Left" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Bottom  Center" , Font,  Brushes .Black, cellRect,  TopLeft ) e.Graphics.DrawString( " Bottom   Right" , Font,  Brushes .Black, cellRect,  TopLeft ) Sekarang kita implementasikan pada function yang kita buat pada postingan sebelum nya . Rani akan menambahkan format pada parameter function, bab yang diubah diwarnai kuning. 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 , _                              ByVal  Font  As  Font ,  ByVal  Format  As  StringFormat )  As  Integer     Dim cellRect As RectangleF = New RectangleF()     cellRect.Location = New Point(x, y)     cellRect.Size = New Size(w, CInt(e.Graphics.MeasureString(strValue, Font, w,                               StringFormat.GenericTypographic).Height))     e.Graphics.DrawString(strValue, Font, Brushes.Black, cellRect , Format )     Return y + cellRect.Size.Height End Function Ukuran vertikal dari rectangle pada function di atas otomatis menyesuaikan dengan banyak aksara pada teks yang akan dicetak, sementara panjang kesamping (width) diputuskan manual lewat parameter w. Karena itu dalam fungsi ini penggunaan alignment cuma akan tampak secara horizontal dan saya akan pakai alignment top untuk vertikal. Event PrintPage kita ubah selaku 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( "Align Left Text." , CurX, CurY, iWidth, e, fnt, TopLeft)      CurY = PrintCellText( "Align Center Text." , CurX, CurY, iWidth, e, fnt, TopCenter)      CurY = PrintCellText( "Align Right Text." , CurX, CurY, iWidth, e, fnt, TopRight) End Sub Kita run kemudia print, akibatnya sebagai berikut: Vertical alignment akan lebih tampakfungsi nya ketika kita membuat layout report yang lebih kompleks dan report berbentuktabel yang akan kita diskusikan pada postingan selanjutnya .
Sumber http://rani-irsan.blogspot.com


EmoticonEmoticon