งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Printing กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Printing กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา."— ใบสำเนางานนำเสนอ:

1 Printing กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา

2 เนื้อหา  บทนำ  Crystal Report  การพิมพ์อย่างง่าย  การแสดงตัวอย่างก่อนพิมพ์  การพิมพ์หลายหน้า  สรุป

3 บทนำ ในการทำงานเชิงธุรกิจ รายงานเป็น สิ่งจำเป็นมากที่สุด โดยมีเครื่องมือ จำนวนมากที่สามารถใช้สร้างรายงาน ได้ อาทิเช่น Crystal Report ซึ่งจะไม่มีการ ติดตั้งมากับ Visual Basic.NET Express Edition ที่เป็นเวอร์ชันฟรี อย่างไรก็ดีในการเรียนการสอน เรา สามารถใช้เครื่องมือ GDI+ Library ซึ่งเป็น เครื่องมือเกี่ยวกับ Graphics ที่ติดมากับ VB เพื่อทดสอบการพิมพ์แบบง่าย ๆ ได้

4 Crystal Report  เป็นเครื่องมือ ที่ นิยมนำมาใช้ช่วย ในการออก รายงาน โดยจะมี การติดตั้งมากับ Visual Basic.NET เวอร์ชันเต็ม

5 การพิมพ์อย่างง่าย  ในการพิมพ์เอกสาร ด้วยต้นเอง จะมี Name Space ที่ เกี่ยวข้องคือ System.Drawing.Printing  นิสิตจำเป็นต้องมี การ Imports System.Drawing.Printing เข้าไปไว้บรรทัด บนสุดเพื่อให้ สามารถเรียกใช้ งานเครื่องพิมพ์ได้

6 การสร้างรายงาน  ประกอบด้วย 2 ส่วน  เนื้อหาของเอกสารที่จะส่งให้เอกสาร เปล่า  เอกสารเปล่าเพื่อจัดเก็บเอกสาร เอกสารเปล่าเนื้อหาเอกสาร + เนื้อหา +

7 การพิมพ์อย่างง่าย ( สร้าง เนื้อหา ) Private Sub myDoc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Private Sub myDoc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Dim myFont As New Font("Arial", 10) Dim myFont As New Font("Arial", 10) Dim x As Single = e.MarginBounds.Left Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top Dim y As Single = e.MarginBounds.Top Dim lineHeight As Single = myFont.GetHeight(e.Graphics) Dim lineHeight As Single = myFont.GetHeight(e.Graphics) Dim i As Integer Dim i As Integer For i = 0 To 100 For i = 0 To 100 e.Graphics.DrawString("This is line " & i.ToString, myFont, Brushes.Black, x, y) e.Graphics.DrawString("This is line " & i.ToString, myFont, Brushes.Black, x, y) y += lineHeight y += lineHeight Next Next y += lineHeight y += lineHeight End Sub

8 การพิมพ์อย่างง่าย ( สร้าง เอกสารเปล่า ) Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click Dim myDoc As New PrintDocument Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage Dim dlgSetting As New PrintDialog Dim dlgSetting As New PrintDialog dlgSetting.Document = myDoc dlgSetting.Document = myDoc Dim result As DialogResult = dlgSetting.ShowDialog() Dim result As DialogResult = dlgSetting.ShowDialog() If (result = Windows.Forms.DialogResult.OK) Then If (result = Windows.Forms.DialogResult.OK) Then myDoc.Print() myDoc.Print() End If End If End Sub End Sub

9 หลักการทำงาน  สร้างเอกสารเปล่าเพื่อจัดเก็บ เอกสาร Dim myDoc As New PrintDocument Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage โดยมีการเชื่อมโยงกับเหตุการณ์ ของหน้าเอกสาร (PrintPage) ของวัตถุ (myDoc) myDoc.PrintPage โดยสัมพันธ์กับ Procdure ชื่อ myDoc_PrintPage ที่เราสร้างไว้ ก่อนหน้า

10 หลักการทำงาน  สร้าง Dialog เพื่อแสดงรายละเอียด ของเครื่องพิมพ์ (PrintDialog) โดยส่ง เอกสาร (myDoc) ไปยังเครื่องพิมพ์ โดยรอการยืนยันว่าจะพิมพ์เอกสาร หรือไม่ จากผู้ใช้ Dim dlgSetting As New PrintDialog Dim dlgSetting As New PrintDialog dlgSetting.Document = myDoc dlgSetting.Document = myDoc

11 หลักการทำงาน  ถ้าผู้ใช้ยืนยันการพิมพ์โดยการคลิก “OK” ก็จะทำการพิมพ์เอกสาร (myDoc) ผ่านคำสั่ง (Print) Dim result As DialogResult = dlgSetting.ShowDialog() Dim result As DialogResult = dlgSetting.ShowDialog() If (result = Windows.Forms.DialogResult.OK) Then If (result = Windows.Forms.DialogResult.OK) Then myDoc.Print() myDoc.Print() End If End If

