§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin

NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

Ch−¬ng 3
LÂP TRÌNH XÚ LÝ GIAO DIÊN


3.1. Thùc ®¬n (Menu)
Trong VB, Menu còng lµ mét lo¹i ®iÒu khiÓn. Nh−ng Windows sÏ kiÓm
so¸t vµ ®iÒu khiÓn ho¹t ®éng cña menu, lËp tr×nh viªn chØ qu¶n lý phÇn xö lý
c¸c sù kiÖn mµ th«i.
Cã 2 lo¹i menu:
• Menu th¶ xuèng (drop-down menu) : lµ d¹ng th«ng dông nhÊt.
• Menu bËt ra (pop-up menu) : th−êng hiÖn thÞ khi ta Ên nót ph¶i
chuét.
3.1.1. T¹o mét menu drop-down
Më mét ®Ò ¸n míi.
Thùc hiÖn lÖnh Tools\Menu Editer (Ctrl+E)

25
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

VÝ dô t¹o menu th¶ xuèng nhiÒu tÇng nh− sau:

Ta khai b¸o nh− sau:

C¸c thuéc tÝnh cña menu:
Caption: D·y ký tù trªn menu, vÝ du: File, Open, Save ...
NÕu ký tù lµ dÊu - th× nã ®−îc dïng ®Ó t¸ch nhãm.
Name: Tªn biÕn menu (duy nhÊt).
Index: §Ó ph©n biÖt c¸c tªn trïng nhau.
26
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

Shortcut: Thùc hiÖn nhanh, vÝ dô Ên Ctrl+C thay cho chän Copy.
Checked: HiÓn thÞ dÊu chän (3) tr−íc menu.
Enable: NÕu thuéc tÝnh nµy kh«ng ®−îc chän, môc nµy cã mµu
x¸m vµ ng−êi dïng kh«ng thÓ chän ®−îc.
Visible: NÕu thuéc tÝnh nµy kh«ng ®−îc chän, môc nµy sÏ kh«ng
hiÖn trªn mµn h×nh.
NegotiatePsition: Qu¶n lý vÞ trÝ g¾n menu khi sö dông c¸c ®èi t−îng
ActiveX.
Windows List: T¹o danh s¸ch c¸c cöa sæ trong giao diÖn MDI.
3.1.2. Xö lý sù kiÖn chän menu
Private sub Tªn_biÕn_Menu_Click()
...
End Sub
3.2. Hép ®èi tho¹i (Dialog Box)
Hép ®èi tho¹i hay cßn gäi t¾t lµ hép tho¹i lµ mét trong nh÷ng c¸ch thøc
®Ó Windows giao tiÕp víi ng−êi sö dông. Cã c¸c kiÓu hép tho¹i sau:
• Th«ng ®iÖp.
• Hép nhËp.
• C¸c hép tho¹i th«ng dông (dïng chung).
• Hép tho¹i hiÖu chØnh.
3.2.1. Th«ng ®iÖp (Message Box)
Hép tho¹i th«ng ®iÖp lµ lo¹i hép tho¹i ®¬n gi¶n nhÊt, gåm hai lo¹i:
• ChØ cung cÊp th«ng tin.
• T−¬ng t¸c víi ng−êi dïng.
Sau ®©y lµ mét hép tho¹i th«ng ®iÖp cña Microsoft Word tr−íc khi ®ãng
mét tµi liÖu ®· cã söa ch÷a mµ ch−a ®−îc ghi l¹i.
27
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

VÝ dô trong ®Ò ¸n trªn, ta cã thÓ xö lý sù kiÖn ®ãng tÖp nh− sau:

Private Sub Flie_Close_Click()
MsgBox "Do you want to save the changes ?",
vbExclamation + vbYesNoCancel, "Data Analysis"
End Sub
C¸c lo¹i th«ng ®iÖp:
H»ng Gi¸ trÞ ThÓ hiÖn cã c¸c nót
vbOKOnly 0 OK
vbOKCancel 1 OK Cancel
vbAboutRetryIgnore 2 About Retry Ignore
vbYesNoCancel 3 Yes No Cancel
vbYesNo 4 Yes No
vbRetryCancel 5 Retry Cancel
B¶ng1: C¸c h»ng vµ c¸c gi¸ trÞ cña c¸c nót ®−îc Ên
C¸c biÓu t−îng trªn th«ng ®iÖp:
H»ng Gi¸ trÞ ThÓ hiÖn Gi¶i thÝch

