I E= T*R
Kiến trúc tương tác giữa người dùng & ứ ng dụng VB (tt)
Xem hình vẽcủa slide trước (miêu tảkiến trúc tương tác giữa người dùng & ứng dụng VB), ta thấy :
cấp thấp nhất là các thiết bị phần cứng, mỗi thiết bị có tính chất riêng và khác với các thiết bịkhác (ngay cảcùng loại, cùng hãng nhưng khác model). cấpdevice driver điều khiển và giao tiếp trực tiếp với phần cứng nhưng che
dấu mọi tính chất chi tiết của phần cứng, nó cung cấp cho cấp trên 1 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 của 1 hãng cần có device driver riêng.
cấp HĐHxử lý các chức năng luận lý (đệm dữliệu, xửlý sai,...) trước khi nhờ
device driver giao tiếp trực tiếp với phần cứng. Windows che dấu các loại phần cứng và tạo ra những thiết bịtrừu tượngđể ứng dụng truy xuất chúng dễ
dàng vàđộc lập với loại thiết bị(đối tượng Printer, Screen, Mouse, Keyboard). VB tạo ra những đối tượng giao diện cao cấp và dễ dùng : mỗi đối tượng
giao diện (form, window, listbox,...) đều có thể giao tiếp trực tiếp với người dùng để nhập/xuất dữ liệu, chờ nhận sự kiện hay chủ động thông báo cho user.
Chương 10: Tương tác giữa người dùng & chương trình
Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 262
Kiến trúc tương tác giữa người dùng & ứng dụng VB (tt)
Sau khiđã biết kiến trúc giao tiếp I/O của ứng dụng VB, khi cần giao tiếp với người dùng, ta nên :
dùng các đối tượng giao diện cao cấp (định sẵn của VB hay ActiveX Control).
trong 1 số trường hợp cần thiết ta sẽdùng cácđối tượng của Windows như
Printer và Screen.
trong 1 số trường hợp tối cần thiết ta mới gọi các hàm trong giao tiếp của device driver.
và tuyệt đối không nên truy xuất trực tiếp phần cứng thiết bị I/O vì rất khó khăn, không an toàn, dễbịtranh chấp với cácứng dụng chạyđồng thời.
Tương tác với người dùng thông qua cácđối tượng giao diệnđược thực hiện như
sau :
nhập liệu/nhận lệnh thông qua các thủ tục xử lý sự kiện của phần tử giao diện tươngứng.
xuất kết quả/thông báo bằng cách gán kết quảvào thuộc tính tươngứng của
đối tượng giao diện hay dùng các 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
Slide 263
10.2 Giao tiếp với keyboard qua cácđối tượng giao diện
Mặc dù có thểcó nhiều phần tửgiao diện cùngđược hiển thịtrên màn hình tại từng thởiđiểm nhưng chỉcó 1 phần tửgiao diệnđược giao tiếp với thiết bịI/O, ta gọi phần tửgiao diện này là 'active' hay được 'focus'.
Liên quanđến việcấn thả1 phím, VB sẽtạo ra 3 sựkiện sauđây và gởi vềcho phần tử được 'focus' hiện hành :
KeyDown : sự kiện xảy ra khi người sử dụng bấm (ấn xuống) bất kỳ một phím nào trên bàn phím.
KeyUp: sựkiện xảy ra khi người sửdụng thảphím vừaấn ra.
KeyPress: sựkiện xảy ra khi người sửdụngấn/thảbất kỳmột phím nào trên bàn phím mà tạo rađược 1 ký tựANSI.
Chương 10: Tương tác giữa người dùng & chương trình
Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM
Môn : Tin học
Slide 264
Thủtục xửlý sự kiện KeyDown, KeyUp & KeyPress
Thủtục có dạng sau :
Private SubControlName_KeyDown (KeyCode as Integer, Shift as Integer).
vàPrivate SubControlName_KeyUp (KeyCode as Integer, Shift as Integer).
trongđó :
ControlNamelà tên củađiều khiển nhận sựkiện keydown/keyup. KeyCode là mã "virtual code" của phímđượcấn/thả.
Shift là giá trị miêu tảtrạng tháiấn giữcác phímđiều khiển (là một dãy bit với bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
Thủtục KeyPress có dạng sau :
Private SubControlName_KeyPress (KeyAscii As Integer)
trongđó :
ControlNamelà tên củađiều khiển nhận sựkiện keypress. KeyAscii là mã ký tựANSI của phímđượcấn/thả.
Mỗiđối tượng có thủtục xửlý biến cốriêng, thủtục này cũng là method củađố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
Slide 265
Private Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer) Dim ShiftDown, AltDown, CtrlDown, Txt
ShiftDown = (Shift And vbShiftMask) > 0 AltDown = (Shift And vbAltMask) > 0 CtrlDown = (Shift And vbCtrlMask) > 0
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 = 0 Then
Txt = "F2." End If
Text1.Text = "You pressed " & Txt End If
End Sub