12 คำถาม : ข้อมูลที่จะพิมพ์ จากไหน  คำตอบ : ข้อมูลที่จะพิมพ์ออกทาง เอกสาร (myDoc) มาจาก Private Sub myDoc_PrintPage  คำถาม : แล้วข้อมูลข้างต้นมาได้ ยังไง คำตอบ : ข้อมูลที่จะพิมพ์ ได้ถูก กำหนดให้สัมพันธ์กัน ตอนนี้ Dim myDoc As New PrintDocument Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage

13 การสร้างเนื้อหาในเอกสาร  สร้างจาก Private Sub myDoc_PrintPage  การสร้างเนื้อหาในเอกสาร มี ขั้นตอนอะไรบ้าง

14 ขั้นตอนการสร้างเนื้อหา ของเอกสาร  ฟอนต์ Dim myFont As New Font("Arial", 10) Dim myFont As New Font("Arial", 10)  ตำแหน่งที่ต้องการพิมพ์ Dim x As Single = e.MarginBounds.Left Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top Dim y As Single = e.MarginBounds.Top  ความสูงของตัวอักษรในแต่ละบรรทัด Dim lineHeight As Single = myFont.GetHeight(e.Graphics) Dim lineHeight As Single = myFont.GetHeight(e.Graphics)

15 การสร้างเนื้อหาต้อง พิจารณาอะไรบ้าง  การแสดงผลลัพธ์ออกทางจอภาพ ด้วย DrawString e.Graphics.DrawString("This is line " & i.ToString, myFont, Brushes.Black, x, y) e.Graphics.DrawString("This is line " & i.ToString, myFont, Brushes.Black, x, y)  การขึ้นบรรทัดใหม่ คือ การเปลี่ยน ตำแหน่งในแกน y ให้เท่ากับความ สูงของตัวอักษรที่เราเก็บไว้ก่อน หน้า y += lineHeight

16 การแสดงตัวอย่างก่อน พิมพ์

17 ปุ่มตัวอย่างก่อนพิมพ์ (btnPrintPreview) Private Sub btnPrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintPreview.Click Private Sub btnPrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintPreview.Click Dim dlgPreview As New PrintPreviewDialog Dim dlgPreview As New PrintPreviewDialog Dim myDoc As New PrintDocument Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage dlgPreview.Document = myDoc dlgPreview.Document = myDoc dlgPreview.Show() dlgPreview.Show() End Sub End Sub

18 การพิมพ์หลายหน้า  จากตัวอย่างที่ผ่านมาจะเห็นได้ว่า หากมีข้อมูลเกิน 1 หน้ากระดาษ ก็ จะไม่สามารถแสดงผลลัพธ์ที่เหลือ ได้ หากนิสิตต้องการพิมพ์หลาย หน้าต้องมีการคำนวณจุดต่ำสุด (Bottom) ของหน้ากระดาษว่าต่ำสุด แล้วก็ให้ทำการสร้างหน้าใหม่ ขึ้นมา  ดังนั้นในหัวข้อนี้จะมีปรับปรุงโค้ด บางส่วนเพื่อให้รองรับการพิมพ์ หลายหน้า

19 การพิมพ์หลายหน้า  โดยต้องมีการเตรียมพื้นที่สำหรับ พักข้อมูล (Buffer) ก่อนการพิมพ์ โดยในที่นี้ผู้สอนได้สร้าง Class ชื่อ ว่า TextDocument ที่รับการถ่ายทอด คุณสมบัติจาก PrintDocument ซึ่ง สามารถพิมพ์ได้แค่ 1 หน้า

20 คลาส TextDocument Public Class TextDocument Inherits PrintDocument Inherits PrintDocument Private _Text() As String Private _Text() As String Private _PageNumber As Integer Private _PageNumber As Integer Private _Offset As Integer Private _Offset As Integer Public Property Text() As String() Public Property Text() As String() Get Get Return _Text Return _Text End Get End Get Set(ByVal value As String()) Set(ByVal value As String()) _Text = value _Text = value End Set End Set End Property End Property

21 คลาส TextDocument ( ต่อ ) Public Property PageNumber() As Integer Public Property PageNumber() As Integer Get Get Return _PageNumber Return _PageNumber End Get End Get Set(ByVal value As Integer) Set(ByVal value As Integer) _PageNumber = value _PageNumber = value End Set End Set End Property End Property Public Property Offset() As Integer Public Property Offset() As Integer Get Get Return _Offset Return _Offset End Get End Get Set(ByVal value As Integer) Set(ByVal value As Integer) _Offset = value _Offset = value End Set End Set End Property End Property Public Sub New(ByVal text() As String) Public Sub New(ByVal text() As String) Me.Text = text Me.Text = text End Sub End Sub End Class