vbCritcal

16

9
Dïng cho th«ng b¸o khi thùc
hiÖn kh«ng thµnh c«ng mét
viÖc nµo ®ã.
vbQuestion 32
?
Dïng cho nh÷ng c©u hái yªu
cÇu ng−êi dïng ph¶i lùa chän.
vbExclamation 48
!
Dïng cho c¸c th«ng b¸o cña
ch−¬ng tr×nh.
vbInformation 64 i
Dïng cho c¸c th«ng b¸o cung
cÊp th«ng tin cho ng−êi dïng.
B¶ng 2: C¸c h»ng vµ c¸c gi¸ trÞ cña c¸c biÓu t−îng
X©y dùng c¸c th«ng sè cho MsgBox:
- MsgBox cã 3 th«ng sè, d¹ng c¬ b¶n nh− sau:
28
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

MsgBox Message [, DialogType [, Title]]
Trong ®ã:
• Message lµ d·y ký tù, nã chÝnh lµ lêi th«ng b¸o trong hép
tho¹i.
• DialogType lµ sè nguyªn quy ®Þnh kiÓu hép tho¹i.
VÝ dô: vbExclamation + vbYesNoCancel
• Title lµ d·y ký tù chØ tiªu ®Ò hép tho¹i.
VÝ dô: MsgBox "Do you want to save the changes ?",
vbExclamation + vbYesNoCancel, "Data Analysis"

- Hµm MsgBox còng cã c¸c th«ng sè nh− thñ tôc MsgBox:
MsgBox (Message [, DialogType [, Title]])
§iÓm kh¸c duy nhÊt lµ hµm MsgBox tr¶ vÒ gi¸ trÞ tuú ng−êi dïng bÊm vµo
nót nµo trong hép tho¹i.
B¶ng sau cho biÕt c¸c gi¸ trÞ tr¶ vÒ (h»ng x©u hay sè) cña hµm MsgBox
øng víi c¸c nót ®−îc bÊm:
H»ng Gi¸ trÞ Nót ®−îc bÊm
vbOK 1 OK
vbCANCEL 2 Cancel
vbABOUT 3 About
vbRETRY 4 Retry
vbIGNORE 5 Ignore
vbYES 6 Yes
vbNO 7 No
B¶ng 3: Gi¸ trÞ cña hµm MsgBox tr¶ vÒ øng víi c¸c nót ®−îc Ên
VÝ dô: TiÕp tôc ®Ò ¸n trªn.
Private Sub File_Close_Click()
Dim TL
29
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

TL = MsgBox("Do you want to save the changes ?",
vbExclamation + vbYesNoCancel, "Data Analysis")
Select Case TL
Case vbYes
MsgBox "B¹n ®· Ên nót Yes"
Case vbNo
MsgBox "B¹n ®· Ên nót No"
Case vbCancel
MsgBox "B¹n ®· Ên nót Cancel"
End Select
End Sub

3.2.2. Hép nhËp (Input Box)
Hép tho¹i nhËp cã d¹ng:
InputBox(prompt [, Title] [, Default] [, XPos] [, YPos]
[HelpFile] [, Context]) As String
VÝ dô:
Private Sub Form_Load()
Dim mk As String
mk = InputBox("Vµo tªn ng−êi sö dông", "Password")
MsgBox "Chµo " & mk, vbOKCancel, "Data Analysis"
InputBox
End Sub

3.2.3. Hép tho¹i dïng chung (Common Dialog)
C¸c hép tho¹i dïng chung n»m trong th− viÖn liªn kÕt ®éng DLL cña
Windows. Cã 6 hép tho¹i dïng chung lµ:
1. Më tÖp (File Open)
2. Ghi tÖp (File Save/Save As)
3. Chän mµu (Color)
4. Chän Font (Font)
5. In Ên (Print)
6. Trî gióp (Help)
§Ó ®−a ®iÒu khiÓn hép tho¹i dïng chung vµo ®Ò ¸n ta ph¶i lµm nh− sau:
- Trong Form thiÕt kÕ ®Ò ¸n, thùc hiÖn lÖnh Project\Components,
hép tho¹i components hiÖn ra:
30
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic


