ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยNgam Kasemsarn ได้เปลี่ยน 10 ปีที่แล้ว
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) Dim myFont As New Font("Arial", 10) Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top Dim lineHeight As Single = myFont.GetHeight(e.Graphics) Dim i As Integer For i = 0 To 100 e.Graphics.DrawString("This is line " & i.ToString, myFont, Brushes.Black, x, y) y += lineHeight Next End Sub
8
การพิมพ์อย่างง่าย (สร้างเอกสารเปล่า)
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage Dim dlgSetting As New PrintDialog dlgSetting.Document = myDoc Dim result As DialogResult = dlgSetting.ShowDialog() If (result = Windows.Forms.DialogResult.OK) Then myDoc.Print() End If End Sub
9
หลักการทำงาน สร้างเอกสารเปล่าเพื่อจัดเก็บเอกสาร
Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage โดยมีการเชื่อมโยงกับเหตุการณ์ของหน้าเอกสาร(PrintPage) ของวัตถุ(myDoc) myDoc.PrintPage โดยสัมพันธ์กับ Procdure ชื่อ myDoc_PrintPage ที่เราสร้างไว้ก่อนหน้า
10
Dim dlgSetting As New PrintDialog
หลักการทำงาน สร้าง Dialog เพื่อแสดงรายละเอียดของเครื่องพิมพ์ (PrintDialog) โดยส่งเอกสาร (myDoc) ไปยังเครื่องพิมพ์ โดยรอการยืนยันว่าจะพิมพ์เอกสาร หรือไม่ จากผู้ใช้ Dim dlgSetting As New PrintDialog dlgSetting.Document = myDoc
11
หลักการทำงาน Dim result As DialogResult = dlgSetting.ShowDialog()
ถ้าผู้ใช้ยืนยันการพิมพ์โดยการคลิก “OK” ก็จะทำการพิมพ์เอกสาร(myDoc) ผ่านคำสั่ง (Print) Dim result As DialogResult = dlgSetting.ShowDialog() If (result = Windows.Forms.DialogResult.OK) Then myDoc.Print() End If
12
คำถาม: ข้อมูลที่จะพิมพ์จากไหน
คำตอบ: ข้อมูลที่จะพิมพ์ออกทางเอกสาร (myDoc) มาจาก Private Sub myDoc_PrintPage คำถาม: แล้วข้อมูลข้างต้นมาได้ยังไง คำตอบ: ข้อมูลที่จะพิมพ์ ได้ถูกกำหนดให้สัมพันธ์กัน ตอนนี้ Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage
13
การสร้างเนื้อหาในเอกสาร
สร้างจาก Private Sub myDoc_PrintPage การสร้างเนื้อหาในเอกสาร มีขั้นตอนอะไรบ้าง
14
ขั้นตอนการสร้างเนื้อหาของเอกสาร
ฟอนต์ Dim myFont As New Font("Arial", 10) ตำแหน่งที่ต้องการพิมพ์ Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top ความสูงของตัวอักษรในแต่ละบรรทัด Dim lineHeight As Single = myFont.GetHeight(e.Graphics)
15
การสร้างเนื้อหาต้องพิจารณาอะไรบ้าง
การแสดงผลลัพธ์ออกทางจอภาพด้วย DrawString 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 Dim dlgPreview As New PrintPreviewDialog Dim myDoc As New PrintDocument AddHandler myDoc.PrintPage, AddressOf myDoc_PrintPage dlgPreview.Document = myDoc dlgPreview.Show() End Sub
18
การพิมพ์หลายหน้า จากตัวอย่างที่ผ่านมาจะเห็นได้ว่า หากมีข้อมูลเกิน 1หน้ากระดาษ ก็จะไม่สามารถแสดงผลลัพธ์ที่เหลือได้ หากนิสิตต้องการพิมพ์หลายหน้าต้องมีการคำนวณจุดต่ำสุด (Bottom) ของหน้ากระดาษว่าต่ำสุดแล้วก็ให้ทำการสร้างหน้าใหม่ขึ้นมา ดังนั้นในหัวข้อนี้จะมีปรับปรุงโค้ดบางส่วนเพื่อให้รองรับการพิมพ์หลายหน้า
19
การพิมพ์หลายหน้า โดยต้องมีการเตรียมพื้นที่สำหรับพักข้อมูล (Buffer) ก่อนการพิมพ์ โดยในที่นี้ผู้สอนได้สร้าง Class ชื่อว่า TextDocument ที่รับการถ่ายทอดคุณสมบัติจาก PrintDocument ซึ่งสามารถพิมพ์ได้แค่ 1 หน้า
20
คลาส TextDocument Public Class TextDocument Inherits PrintDocument
Private _Text() As String Private _PageNumber As Integer Private _Offset As Integer Public Property Text() As String() Get Return _Text End Get Set(ByVal value As String()) _Text = value End Set End Property
21
คลาส TextDocument (ต่อ)
Public Property PageNumber() As Integer Get Return _PageNumber End Get Set(ByVal value As Integer) _PageNumber = value End Set End Property Public Property Offset() As Integer Return _Offset _Offset = value Public Sub New(ByVal text() As String) Me.Text = text 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 myFont As New Font("Arial", 10) Dim LineHeight As Single = myFont.GetHeight(e.Graphics) Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top Doc.PageNumber += 1 Do e.Graphics.DrawString(Doc.Text(Doc.Offset), myFont, Brushes.Black, x, y) Doc.Offset += 1 y += LineHeight Loop Until (y + LineHeight) > e.MarginBounds.Bottom Or Doc.Offset > Doc.Text.GetUpperBound(0) If Doc.Offset < Doc.Text.GetUpperBound(0) Then e.HasMorePages = True Else Doc.Offset = 0 End If End Sub
23
การพิมพ์เอกสารหลายหน้า
Private Sub btnPrint1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint1.Click Dim PrintText(100) As String Dim i As Integer For i = 0 To 100 PrintText(i) = "This is line " PrintText(i) &= i.ToString() Next Dim myDoc1 As New TextDocument(PrintText) AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage Dim dlgSetting As New PrintDialog() dlgSetting.Document = myDoc1 Dim result As DialogResult = dlgSetting.ShowDialog() If result = Windows.Forms.DialogResult.OK Then myDoc1.Print() End If End Sub
24
การแสดงตัวอย่างก่อนพิมพ์หลายหน้า
Private Sub btnPrintPreview1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrintPreview1.Click Dim PrintText(100) As String Dim i As Integer For i = 1 To 100 PrintText(i) = "This is line " PrintText(i) &= i.ToString() Next Dim dlgPreview As New PrintPreviewDialog Dim myDoc1 As New TextDocument(PrintText) AddHandler myDoc1.PrintPage, AddressOf myDoc1_PrintPage dlgPreview.Document = myDoc1 dlgPreview.Show() End Sub
25
สรุป ในการออกรายงาน ปกติจะมีเครื่องมือช่วยสนับสนุนการทำงานนี้อยู่แล้ว เช่น Crystal Report ซึ่งจะติดตั้งกับ Visual Basic .NET เวอร์ชันเต็มอย่างไรก็ดีเราสามารถพิมพ์เอกสารแบบง่าย ๆ ได้โดยใช้ GDI+ ที่มากับ VB.NET แทน เนื่องจากถึงระบบจะดีเพียงใด แต่ถ้าไม่สามารถออกรายงานได้ฉันใด ก็ไม่สามารถแสดงได้ถึงคุณค่าของโปรแกรมได้อย่างเต็มที่ฉันนั้น
26
สรุป หากนิสิตต้องการรายงานที่มีประสิทธิภาพ คงต้องติดตั้งโปรแกรม Visual Basic .NET เวอร์ชันเต็มที่จะติดตั้งฟังก์ชันการทำงาน มาอย่างครบครัน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.