22 การสร้างเนื้อหาในเอกสาร Private Sub myDoc1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Dim Doc As TextDocument = CType(sender, TextDocument) Dim Doc As TextDocument = CType(sender, TextDocument) Dim myFont As New Font("Arial", 10) Dim myFont As New Font("Arial", 10) Dim LineHeight As Single = myFont.GetHeight(e.Graphics) Dim LineHeight As Single = myFont.GetHeight(e.Graphics) Dim x As Single = e.MarginBounds.Left Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top Dim y As Single = e.MarginBounds.Top Doc.PageNumber += 1 Doc.PageNumber += 1 Do Do e.Graphics.DrawString(Doc.Text(Doc.Offset), myFont, Brushes.Black, x, y) e.Graphics.DrawString(Doc.Text(Doc.Offset), myFont, Brushes.Black, x, y) Doc.Offset += 1 Doc.Offset += 1 y += LineHeight y += LineHeight Loop Until (y + LineHeight) > e.MarginBounds.Bottom Or Doc.Offset > Doc.Text.GetUpperBound(0) Loop Until (y + LineHeight) > e.MarginBounds.Bottom Or Doc.Offset > Doc.Text.GetUpperBound(0) If Doc.Offset < Doc.Text.GetUpperBound(0) Then If Doc.Offset < Doc.Text.GetUpperBound(0) Then e.HasMorePages = True e.HasMorePages = True Else Else Doc.Offset = 0 Doc.Offset = 0 End If End If End Sub End Sub

23 การพิมพ์เอกสารหลาย หน้า Private Sub btnPrint1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint1.Click Private Sub btnPrint1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint1.Click Dim PrintText(100) As String Dim PrintText(100) As String Dim i As Integer Dim i As Integer For i = 0 To 100 For i = 0 To 100 PrintText(i) = "This is line " PrintText(i) = "This is line " PrintText(i) &= i.ToString() PrintText(i) &= i.ToString() Next Next Dim myDoc1 As New TextDocument(PrintText) Dim myDoc1 As New TextDocument(PrintText) AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage Dim dlgSetting As New PrintDialog() Dim dlgSetting As New PrintDialog() dlgSetting.Document = myDoc1 dlgSetting.Document = myDoc1 Dim result As DialogResult = dlgSetting.ShowDialog() Dim result As DialogResult = dlgSetting.ShowDialog() If result = Windows.Forms.DialogResult.OK Then If result = Windows.Forms.DialogResult.OK Then myDoc1.Print() myDoc1.Print() End If End If End Sub End Sub

24 การแสดงตัวอย่างก่อน พิมพ์หลายหน้า Private Sub btnPrintPreview1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrintPreview1.Click Private Sub btnPrintPreview1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrintPreview1.Click Dim PrintText(100) As String Dim PrintText(100) As String Dim i As Integer Dim i As Integer For i = 1 To 100 For i = 1 To 100 PrintText(i) = "This is line " PrintText(i) = "This is line " PrintText(i) &= i.ToString() PrintText(i) &= i.ToString() Next Next Dim dlgPreview As New PrintPreviewDialog Dim dlgPreview As New PrintPreviewDialog Dim myDoc1 As New TextDocument(PrintText) Dim myDoc1 As New TextDocument(PrintText) AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage dlgPreview.Document = myDoc1 dlgPreview.Document = myDoc1 dlgPreview.Show() dlgPreview.Show() End Sub End Sub

25 สรุป  ในการออกรายงาน ปกติจะมี เครื่องมือช่วยสนับสนุนการทำงาน นี้อยู่แล้ว เช่น Crystal Report ซึ่งจะ ติดตั้งกับ Visual Basic.NET เวอร์ชัน เต็มอย่างไรก็ดีเราสามารถพิมพ์ เอกสารแบบง่าย ๆ ได้โดยใช้ GDI+ ที่มากับ VB.NET แทน เนื่องจากถึง ระบบจะดีเพียงใด แต่ถ้าไม่ สามารถออกรายงานได้ฉันใด ก็ไม่ สามารถแสดงได้ถึงคุณค่าของ โปรแกรมได้อย่างเต็มที่ฉันนั้น

26 สรุป  หากนิสิตต้องการรายงานที่มี ประสิทธิภาพ คงต้องติดตั้ง โปรแกรม Visual Basic.NET เวอร์ชัน เต็มที่จะติดตั้งฟังก์ชันการทำงาน มาอย่างครบครัน


ดาวน์โหลด ppt Printing กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.

งานนำเสนอที่คล้ายกัน


Ads by Google