- §¸nh dÊu kiÓm vµo môc Microsoft Common Dialog Control 6.0
- BÊn nót Close
Khi ®ã trªn thanh c«ng cô xuÊt hiÖn biÓu t−îng , ®ã ch×nh lµ biÓu
t−îng ®iÒu khiÓn CommonDialog.
§Ó ®−a nã vµo Form cña ®Ò ¸n ta nh¸y ®óp chuét lªn nã.
B¶ng sau tr×nh bµy tªn c¸c hép tho¹i vµ ph−¬ng thøc t−¬ng øng cña
chóng:
Tªn hép tho¹i Ph−¬ng thøc
Open File ShowOpen
Save File ShowSave
Color ShowColor
Font ShowFont
Print ShowPrinter
Help ShowHelp
VÝ dô sö dông hép tho¹i më tÖp:
Private Sub File_Open_Click()
31
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

With CommonDialog1
.FileName = ""
.CancelError = False
.Filter = "All Files (*.*)|*.*|Text Files
(*.txt)|*.txt"
.FilterIndex = 1
.ShowOpen
tentep = .FileName
End With

MsgBox "B¹n ®· chän tÖp " + tentep, ,
"Data Analysis"
End Sub












C¸c thuéc tÝnh cña CommonDialog:










32
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

C¸c thuéc tÝnh cña hép tho¹i Open/Save File
Thuéc tÝnh
ý nghÜa
FileName Tªn tÖp ®Çy ®ñ ®−îc chän, gåm c¶ ®−êng dÉn.
FileTitle Tªn tÖp chän, kh«ng tÝnh ®−êng dÉn.
Filter C¸c kiÓu tÖp mµ hép tho¹i cã thÓ hiÓn thÞ.
FilterIndex Bé läc lo¹i tÖp hiÓn thÞ trong hép tho¹i.
Flags Qu¶n lý ho¹t ®éng cña hép tho¹i.
InitDir Th− môc sÏ ®−îc hiÓn thÞ.
MaxFileSize Sè ký tù tèi ®a cña tªn tÖp ®−îc hiÓn thÞ.
DialogTitle Tiªu ®Ò cña hép tho¹i.
CancelError NhËn gi¸ trÞ lµ True | Falsse, nÕu lµ True cho phÐp b¾t lçi
nÕu ng−êi sö dông bÊm nót Cancel.
3.3. Thanh c«ng cô (Toolbar)
Thanh c«ng cô lµ thanh chøa c¸c biÓu t−îng lÖnh mµ cã thÓ thùc hiÖn
chóng b»ng c¸ch bÊm chuét.
TiÕp ®Ò ¸n trªn, ta cÇn t¹o thanh c«ng cô nh− sau:

§Ó thªm thanh c«ng cô vµo ®Ò ¸n ta cã thÓ lµm nh− sau:
- Trong Form thiÕt kÕ ®Ò ¸n, thùc hiÖn lÖnh Project\Components,
hép tho¹i components hiÖn ra.
- §¸nh dÊu kiÓm vµo môc Microsoft Windows Common Control 6.0
33
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

