Khoa Công ngh Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Tin hc
Slide 259
10.1 Tng quát vtương tác giangười dùng & chương trình
Trong lúc chương trình chy, thường tương tác vingười dùng. Stương tác
gm2 hotđộng chính :
chnhndliu do người dùng cung cphay chnhnlnh cangười dùng
để thc thi 1 chcnăng nào đó.
hinththông báo và/hockếtqutính toán ra màn hình/máy in để người
dùng biếtvàsdng.
Stương tác giangườidùngvàmáytínhđượcthchin thông qua các thiếtb
nhp/xut(thiếtbI/O - input/output) nhưbàn phím/chutđể nhpdliuhay
lnh, màn hình/máy in để xutkếtquhay thông báo...
Hincóhàngtrăm hãng khác nhau chếtothiếtbI/O cho máy PC, mi hãng
chếtortnhiu model cacùng1 thiếtb(thí dhãng HP đãchếrt nhiu
model máy in phun mc, máy in laser,...). Mi model thiếtbcatng hãng
nhng tính chtvt riêng khác vi các model khác.
Để giúp ngườilptrìnhtruyxutcácthiếtbI/O ddàng, độclpvitínhcht
phncng cathiếtb, HĐH Windows và VB đãchedumitínhchtphn
cng cacácthiếtb cung cp cho ngườilp trình 1 giao tiếpsdng duy
nht, độclpvithiếtb.
Chương 10: Tương tác giangườ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 hc
Slide 260
Kiếntrúctương tác giangười dùng & ng dng VB
Driver Keyboard
Driver
Mouse
Driver
Printer
Driver
ViewSonic
Monitor
AnyKey
Keyboard
Logitech
Mouse HP Laser 5
Screen Object Keyboard Mouse
Windows
My Visual Basic Application
ng dng giao tiếp
vI các thiết btru
tượng thông qua
Windows
Windows to &
qun lý các thiết
btru tượng
Windows giao tiếp
vI ác device
driver thiết b
Các driver giao
tiếp vI các thiết
bvt lý
Printer Object
Chương 10: Tương tác giangườ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 hc
Slide 261
Kiếntrúctương tác giangườidùng& ng dng VB (tt)
Xem hình vca slide trước(miêutkiếntrúctương tác giangười dùng & ng
dng VB), ta thy:
cpthpnhtlàcácthiếtbphncng, mithiếtb tính cht riêng
khác vicácthiếtbkhác (ngay ccùng loi, cùng hãng nhưng khác model).
cpdevice driver điukhinvàgiaotiếptrctiếpviphncng nhưng che
dumi tính chtchi tiếtcaphncng, nó cung cpchocp trên 1 giao tiếp
sdng phncng độclpvi tính chtphncng đóMi model thiếtb
phncng ca 1 hãng cn device driver riêng.
cp HĐHx các chcnăng lunlý(đệmdliu, x sai,...) trước khi nh
device driver giao tiếptrctiếpviphncng. Windows che ducácloi
phncng toranhng thiếtbtrutượng để ng dng truy xut chúng d
dàng độclpviloithiếtb(đốitượng Printer, Screen, Mouse, Keyboard).
VB toranhng đốitượng giao dincao cpvàddùng : miđốitượng
giao din (form, window, listbox,...) đềucóthgiao tiếptrctiếpvingười
dùng để nhp/xutdliu, chnhnskinhay chủđng thông báo cho
user.
Chương 10: Tương tác giangườ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 hc
Slide 262
Kiếntrúctương tác giangườidùng& ng dng VB (tt)
Sau khi đãbiếtkiếntrúcgiaotiếpI/O cang dng VB, khi cngiaotiếpvi
người dùng, ta nên :
dùng các đốitượng giao dincaocp(định snca VB hay ActiveX
Control).
trong 1 strường hpcnthiếttasdùng các đốitượng ca Windows như
Printer và Screen.
trong 1 strường hpticnthiếttamigi các hàm trong giao tiếpca
device driver.
tuytđối không nên truy xuttrctiếpphncng thiếtbI/O vì rtkhó
khăn, không an toàn, dbtranh chpvicácng dng chyđồng thi.
Tương tác vingười dùng thông qua các đốitượng giao dinđượcthchinnhư
sau :
nhpliu/nhnlnh thông qua các thtcx skincaphntgiao
dintương ng.
xutkếtqu/thông báo bng cách gán kếtquvào thuc tính tương ng ca
đốitượng giao din hay dùng các method vẽđhatng quát.
Chương 10: Tương tác giangườ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 hc
Slide 263
10.2 Giao tiếpvi keyboard qua các đốitượng giao din
Mcdùcóth nhiuphntgiao din cùng đượchinthtrênmànhìnhti
tng thiđimnhưng ch 1 phntgiao dinđưcgiaotiếpvithiếtbI/O, ta
giphntgiao dinnàylà'active' hay được'focus'.
Liên quan đếnvicnth1 phím, VB stora3 skinsauđây givcho
phntửđưc 'focus' hin hành :
KeyDown : skinxyrakhingườisdng bm(nxung) btkmt
phím nào trên bàn phím.
KeyUp : skinxy ra khi ngườisdng thphím vanra.
KeyPress: skinxy ra khi ngườisdng n/thbtkmt phím nào trên
bàn phím torađược1 kýtANSI.
Chương 10: Tương tác giangườ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 hc
Slide 264
Thtcx skin KeyDown, KeyUp & KeyPress
Thtccódng sau :
Private Sub ControlName_KeyDown (KeyCode as Integer, Shift as Integer).
Private Sub ControlName_KeyUp (KeyCode as Integer, Shift as Integer).
trong đó:
ControlName tên cađiukhinnhnskin keydown/keyup.
KeyCode "virtual code" caphímđượcn/th.
Shift là giá trmiêu ttrng thái ngicác phím điukhin(làmt dãy bit
vi bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
ThtcKeyPresscódng sau :
Private Sub ControlName_KeyPress (KeyAscii As Integer)
trong đó:
ControlName tên cađiukhinnhnskinkeypress.
KeyAscii ký tANSI ca phím đượcn/th.
Miđốitượng thtcx biếncriêng, thtcnàycũng method cađối
tượng tương ng.
Chương 10: Tương tác giangườ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 hc
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
Thí dthtcx biếncKeyDown ca 1 textbox
Chương 10: Tương tác giangườ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 hc
Slide 266
Dùng thuc tính KeyPreview
Thường 1 form giao din(hpthoi) cha nhiuđiukhin bên trong Khi
thao tác phím trên 1 điukhin trong form thì skinsgichođiukhinhay
form ? Để qui định cthểđiu này, VB cung cpthuc tính KeyPreview cho
form, ta thxem/hiuchnh giá trcanónhlnh gán :
FormName.KeyPreview [= boolean_expr]
trong đó:
FormName tên ca form liên quan.
boolean_expr biuthclunlýcógiátrTrue/False.
Khi ta gán trlunlývàothuc tính caform thìnếu:
tr= True thì form snhnvàx biếnctrướcrimitiđiukhin.
tr= False thì điukhinnhnvàx biếnc, còn form thì không.
Chương 10: Tương tác giangườ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 hc
Slide 267
10.3 Giao tiếpvichut thông qua các đốitượng giao din
Tương tnhưbàn phím, khi người dùng thao tác chut, VB stora1 trong5
biếncsau đây givcho phntửđưc 'focus' hin hành :
MouseMove : skinxy ra khi ngườisdng di chuynchut.
MouseDown : skinxy ra khi ngườisdng nbtknút nào trên chut
(tùy loichut 1/2/3 nút).
MouseUp : skinxy ra khi ngườisdng thnút vanra.
Click : skinxyrakhingườisdng nvàthchut.
DblClick : skinxyrakhingườisdng 'Click' chut liên tchailn
trong 1 thigianđủ nh(do người dùng qui định chung cho môi trường
Windows).
Chương 10: Tương tác giangườ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 hc
Slide 268
Thtcx skin MouseDown & MouseUp
Thtccódng 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)
trong đó:
ControlName tên cađiukhinnhnskin MouseDown/MouseUp.
Button là giá trmiêu ttrng thái các nút cachutđượcn/th(là mtdãy
các bit vi bit 0 cho nút trái, bit 1 cho nút phi và bit 2 cho nút gia).
Shift là giá trmiêu ttrng thái ngicác phím điukhin(làmt dãy bit
vi bit 0 cho phím SHIFT, bit 1 cho phím CTRL, bit 2 cho phím ALT).
x, y miêu ttađộ (x,y) cavtrí chutđượcn/thtrên màn hình.
Chương 10: Tương tác giangười dùng & chương trình