Bài giảng Tin học - Chương 10: Tương tác giữa người dùng và chương trình cung cấp cho người học các kiến thức: Tổng quát về tương tác giữa người dùng & chương trình, giao tiếp với bàn phím, giao tiếp với chuột, vẽ văn bản và đồ họa lên đối tượng giao diện, vấn đề in ấn trong VB. Mời các bạn cùng tham khảo.
Các hàm thư viện liên kết động Trong code VB, việc gọi thủ tục định nghĩa Project thủ tục định sẵn, người lập trình gọi hàm thư viện liên kết động thư viện liên kết động có dạng *.dll thường xây dựng ngôn ngữ VC++ chứa danh sách hàm dịch vụ Khi chương trình VB gọi hàm file thư viện DLL, file nạp vào nhớ hàm liên kết vào vùng nhớ chương trình để chương trình gọi hàm cần gọi Các hàm thư viện DLL sử dụng chung cho phần mềm chạy, nghĩa có (copy) hàm thư viện DLL nhớ máy tính để phục vụ cho ứng dụng gọi Ta coi Windows thư viện phần mềm DLL lớn, thư viện cung cấp nhiều hàm dịch vụ khác nhau, người ta gọi hàm hàm API (Application Programming Interface) Chương trình VB gọi hàm thư viện theo chế liên kết động trình bày Trước hàm DLL dùng module VB đó, ta cần khai báo đặc tả hàm DLL nhờ lệnh Declare VB với cú pháp trình bày slide 153 (chương 6) Môn : Tin học Chương : Định nghĩa thủ tục & sử dụng Slide 257 Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM MÔN TIN HỌC Chương 10 TƯƠNG TÁC GIỮA NGƯỜI DÙNG & CHƯƠNG TRÌNH 10.1 Tổng quát tương tác người dùng & chương trình 10.2 Giao tiêp với b2n phím 10.3 Giao tiếp với chuột 10.4 Vẽ văn đồ họa lên đối tượng giao diện 10.5 Vấn đề in ấn VB Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 258 129 10.1 Tổng quát tương tác người dùng & chương trình Trong lúc chương trình chạy, thường tương tác với người dùng Sự tương tác gồm hoạt động : chờ nhận liệu người dùng cung cấp hay chờ nhận lệnh người dùng để thực thi chức hiển thị thơng báo và/hoặc kết tính tốn hình/máy in để người dùng biết sử dụng Sự tương tác người dùng máy tính thực thơng qua thiết bị nhập/xuất (thiết bị I/O - input/output) bàn phím/chuột để nhập liệu hay lệnh, hình/máy in để xuất kết hay thơng báo Hiện có hàng trăm hãng khác chế tạo thiết bị I/O cho máy PC, hãng chế tạo nhiều model thiết bị (thí dụ hãng HP chế nhiều model máy in phun mực, máy in laser, ) Mỗi model thiết bị hãng có tính chất vật lý riêng khác với model khác Để giúp người lập trình truy xuất thiết bị I/O dễ dàng, độc lập với tính chất phần cứng thiết bị, HĐH Windows VB che dấu tính chất phần cứng thiết bị cung cấp cho người lập trình giao tiếp sử dụng nhất, độc lập với thiết bị Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 259 Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Kiến trúc tương tác người dùng & ứng dụng VB My Visual Basic Application Ứng dụng giao tiếp vớI thiết bị trừu tượng thông qua Windows Windows tạo & quản lý thiết bị trừu tượng Screen Object Mouse Keyboard Printer Object Windows Windows giao tiếp vớI ác device driver thiết bị Driver Keyboard Driver Mouse Driver AnyKey Keyboard Logitech Mouse Printer Driver Các driver giao tiếp vớI thiết bị vật lý ViewSonic Monitor Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM HP Laser Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 260 130 Kiến trúc tương tác người dùng & ứng dụng VB (tt) Xem hình vẽ slide trước (miêu tả kiến trúc tương tác người dùng & ứng dụng VB), ta thấy : cấp thấp thiết bị phần cứng, thiết bị có tính chất riêng khác với thiết bị khác (ngay loại, hãng khác model) cấp device driver điều khiển giao tiếp trực tiếp với phần cứng che dấu tính chất chi tiết phần cứng, cung cấp cho cấp giao tiếp sử dụng phần cứng độc lập với tính chất phần cứng ⇒ Mỗi model thiết bị phần cứng hãng cần có device driver riêng cấp HĐH xử lý chức luận lý (đệm liệu, xử lý sai, ) trước nhờ device driver giao tiếp trực tiếp với phần cứng Windows che dấu loại phần cứng tạo thiết bị trừu tượng để ứng dụng truy xuất chúng dễ dàng độc lập với loại thiết bị (đối tượng Printer, Screen, Mouse, Keyboard) VB tạo đối tượng giao diện cao cấp dễ dùng : đối tượng giao diện (form, window, listbox, ) giao tiếp trực tiếp với người dùng để nhập/xuất liệu, chờ nhận kiện hay chủ động thông báo cho user Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 261 Kiến trúc tương tác người dùng & ứng dụng VB (tt) Sau biết kiến trúc giao tiếp I/O ứng dụng VB, cần giao tiếp với người dùng, ta nên : dùng đối tượng giao diện cao cấp (định sẵn VB hay ActiveX Control) số trường hợp cần thiết ta dùng đối tượng Windows Printer Screen số trường hợp tối cần thiết ta gọi hàm giao tiếp device driver tuyệt đối không nên truy xuất trực tiếp phần cứng thiết bị I/O khó khăn, khơng an tồn, dễ bị tranh chấp với ứng dụng chạy đồng thời Tương tác với người dùng thông qua đối tượng giao diện thực sau : nhập liệu/nhận lệnh thông qua thủ tục xử lý kiện phần tử giao diện tương ứng xuất kết quả/thông báo cách gán kết vào thuộc tính tương ứng đối tượng giao diện hay dùng method vẽ đồ họa tổng quát Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 262 131 10.2 Giao tiếp với keyboard qua đối tượng giao diện Mặc dù có nhiều phần tử giao diện hiển thị hình thởi điểm có phần tử giao diện giao tiếp với thiết bị I/O, ta gọi phần tử giao diện 'active' hay 'focus' Liên quan đến việc ấn thả phím, VB tạo kiện sau gởi cho phần tử 'focus' hành : KeyDown : kiện xảy người sử dụng bấm (ấn xuống) phím bàn phím KeyUp : kiện xảy người sử dụng thả phím vừa ấn KeyPress: kiện xảy người sử dụng ấn/thả phím bàn phím mà tạo ký tự ANSI Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 263 Thủ tục xử lý kiện KeyDown, KeyUp & KeyPress Thủ tục có dạng sau : Private Sub ControlName_KeyDown (KeyCode as Integer, Shift as Integer) Private Sub ControlName_KeyUp (KeyCode as Integer, Shift as Integer) : ControlName tên điều khiển nhận kiện keydown/keyup KeyCode mã "virtual code" phím ấn/thả Shift giá trị miêu tả trạng thái ấn giữ phím điều khiển (là dãy bit với bit cho phím SHIFT, bit cho phím CTRL, bit cho phím ALT) Thủ tục KeyPress có dạng sau : Private Sub ControlName_KeyPress (KeyAscii As Integer) : ControlName tên điều khiển nhận kiện keypress KeyAscii mã ký tự ANSI phím ấn/thả Mỗi đối tượng có thủ tục xử lý biến cố riêng, thủ tục method đối tượng tương ứng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 264 132 Thí dụ thủ tục xử lý biến cố KeyDown textbox Private Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer) Dim ShiftDown, AltDown, CtrlDown, Txt ShiftDown = (Shift And vbShiftMask) > AltDown = (Shift And vbAltMask) > CtrlDown = (Shift And vbCtrlMask) > If KeyCode = vbKeyF2 Then ' Display key combinations If ShiftDown And CtrlDown And AltDown Then Txt = "SHIFT+CTRL+ALT+F2." ElseIf ShiftDown And AltDown Then Txt = "SHIFT+ALT+F2." ElseIf ShiftDown And CtrlDown Then Txt = "SHIFT+CTRL+F2." ElseIf CtrlDown And AltDown Then Txt = "CTRL+ALT+F2." ElseIf ShiftDown Then Txt = "SHIFT+F2." ElseIf CtrlDown Then Txt = "CTRL+F2." ElseIf AltDown Then Txt = "ALT+F2." ElseIf SHIFT = Then Txt = "F2." End If Text1.Text = "You pressed " & Txt End If End Sub Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 265 Dùng thuộc tính KeyPreview Thường form giao diện (hộp thoại) chứa nhiều điều khiển bên ⇒ Khi thao tác phím điều khiển form kiện gởi cho điều khiển hay form ? Để qui định cụ thể điều này, VB cung cấp thuộc tính KeyPreview cho form, ta xem/hiệu chỉnh giá trị nhờ lệnh gán : FormName.KeyPreview [= boolean_expr] : FormName tên form liên quan boolean_expr biểu thức luận lý có giá trị True/False Khi ta gán trị luận lý vào thuộc tính form : trị = True form nhận xử lý biến cố trước tới điều khiển trị = False điều khiển nhận xử lý biến cố, form khơng Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 266 133 10.3 Giao tiếp với chuột thông qua đối tượng giao diện Tương tự bàn phím, người dùng thao tác chuột, VB tạo biến cố sau gởi cho phần tử 'focus' hành : MouseMove : kiện xảy người sử dụng di chuyển chuột MouseDown : kiện xảy người sử dụng ấn nút chuột (tùy loại chuột mà có 1/2/3 nút) MouseUp : kiện xảy người sử dụng thả nút vừa ấn Click : kiện xảy người sử dụng ấn thả chuột DblClick : kiện xảy người sử dụng 'Click' chuột liên tục hai lần thời gian đủ nhỏ (do người dùng qui định chung cho môi trường Windows) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 267 Thủ tục xử lý kiện MouseDown & MouseUp Thủ tục có dạng sau : Private Sub ControlName_MouseDown (Button As Integer, Shift As Integer, x As Single, y As Single) Private Sub ControlName_MouseUp (Button As Integer, Shift As Integer, x As Single, y As Single) : ControlName tên điều khiển nhận kiện MouseDown/MouseUp Button giá trị miêu tả trạng thái nút chuột ấn/thả (là dãy bit với bit cho nút trái, bit cho nút phải bit cho nút giữa) Shift giá trị miêu tả trạng thái ấn giữ phím điều khiển (là dãy bit với bit cho phím SHIFT, bit cho phím CTRL, bit cho phím ALT) x, y miêu tả tọa độ (x,y) vị trí chuột ấn/thả hình Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 268 134 Thủ tục xử lý kiện MouseMove Thủ tục có dạng sau : Private Sub ControlName_MouseMove (Button As Integer, Shift As Integer, x As Single, y As Single) : ControlName tên điều khiển nhận kiện MouseDown/MouseUp Button giá trị miêu tả trạng thái nút chuột ấn/thả (là dãy bit với bit cho nút trái, bit cho nút phải bit cho nút giữa) Shift giá trị miêu tả trạng thái ấn giữ phím điều khiển (là dãy bit với bit cho phím SHIFT, bit cho phím CTRL, bit cho phím ALT) x, y miêu tả tọa độ (x,y) vị trí chuột hành hình Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 269 Thủ tục xử lý kiện Click & DblClick Thủ tục có dạng sau : Private Sub ControlName_Click () Private Sub ControlName_DblClick () : ControlName tên điều khiển nhận kiện Click/DblClick Thủ tục xử lý kiện Click DblClick khơng có tham số để xác định vị trí ấn chuột hay nút chuột ấn Trong trường hợp cần thông tin phụ để xử lý chi li hơn, bạn nên dùng thủ tục xử lý kiện MouseDown hay MouseUp Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 270 135 Thí dụ thủ tục xử lý kiện chuột ' biến qui định trạng thái vẽ/không vẽ Dim PaintNow As Boolean 'Khởi động thông số vẽ Private Sub Form_Load () DrawWidth = 10 ' Use wider brush ForeColor = RGB(0, 0, 255) ' Set drawing color End Sub Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Enable painting End Sub Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = False ' Disable painting End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Draw a point End If End Sub Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 271 10.4 Vẽ văn đồ họa lên đối tượng giao diện Các điều khiển thường chứa thuộc tính Text, Caption hay Value phép chương trình truy xuất (đọc/ghi) thuộc tính Tuy nhiên đối tượng giao diện phức hợp Form, PictureBox, Printer hiển thị nhiều nội dung chi tiết dạng văn bản, đồ họa hay ảnh bitmap Để hiển thị nội dung này, ta dùng method sau đối tượng tương ứng : Cls : xóa tồn nội dung hiển thị trước đối tượng Print : hiển thị hay nhiều chuỗi văn PSet : hiển thị điểm pixel với màu xác định Point : trả giá trị màu điểm pixel Line : vẽ đoạn thẳng hay hộp hình chữ nhật Circle : cẽ hình tròn, ellipse hay cung PaintPicture : vẽ ảnh bitmap có vào đối tượng Các slide lại diễn tả chi tiết method thí dụ việc dùng chúng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 272 136 Thủ tục Print : xuất chuỗi thiết bị xuất luận lý Thủ tục có dạng sau : [objName.]Print [Spc(n) | Tab(n) | expression charpos]* : objName tên đối tượng nhận kết vẽ (Printer, Form, PictureBox), default form hành Spc(n) qui định n ký tự trống in Tab(n) qui định n ký tự Tab in ra, Tab đưa pointer in qua phải thêm cột (vị trí cột qui định trước) expression biểu thức chuỗi hay số cần in charpos qui định vị trí in liệu Nếu charpos = ";" liệu in in liền Nếu charpos = "," thêm Tab trước in liệu kế Nếu khơng có charpos sau vị trí in dời xuống đầu dòng Thơng tin font chữ phải thiết lập trước thủ tục Print thông qua thuộc tính sau đối tượng vẽ : FontName, FontSize, FontItalic, FontBold, Nên thiết lập thuộc tính CurrentX, CurrentY để qui định rõ ràng vị trí in lệnh Print Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 273 Thí dụ việc dùng thủ tục Print Đoạn code sau hiển thị hàng văn hộp thoại About Box chỉnh : Const strAbout1 = "Trinh MiniIE" Const strAbout2 = "Version 1.0" Const strAbout3 = "Written by : Nguyen Van Hiep" Private Sub Form_paint() ScaleMode = vbPixels ' Xác định vị trí để chuỗi strAbout1 nằm hộp thoại CurrentX = (ScaleWidth - TextWidth(strAbout1)) / CurrentY = 40 Print strAbout1 ' Xác định vị trí để chuỗi strAbout2 nằm hộp thoại CurrentX = (ScaleWidth - TextWidth(strAbout2)) / CurrentY = 60 Print strAbout2 ' Xác định vị trí để chuỗi strAbout3 nằm hộp thoại CurrentX = (ScaleWidth - TextWidth(strAbout3)) / CurrentY = 80 Print strAbout3 End Sub Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 274 137 Function Format : chỉnh dạng liệu trước in Ta thường muốn format liệu số hay ngày tháng theo yêu cầu riêng trước in VB hỗ trợ chức thơng qua hàm Format có cú pháp sau : Format (expression [,format[,firstdayofweek[,firstweekofyear]]]) : expression biểu thức số hay ngày tháng cần format format chuỗi ký tự định dạng hay tên gợi nhớ miêu tả chuỗi định dạng sẵn có VB firstdayofweek firstweekofyear qui định ngày đầu tuần tuần đầu năm cần cho định dạng liệu ngày tháng Một số ký tự thường dùng chuỗi định dạng : miêu tả vị trí ký số, số khơng hiển thị hết vùng định đạng thêm số trước sau giá trị số cho đầy vùng định dạng # miêu tả vị trí ký số, khơng in số trước sau giá trị số miêu tả vị trí dấu ngăn đơn vị (qui định locale Windows) , miêu tả vị trí dấu ngăn đơn vị ngàn (qui định locale) - + % ( ) space miêu tả chỉnh xác ký tự tương ứng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 275 Thí dụ hàm Format Thí dụ chỉnh dạng liệu số : Format syntax Result Format(8315.4, "00000.00") 08315.40 Format(8315.4, "#####.##") 8315.4 Format(8315.4, "##,##0.00") 8,315.40 Format(315.4,"$##0.00") $315.40 Thí dụ chỉnh dạng liệu ngày tháng : Format(Now, "m/d/yy") 1/27/93 Format(Now, "dddd, mmmm dd, yyyy") Wednesday, January 27, 1993 Format(Now, "d-mmm") 27-Jan Format(Now, "mmmm-yy") January-93 Format(Now, "hh:mm AM/PM") 07:18 AM Format(Now, "h:mm:ss a/p") 7:18:00 a Format(Now, "d-mmmm h:mm") 3-January 7:18 Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 276 138 Thủ tục PSet : vẽ điểm thiết bị xuất luận lý Thủ tục có dạng sau : [objName.]PSet [Step] (x, y), [color] : objName tên đối tượng nhận kết vẽ (Printer, Form, PictureBox), default form hành (x,y) miêu tả tọa độ vị trí điểm cần vẽ thiết bị luận lý Nếu từ khóa Step dùng (x,y) tọa độ tương đối so với vị trí hành xác định thuộc tính CurrentX, CurrentY đối tượng vẽ Nếu từ khóa Step khơng dùng (x,y) tọa độ so với điểm gốc (0,0) color giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB (hoặc dùng hàm QBColor() dùng hàm RGB(r,g,b) để xác định màu vẽ) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 277 Thủ tục Line : vẽ đoạn thẳng/box thiết bị xuất luận lý Thủ tục có dạng sau : [objName.]Line [Step] (x1, y1) - [Step] (x2, y2), [color], [B][F] : objName tên đối tượng nhận kết vẽ (Printer, Form, PictureBox), default form hành (x1,y1) miêu tả tọa độ điểm đầu đoạn thẳng cần vẽ đối tượng nhận kết Nếu từ khóa Step dùng trước tọa độ (x1,y1) tọa độ tương đối so với vị trí hành xác định thuộc tính CurrentX, CurrentY đối tượng nhận kết Nếu từ khóa Step khơng dùng (x1,y1) tọa độ so với điểm gốc (0,0) (x2,y2) miêu tả tọa độ điểm cuối đoạn thẳng cần vẽ Ý nghĩa (x2,y2) giống (x1,y1) color giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB thơng số B thủ tục Line vẽ đoạn thẳng qua điểm có thơng số B, thủ tục Line vẽ hình chữ nhật mà đỉnh chéo xác định điểm Trong trường hợp có thơng số F, hình chữ nhật tô màu với màu vẽ, ngược lại thuộc tính FillColor FillStyle đối tượng nhận kết qui định màu tô Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 278 139 Thủ tục Circle : vẽ hình tròn/ellipse thiết bị xuất luận lý Thủ tục có dạng sau : [objName.]Circle [Step] (x, y), radius, [color, start, end, aspect] : objName tên đối tượng nhận kết vẽ (Printer, Form, PictureBox), default form hành (x,y) miêu tả tọa độ tâm điểm vòng tròn/ellipse/arc cần vẽ đối tượng nhận kết Nếu từ khóa Step dùng trước tọa độ (x,y) (x,y) tọa độ tương đối so với vị trí hành xác định thuộc tính CurrentX, CurrentY đối tượng nhận kết Nếu từ khóa Step khơng dùng (x,y) tọa độ so với điểm (0,0) radius miêu tả bán kính color giá trị kiểu Long miêu tả màu vẽ theo hệ màu RGB start, end miêu tả góc xác định điểm đầu cuối arc theo đơn vị radian (default điểm đầu điểm cuối 2π) aspect miêu tả tỉ lệ kích thước dọc/ngang ellipse (default để vẽ vòng tròn) Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 279 Các thuộc tính qui định thơng số vẽ Khi ta gọi method vẽ PSet, Line, Circle, PaintPicture đối tượng vẽ (Printer, Form, PictureBox) method dùng thuộc tính sau để qui định thông số vẽ chúng : CurrentX, CurrentY miêu tả tọa độ điểm hành, dùng làm gốc tọa độ cho điểm vẽ có dùng từ khóa Step kèm theo điểm vẽ FillStyle, FillColor xác định mẫu tơ màu tơ phần tử có diện tích (box, circle) BackColor xác định màu đối tượng ForeColor xác định màu để hiển thị text hay vẽ biên phần tử (line, box, circle) DrawMode xác định cách thức vẽ (vbBlackness, vbWhiteness, vbInvert ) DrawStyle xác định mẫu vẽ đường vẽ (line, box, circle) DrawWidth xác định độ dày đường vẽ (line, box, circle) Ta đọc/hiệu chỉnh lại giá trị thuộc tính theo u cầu Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 280 140 Chi tiết thuộc tính qui định đơn vị tính kích thước Thuộc tính ScaleMode miêu tả đơn vị tính kích thước với qui định sau : Constant Setting Description vbUser vbPoints Indicates that one or more of the ScaleHeight, ScaleWidth, ScaleLeft, and ScaleTop properties are set to custom values (Default)Twip (1440 twips per logical inch; 567 twips per logical centimeter) Point (72 points per logical inch) vbTwips vbPixels Pixel (smallest unit of monitor or printer resolution) vbCharacters vbInches vbMillimeters vbCentimeters vbHimetric vbContainerPosition vbContainerSize 10 Character (horizontal = 120 twips per unit; vertical = 240 twips per unit) Inch Millimeter Centimeter HiMetric Units used by the control's container to determine the control's position Units used by the control's container to determine the control's size Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 281 Chi tiết thuộc tính miêu tả màu Mỗi màu chế độ TrueColor tổng hợp từ thành phần màu Red Green - Blue Trọng số thành phần màu miêu tả giá trị Byte (từ đến 255) Xác định màu xác định thành phần màu Các thuộc tính BackColor, ForeColor, FillColor có giá trị miêu tả màu dạng RGB với qui định sau : Color Red Value Green Value Blue Value Black 0 Blue 0 255 Green 255 Cyan 255 255 Red 255 0 Magenta 255 255 Yellow 255 255 White 255 255 255 Thí dụ ta viết lệnh gán : Form1.BackColor = RGB(0,0,0) để thiết lập màu form tên Form1 màu đen Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 282 141 Chi tiết thuộc tính miêu tả màu (tt) Nếu muốn dùng 16 màu QBasic (version Basic Microsoft chạy DOS), ta dùng hàm QBColor Bảng sau liệt kê 16 màu : Number Color Number Color Black Gray Blue Light Blue Green 10 Light Green Cyan 11 Light Cyan Red 12 Light Red Magenta 13 Light Magenta Yellow 14 Light Yellow White 15 Bright White Thí dụ ta viết lệnh gán : Form1.BackColor = QBColor(15) để thiết lập màu form tên Form1 màu trắng sáng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 283 Chi tiết thuộc tính mẫu tơ Thuộc tính FillStyle có giá trị miêu tả mẫu tô với qui định sau : Constant Setting Description VbFSSolid Solid VbFSTransparent (Default) Transparent VbHorizontalLine Horizontal Line VbVerticalLine Vertical Line VbUpwardDiagonal Upward Diagonal VbDownwardDiagonal Downward Diagonal VbCross Cross VbDiagonalCross Diagonal Cross Thí dụ ta viết lệnh gán : Form1.FillStyle = VbVerticalLine để thiết lập mẫu tô phần tử form đường thẳng đứng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 284 142 Chi tiết thuộc tính mẫu vẽ đường viền Thuộc tính DrawStyle có giá trị miêu tả mẫu vẽ đường viền với qui định sau : Constant Setting Description VbSolid (Default) Solid VbDash Dash VbDot Dot VbDashDot Dash-Dot VbDashDotDot Dash-Dot-Dot VbInvisible Transparent VbInsideSolid Inside Solid Thí dụ ta viết lệnh gán : Form1.DrawStyle = VbDash để thiết lập mẫu vẽ đường viền phần tử form đường gạch-gạch dài Lưu ý thuộc tính DrawStyle có nghĩa theo bảng ta thiết lập thuộc tính DrawWidth = Trong trường hợp DrawWidth > DrawStyle tạo nét vẽ liên tục Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 285 Function PaintPicture : vẽ ảnh bitmap Mỗi đối tượng vẽ có method PaintPicture cho phép ta vẽ ảnh bitmap Cú pháp sau : [objName.]PaintPicture picture, dx, dy, dw, dh, sx, sy, sw, sh, opcode : objName tên Form, PictureBox hay Printer, khơng có form hành vẽ picture ảnh bitmap gốc dùng để vẽ dx, dy toạ độ đỉnh trái vùng chứa ảnh vẽ đối tượng vẽ dw, dh độ rộng, độ cao vùng chứa ảnh vẽ đối tượng vẽ sx, sy toạ độ đỉnh trái vùng chứa ảnh ảnh gốc sw, sh độ rộng, độ cao vùng chứa ảnh ảnh gốc opcode miêu tả hành vi đưa ảnh gốc vào đối tượng vẽ, ta thường dùng mã sau : vbSrcCopy : copy ảnh gốc vào vị trí qui định đối tượng vẽ vbSrcPaint : Or pixel ảnh gốc với bit đối tượng vẽ tương ứng vbSrcInvert : Xor pixel ảnh gốc với bit đối tượng vẽ tương ứng vbSrcAnd : And pixel ảnh gốc với bit đối tượng vẽ tương ứng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 286 143 Thí dụ việc dùng function PaintPicture Tạo form trống, 'add' điều khiển PictureBox chứa ảnh gốc vào form, set thuộc tính Visible = False, thuộc tính Picture = đườn dẫn file ảnh, viết đoạn code sau cho form : Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Form_Load() AutoRedraw = False ' để VB gọi hàm xử lý biến cố Paint End Sub Private Sub Form_Paint() ' hiển thị ảnh chạy từ từ sang phải Dim x As Integer, y As Integer ScaleMode = vbPixels ' đơn vị tính form pixel Picture1.ScaleMode = vbPixels ' đơn vị tính ảnh gốc pixel x=0 ' thiết lập vị trí đầu ảnh y = 50 While True PaintPicture Picture1, x, y, 60, 60, 0, 0, , , vbMergePaint ' vẽ ảnh vị trí x,y DoEvents ' cho phép ứng dụng đáp ứng kiện Sleep (10) ' ngủ chờ 10ms Line (x, y)-(x + 60, y + 60), BackColor, BF ' xóa ảnh vừa vẽ x=x+4 ' di chuyển vị trí bên phải pixel If (x - 60 > ScaleWidth) Then x = ' ảnh đạt lề phải set trái Wend End Sub Môn : Tin học Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Slide 287 10.5 Vấn đề in ấn VB Trong chương trình VB, ta in thông tin máy in cách dùng cách sau : dùng method vẽ văn bản, đồ họa ảnh bitmap lên form theo ý muốn gọi method PrintForm để in form kết máy in Đây cách dễ dàng để kiểm tra kết trước in giấy thực sự, kết có độ phân giải khơng cao (vì trùng với độ phân giải hình) dùng method vẽ văn bản, đồ họa ảnh bitmap theo ý muốn trực tiếp lên đối tượng Printer method điều khiển NewPage & EndDoc để xuất kết trực tiếp máy in default Windows Cách cho kết có độ phân giải với máy in (thường cao so với độ phân giải hình) dùng lệnh Set Printer = Printers(n) để chọn máy in cụ thể danh sách driver máy in có Windows dùng method vẽ văn bản, đồ họa ảnh bitmap theo ý muốn trực tiếp lên đối tượng Printer method điều khiển NewPage & EndDoc để xuất kết trực tiếp máy in vừa chọn Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 288 144 ... point End If End Sub Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 271 10. 4 Vẽ văn đồ họa lên đối tượng giao diện Các... lý biến cố, form khơng Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương trình Slide 266 133 10. 3 Giao tiếp với chuột thông qua đối tượng... thông tin phụ để xử lý chi li hơn, bạn nên dùng thủ tục xử lý kiện MouseDown hay MouseUp Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Tin học Chương 10: Tương tác người dùng & chương