- BÊn nót Close trong hép tho¹i components
- Nh¸y ®óp chuét lªn biÓu t−îng Toolbar vµ biÓu t−îng ImageList.
- Thªm c¸c biÓu t−îng (Icon) vµo ImageList (nÕu ch−a cã c¸c biÓu
t−îng nµy th× cã thÓ dïng tr×nh Paint ®Ó t¹o ra.















- Thªm c¸c biÓu t−îng vµo thanh c«ng cô:
34
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

- Xong nh¸y chuét vµo nót OK ®Ó trë l¹i Form ®Ò ¸n.
- Nh¸y ®óp chuét lªn thanh c«ng cô trong ®Ò ¸n, råi nhËp m· tr×nh
nh− sau:
Private Sub Toolbar1_ButtonClick(ByVal Button As
MSComctlLib.Button)
Select Case Button.Index
Case 1
File_Open_Click
Case 2
File_Save_Click
End Select
End Sub

3.4. Thanh tr¹ng th¸i (Statusbar)
Thanh tr¹ng th¸i cho biÕt c¸c t×nh tr¹ng hiÖn t¹i cña Form ®Ò ¸n. §Ó ®−a
thanh tr¹ng th¸i vµo Form ta lµm nh− sau: Nh¸y ®óp chuét lªn biÓu t−îng
StatusBar trong thanh c«ng cô cña Form thiÕt kÕ ®Ò ¸n.

§Ó ®−a vµo thanh tr¹ng th¸i c¸c t×nh tr¹ng cña Form ®Ò ¸n ta ph¶i lµ nh−
sau:
35
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

BÊm phÝm ph¶i chuét lªn thanh tr¹ng th¸i ®Ó hiÖn menu, xong chän
Properties, hép tho¹i Property Pages cña thanh tr¹ng th¸i sÏ hiÖn ra cho ta
chän vµ thªm c¸c th«ng sè:

3.5. Giao diÖn ®¬n/®a tµi liÖu (SDI/MDI)
Giao diÖn cña ch−¬ng tr×nh nh− ttªn gäi lµ ®¬n tµi liÖu (Single
Document Interface – SDI), t¹i mét thêi ®iÓm chØ cã mét cöa sæ. VÝ dô
ch−¬ng tr×nh SDI: Notepad, Wordpad, Internet Explorer ...
Ch−¬ng tr×nh giao diÖn ®a tµi liÖu (Multiple Document Interface -MDI)
cã nhiÒu cöa sæ cïng ®−îc më vµ s½n sµng lµm viÖc, tÊt c¶ c¸c cöa sæ nµy cã
chung mét cöa sæ cha duy nhÊt. VÝ dô c¸c ch−¬ng tr×nh MDI: Microsoft
Word, Microsoft Excel ...
VÝ dô t¹o mét ch−¬ng tr×nh MDI trong VB:
- Khëi ®éng VB.
- T¹o mét ®Ò ¸n míi.
- Thªm vµo Form nµy cña ®Ò ¸n mét hép so¹n th¶o (Text Box), tªn cña
Form nµy ®Æt lµ frmCon. G¸n thuéc tÝnh MDIChild cña frmCon lµ
True ®Ó quy ®Þnh nã lµ Form con cña mét Form Cha.
36
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic


- Thùc hiÖn lÖnh Project\Add MDI Form ®Ó thªm vµo ®Ò ¸n mét Form
cha vµ ®Æt tªn lµ frmMDI.
- Thªm vµo frmMDI c¸c thùc ®¬n, thanh c«ng cô, thanh tr¹ng th¸i,
c¸c ®iÒu khiÓn CommonDialog, ImageList ...

37
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic


- Thªm m· tr×nh vµo cöa sæ Code cña form frmMDI:

Option Explicit
Dim frmNew As frmCon
Dim tentep As String

Private Sub MDIForm_Load()
LoadNewForm
End Sub

Private Sub LoadNewForm()
Static numF As Long
numF = numF + 1
Set frmNew = New frmCon
frmNew.Caption = "Document " & numF
frmNew.Show
End Sub

Private Sub FileNew_Click()
LoadNewForm
End Sub
38
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic


Private Sub FileOpen_Click()
With CommonDialog1
.CancelError = False
.Filter = "All Files (*.*)|*.*|Text Files
(*.txt)|*.txt|Dat Files (*.dat)|*.dat"
.FilterIndex = 1
.ShowOpen
tentep = .FileTitle
End With
MsgBox "B¹n ®· chän tÖp " + tentep, ,
"Data Analysis"
End Sub

Private Sub FileSave_Click()
MsgBox "Ch−a cµi ®Æt"
End Sub

Private Sub FileClose_Click()
If Not ActiveForm Is Nothing Then
Set frmNew = Nothing
Unload ActiveForm
End If
End Sub

Private Sub Win_Cascade_Click()
frmMDI.Arrange 0
End Sub
Private Sub Win_Horizontally_Click()
frmMDI.Arrange 1
End Sub
Private Sub Win_Vertically_Click()
frmMDI.Arrange 2
End Sub
Private Sub FileExit_Click()
End
End Sub

39
§¹i häc Th¸i Nguyªn – Tr−êng §HSP – Khoa To¸n -Tin
NguyÔn M¹nh §øc - LËp tr×nh trªn Windows víi Visual Basic

40
Private Sub Toolbar1_ButtonClick(ByVal Button As
MSComctlLib.Button)
Select Case Button.Index
Case 1
FileNew_Click
Case 2
FileOpen_Click
Case 3
FileSave_Click
End Select
End Sub
- Ch¹y thö ta cã ch−¬ng tr×nh so¹n th¶o v¨n b¶n ®¬n gi¶n:













3.6. Mét sè ®iÒu khiÓn kh¸c
• Label: nh·n
• CheckBox, Optionbutton: hép kiÓm, nót tuú chän
• Frame: hép khung
• PictureBox, Image: xö lý ¶nh
• Timer: ®Þnh thêi gian.