Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in

16 19 0
Bài giảng Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng cung cấp cho người học các kiến thức: Làm việc với máy in, in đồ họa trong chương trình VB, in văn bản trong chương trình VB, in tài liệu nhiều trang,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung bài giảng.

Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Chương 18: Làm việc với máy in oOo -Nội dung thảo luận: - In đồ họa chương trình VB - In văn chương trình VB - In tài liệu nhiều trang chương trình VB - Sử dụng hộp thoại Print, Page Setup, Print Preview Trong chương học cách tích hợp chức in ấn vào form cách xử lý in ấn đồ họa, in văn tài liệu nhiều trang Chú ý: - Lớp đối tượng PrintDocument cung cấp nhiều chức in ấn - Chúng ta sử dụng điều khiển hộp thoại PrintDialog, PrintPreViewDialog PageSetupDialog để thực thi tác vụ in ấn - Để in tài liệu nhiều trang, phải tạo thủ tục sử lý kiện PrintPage xử lý thao tác in lần trang tài liệu Tuy nhiên chức in ấn hỗ trợ thư viện System.Drawing.Printing Sử dụng lớp Printdocument Printdocument lớp bạn thường xuyên sử dụng in ấn Việc sử dụng lớp cách chọn toolbox thêm vào dự án điều khiển khác Lớp nằm thư viện System.Drawing.Printing Bạn cần imports đầu chương trình muốn sử dụng Bài tập MyPrintsGraphics sau hướng dẫn cách sử dụng đối tượng 1.1 Sử dụng điều khiển PrintDocument Tìm hiểu chương trình: Chương trình bao gồm textbox cho phép nhập đường dẫn file graphic cần in nút nhấn cho phép in Vì ta khơng nối máy in nên ta lưu file định dạng *.mdi Thiết kế giao diện: Bạn tạo Solution thêm vào dự án tên MyPrintsGraphics thiết kế giao diện hình Trong đối tượng có thuộc tính sau: - TextBox1: thuộc tính text đường dẫn đến file graphics bạn Ở file NFS2SER.ICO chép vào thư mục chứa dự án Biên soạn: Phạm Đức Lập -1- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET - Chương 18: Làm việc với máy in Label1 nút nhấn có text hình Bạn thêm vào điều khiển PrintDocument1 từ ToolBox Viết mã: Trước hết ta tạo module có tên ModulePrinting.vb chứa hàm PrintGraphic hàm phục vụ in ấn triệu gọi thủ tục Button1_Click Nội dung module sau: Imports System.Drawing.Printing Module ModulePrinting Public Sub PrintGraphic(ByVal sender As Object, _ ByVal ev As PrintPageEventArgs) 'Vẽ ảnh đồ họa DrawImage ev.Graphics.DrawImage _ (Image.FromFile(Form1.TextBox1.Text), _ ev.Graphics.VisibleClipBounds) 'Xác định khơng cịn trang khác ev.HasMorePages = False End Sub End Module Thủ tục hạt nhân tác vụ in ấn trang kiện PrintPage điều khiển PrintDocument1 xảy sau lời gọi PrintDocument1.Print() Trong đó, ev dùng để tham chiếu đến thông số mà PrintDocument truyền vào Ta dùng ev để lấy đối tượng Graphics dùng vẽ máy in đồng thời sử dụng phương thức DrawImage để vẽ ảnh Thuộc tính HasMorePage đặt false để in trang Trở lại cửa sổ thiết kế form1 Bạn vào chế độ Code Editor đặt khai báo sau đầu Form1: Imports System.Drawing.Printing Tiếp theo ta tạo thủ tục Button1_Click sau: Biên soạn: Phạm Đức Lập -2- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try AddHandler PrintDocument1.PrintPage, _ AddressOf ModulePrinting.PrintGraphic PrintDocument1.Print() Catch ex As Exception MessageBox.Show _ ("Sorry-there is problem printing", ex.ToString) End Try End Sub Phát biểu AddHandler yêu cầu thủ tục xử lý PrintGraphic Module triệu gọi kiện PrintPage điều khiển PrintDocument xảy Hàm AddressOf dùng để định địa thủ tục PrintGraphic ModulePrint.vb Đây kỹ thuật chuyển giao (delegate) ngôn ngữ NET Bạn chuyển địa hàm cho đối tượng đối tượng triệu gọi hàm Chạy chương trình: Ấn F5 để chạy chương trình Bạn nhập đường dẫn đến đối tượng in hay click vào nút nhấn để in Kết quả: Bạn chọn nơi lưu file *.mdi ấn nút save để lưu Bạn dừng tác vụ in cách ấn nút Cacel Biên soạn: Phạm Đức Lập -3- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in 1.2 In văn từ đối tượng TextBox Bài tập sau in đoạn văn ô textbox Ta không dùng trực tiếp đối tượng PrintDocument mà tạo mã chương trình Ta dùng phương thức Graphics.DrawString thay cho phương thức DrawImage trước Bài tập MyTextPrinting: Tìm hiểu chương trình: Chương trình gồm textbox nút nhấn Ơ textbox cho phép nhập đoạn văn nút nhấn tiến hành in đoạn văn có textbox Thiết kế giao diện: Bạn tạo Solution thêm vào dự án tên MyTextPrinting, thiết kế giao diện hình: Trong thuộc tính điều khiển sau: đối tượng TextBox1: ScrollBars – Both, MultiLine – True Các đối tượng thuộc tính hình Viết mã: Trước hết muốn sử dụng in ấn ta cần đặt khai báo sau đầu chương trình: Imports System.Drawing.Printing Khai báo hàm phục vụ in đoạn văn ô textbox Bạn tạo cửa sổ code editor form1.vb dòng khai báo form1 sau: Private Sub PrinText(ByVal sender As Object, _ ByVal ev As PrintPageEventArgs) 'sử dụng DrawString để vẽ chuỗi cần in ev.Graphics.DrawString(TextBox1.Text, _ Biên soạn: Phạm Đức Lập -4- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in New Font("Arial", 11, FontStyle.Regular), _ Brushes.Black, 120, 120) 'Cho biết không trang ev.HasMorePages = False End Sub Tạo thủ tục Button1_Click sau: Try 'Khai báo biến PrintDoc có kiểu PrintDocument Dim PrintDoc As New PrintDocument() AddHandler PrintDoc.PrintPage, AddressOf Me.PrinText 'Bắt đầu in PrintDoc.Print() Catch ex As Exception MessageBox.Show("Sorry-There is a problem printing", _ ex.ToString()) End Try Trong thủ tục ta khai báo biến có kiểu PrintDocument thay sử dụng trực tiếp đối tượng PrintDocument từ ToolBox Tiếp theo ta sử dụng kỹ thuật chuyển giao để định hàm thực thi cho biến PrintDoc, hàm hàm PrinText ta khai báo trước Cuối gọi phương thức PrintDoc.Print() để in trang in Chạy chương trình: Bạn ấn F5 nhập vào đoạn văn bất kỳ: Cũng giống tập trước, bạn ấn vào nút In văn chờ cửa sổ in xuất để lưu vào file định dạng MDI hình File MDI bạn xem thư mục chứa dự án muốn Biên soạn: Phạm Đức Lập -5- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in In file văn nhiều trang Ta sử dụng đối tượng PrintDocument để in đồ họa in văn đơn giản nhiều vấn đề cần giải Đó là, PrintDocument khơng có ký tự ngắt dòng (10 13), ta cần tự viết mã xử lý ngắt dịng Để in văn có nhiều trang ta cần viết mã ngắt trang PrintDocument đơn giản gửi liệu đến máy in Có hai cách giải vấn đề Thứ nhất, sử dụng đối tượng ev có kiểu PrintPageEventArgs để xác định trạng thái in sau trang đưa máy in (kích thước trang, số ký tự in trang,…) Thứ hai, sử dụng phương thức Graphics.MeasureString Phương thức dùng để đo xem có chuối in chiếm kích thước dài rộng trang giấy Chúng ta sử dụng kỹ thuật để in tài liệu nhiều trang Bài tập MyFilePrinting sau minh họa việc in Chương trình mở file với chiều dài in nội dung file nhiều trang Ta học cách sử dụng Biên soạn: Phạm Đức Lập -6- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in hộp thoại cấu hình máy in PrintDialog cách sử dụng đối tượng RichTextBox, OpenFileDialog Trong RichTextBox TextBox mở rộng in hiển thị nhiều loại tài liệu định dạng font chữ, hình ảnh, kiểu tài liệu MS Word Bài tập MyFilePrinting: Tìm hiểu chương trình: Chương trình gồm RichTextBox để hiển thị nội dung văn cần in Hai nút nhấn, nút Open cho phép mở file, nút Print cho phép in văn Thiết kế giao diện: Bạn tạo thêm điều khiển phục vụ mở file, in file OpenFileDialog1, PrintDocument PrintDialog Giao diện chương trình hình: Trong thuộc tính đối tượng sau: - Button1: Text – “Open”, Name – btnOpen - Button2: Text – “Print”, Name – btnPrint, Enable – False - RichTextBox1: Name – rxtDocument Biên soạn: Phạm Đức Lập -7- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Viết mã: Khai báo hai thư viện sau trước khai báo lớp Form1: Imports System.IO 'Dùng để xử lý File Imports System.Drawing.Printing System.IO cho phép sử dụng lớp FileStream mở đọc file, System.Drawing.Printing cho phép sử dụng đối tượng in ấn Tiếp theo khai báo biến dành cho việc in ấn, khai báo đặt sau khai báo lớp form1: Private PrintPageSetting As New PageSettings() Private StringToPrint As String Private PrintFont As New Font("Arial", 10) Các biến dùng in trang, biến PrintPageSetting để thiết đặt trang in, biến StringToPrint để đọc dòng in, biến PrintFont để thiết đặt font chữ Tạo thủ tục btnOpen_Click để mở file đọc: Dim FilePath As String 'Hiển thị hộp thoại mở file OpenFileDialog1.Filter = "Text Files (*.txt) | *.txt" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName "" Then FilePath = OpenFileDialog1.FileName Try 'Đọc nội dụng file vào rxtDocument Dim myFileStream As New FileStream _ (FilePath, FileMode.Open) rxtDocument.LoadFile(myFileStream, _ RichTextBoxStreamType.PlainText) myFileStream.Close() 'Chuỗi để in StringToPrint = rxtDocument.Text 'Enable nút nhấn Print btnPrint.Enabled = True Catch ex As Exception MsgBox(ex.Message) End Try End If Khi ấn vào nút Open, đoạn mã hiển thị hộp thoại cho phép chọn file Khi chọn file xong, đường dẫn tên file lưu vào FileName OpenFileDialog1 Ta gán thuộc tính filename OpenFileDialog cho biến FilePath Tiếp theo định nghĩa biến đối tượng FileStream để mở đọc nội dung file Toàn nội dung file sau tải vào RichTextBox rxtDocument nhờ phương thức LoadFile Toàn nội dung rxtDocument sau lại gán cho biến chuỗi StringToPrint Nút nhấn Print lúc hiển thị cho phép click vào Bây cài đặt đoạn mã cho phép in ấn Tạo thủ tục btnPrint_Click cách double – click vào nút Print form1 nhập vào đoạn mã sau: Biên soạn: Phạm Đức Lập -8- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Try 'Chỉ định thiết lập in mặc định PrintDocument1.DefaultPageSettings = PrintPageSetting 'Lấy liệu để in StringToPrint = rxtDocument.Text PrintDialog1.Document = PrintDocument1 Dim result As DialogResult = PrintDialog1.ShowDialog() 'In tài liệu ấn OK If result = Windows.Forms.DialogResult.OK Then PrintDocument1.Print() End If Catch ex As Exception MsgBox(ex.Message) End Try Trong đoạn mã trên, ta gán thiết lập in mặc định đối tượng PrintDocument1 biến đối tượng PrintPageSetting, gán nội dung in ô rxtDocument vào biến StringToPrint Tiếp theo, thuộc tính Document đối tượng PrintDialog1 gán với đối tượng tài liệu muốn in hay PrintDocument1 Khi hộp thoại cấu hình máy in hiển thị, thiết lập người dùng hộp thoại áp đặt cho tài liệu Tiếp theo ta phải cho hiển thị hộp thoại chọn cấu hình máy in để người dùng cấu hình phương thức ShowDialog PrintDialog1 Khi người dùng ấn OK hộp thoại cấu hình máy in PrintDocument1 gọi phương thức Print() để in Bây ta tạo thủ tục PrintDocument1_PrintPage để thiết đặt thông số in ngắt dòng, ngắt trang,…bằng cách double click vào đối tượng PrintDocument1 cửa sổ thiết kế form hay chọn danh sách class name method name cửa sổ code editor Lúc trước ta dùng phương thức AddHandler để chuyển giao việc gọi hàm ta sử dụng trực tiếp kiện có sẵn PrintDocument1 Thủ tục có nội dung sau: Dim sokytu, sodong As Integer Dim chuoiin As String Dim chuoidinhdang As New StringFormat() 'Định nghĩa vùng in dựa thiết lập trang Dim vungin As New RectangleF(e.MarginBounds.Left, _ e.MarginBounds.Top, e.MarginBounds.Width, _ e.MarginBounds.Height) Dim kichthuoc As New SizeF(e.MarginBounds.Width, _ e.MarginBounds.Height - PrintFont.GetHeight(e.Graphics)) 'Nếu in chuỗi dài, u cầu ngắt xuống dịng chuoidinhdang.Trimming = StringTrimming.Word 'Tính xem độ dài chuỗi vừa dòng in e.Graphics.MeasureString(StringToPrint, PrintFont, _ kichthuoc, chuoidinhdang, sokytu, sodong) chuoiin = StringToPrint.Substring(0, sokytu) 'In chuỗi trang hành e.Graphics.DrawString(chuoiin, PrintFont, _ Biên soạn: Phạm Đức Lập -9- Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Brushes.Black, vungin, chuoidinhdang) 'Nếu chuỗi để in If sokytu < StringToPrint.Length Then 'Loại bỏ chuỗi in xong StringToPrint = StringToPrint.Substring(sokytu) e.HasMorePages = True Else e.HasMorePages = False 'Tất chuỗi in xong, khôi phục lại liệu StringToPrint = rxtDocument.Text End If Thủ tục thực tính tốn khổ giấy đẩy dl máy in Trước hết, ta định nghĩa vùng in khung hình chữ nhật: Dim vungin As New RectangleF(e.MarginBounds.Left, _ e.MarginBounds.Top, e.MarginBounds.Width, _ e.MarginBounds.Height) Vùng in thiết lập nhờ thông số biến e truyền vào(biến e tương đương với biến ev thủ tục PrinText PrintGraphics trước đây) Thông số mà biến e có hộp thoại PrintDialog cung cấp Tất văn vùng in bình thường, phần dài đẩy in dịng khác Dữ liệu sau đẩy máy in phương thức DrawString Chạy chương trình: Ấn F5 để chạy chương trình Bạn mở file text Chương trình hiển thị nội dung file vào rxtDocument: Biên soạn: Phạm Đức Lập - 10 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Nút Print lên, bạn click vào để chương trinh hộp thoại thiết lập trang in: Biên soạn: Phạm Đức Lập - 11 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Tôi chưa kết nối máy in nên danh sách máy in không lên Bạn thiết lập trang in để truyền thông số vào thủ tục ta xây dựng: Bạn ấn OK, Print để chương trình in ấn Ở lưu vào file Example For Print.mdi bạn xem: Như ta hồn thành việc thiết lập trang in cho việc in văn nhiều trang Tiếp sau dùng hộp thoại PrintPreviewDialog PageSetupDialog vào việc thiết đặt trang in Biên soạn: Phạm Đức Lập - 12 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Sử dụng hộp thoại PrintPreviewDialog PageSetupDialog Chương trình in ấn hồn chỉnh, cải tiến chương trình MyFilePrinting cho phép định dạng trang in, chọn khổ giấy xem trước trang in hộp thoại PageSetupDialog hộp thoại PrintPreviewDialog Bạn mở lại Solution MyFilePrinting ta làm đặt thêm hai điều khiển PrintPreViewDialog PageSetupDialog hai nút nhấn vào form, kết hình: Trong điều khiển có thuộc tính sau: - Button1: Name – btnPageSetup, Text – “Page Setup”, Enable – False - Button2: Name – btnPreview, Text – “Print Preview”, Enable – False Khi người dùng click vào nút Page Setup hộp thoại cho phép người dùng chọn khổ giấy thiết lập thông số cho trang in Khi click vào nút Print Preview hộp thoại cho phép người dùng xem trước trang in Biên soạn: Phạm Đức Lập - 13 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Bây ta tạo thủ tục btnPageSetup_Click cách double click vào nút Page Setup nhập vào đoạn mã sau: Try 'Nạp thiết lập hiển thị hộp thoại PageSetup PageSetupDialog1.PageSettings = PrintPageSetting PageSetupDialog1.ShowDialog() Catch ex As Exception MsgBox(ex.Message) End Try Đoạn mã tạo hộp thoại Page Setup Biến PrintPageSetting khai báo đầu chương trình Biến PrintPageSetting nắm giữ thông số mà hộp thoại PageSetupDialog trả Tiếp theo ta tạo thủ tục btnPreview_Click nhập đoạn mã sau: Try 'Chỉ định thiết lập trang in hành PrintDocument1.DefaultPageSettings = PrintPageSetting 'Chỉ định tài liệu hiển thị cho hộp thoại PrintPreview StringToPrint = rxtDocument.Text PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog() Catch ex As Exception MsgBox(ex.Message) End Try Thủ tục gán biến PrintPageSetting cho thuộc tính DefaultPageSettings đối tượng PrintDocument1, copy văn ô rxtDocument vào biến StringToPrint mở hộp thoại PrintPreviewDialog1 Thuộc tính Document hộp thoại PrintPreviewDialog1 gán PrintDocument1 để chương trình biết bạn cần xem tài liệu Sau ta cần enable hai nút nhấn thêm Page Setup Print Preview hai dòng mã sau thủ tục btnOpen_Click: btnPageSetup.Enabled = True btnPreview.Enabled = True Bạn cho phép người dùng nhập nội dung vào ô RichTextBox cách bổ sung thêm thủ tục rxtDocument_TextChanged với nội dung sau: Private Sub rxtDocument_TextChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles rxtDocument.TextChanged btnPrint.Enabled = True btnPageSetup.Enabled = True btnPreview.Enabled = True End Sub Bây chương trình hồn chỉnh, bạn lưu lại tất thay đổi chương trình cách nhấn vào nút Save All Standard Bar Chúng ta tiến hành chạy kiểm tra chương trình Biên soạn: Phạm Đức Lập - 14 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Chạy chương trình: Bạn chạy chương trình cách nhấn nút F5, bạn thử mở lại file text hay tự nhập nội dung văn vào ô RichTextBox Bạn nhấn vào nút Page Stup để hiển thị hộp thoại chọn khổ giấy kích thước trang in: Biên soạn: Phạm Đức Lập - 15 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Bạn thay đổi kích thước lề in Tơi thay sau: Left – 2.5, ba thơng số cịn lại 1.5 Nhấn OK để lưu lại thông số Nhấn nút Print Preview để xem trước trang in: Bạn xem nhiều chế độ Nhấn Close để đóng cửa sổ lại Vậy hoàn thành việc in ấn cho tài liệu văn đơn giản Tổng kết chương 18 Bạn làm bảng tổng kết học chương 18 Bạn áp dụng ví dụ chương cho tập cần in ấn sau bạn Biên soạn: Phạm Đức Lập - 16 - Add: cnt-44-dh, VIMARU ... Phạm Đức Lập -8 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Try 'Chỉ định thiết lập in mặc định PrintDocument1.DefaultPageSettings = PrintPageSetting 'Lấy... Đức Lập - 10 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Nút Print lên, bạn click vào để chương trinh hộp thoại thiết lập trang in: Biên soạn: Phạm Đức Lập. .. soạn: Phạm Đức Lập -9 - Add: cnt-44-dh, VIMARU Hướng dẫn lập trình VB.NET Chương 18: Làm việc với máy in Brushes.Black, vungin, chuoidinhdang) 'Nếu chuỗi để in If sokytu < StringToPrint.Length Then

Ngày đăng: 08/05/2021, 17:12

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan