Professional Documents
Culture Documents
Bai Tap Visual Basic Exe PDF
Bai Tap Visual Basic Exe PDF
Visual Basic
Trang 1
Chng 1 THIT K BIU MU DNG CC
IU KHIN
Mc tiu:
Chng ny gm cc bi tp nhm rn luyn cho sinh vin cc thao tc
cn thit cho php thit k cc ng dng n gin trong mi trng lp trnh
Visual Basic cng nh mt s k nng lp trnh c bn khi lm vic vi Visual
Basic.
Hc xong chng ny, sinh vin phi nm bt c cc vn sau:
- S dng cc iu khin thit k giao din trong Visual Basic.
- Vn dng cc cu trc lp trnh trong Visual Basic vit m lnh.
- S dng mt s cu trc d liu trong Visual Basic.
Kin thc c lin quan:
- Gio trnh Visual Basic; Chng 1, 2, 3, 4, 5.
Ti liu tham kho:
- Visual Basic 6 Certification Exam Guide - Chapter 1, Page 1;
Chapter 2, Page 41; Chapter 4, Page 89 - Dan Mezick & Scot Hillier -
McGraw-Hill - 1998.
TT. Visual Basic
I. S DNG MT S IU KHIN
I.1 Bi tp c hng dn
Bi tp 1I-1
THAO TC TRN LISTBOX
Bc 1: To th mc Basic\Bt1-1. To mt d n mi kiu Standard EXE, lu vo
trong th mc trn.
Bc 2: Thm 2 List Box v mt Button vo form (hnh 1). Nhn p ln form m
ra ca s Code, nhp cc on m sau trong s kin Form_Load:
Form1.List1.AddItem Thing 3
Form1.List1.AddItem Thing 2
Form1.List1.AddItem Thing 1
Trang 2
90
Hnh 1.1: Thao tc vi List Box
Bc 3: Chy ng dng bng cch chn Run/Start. List1 hin th 3 phn t va thm
vo bc 2. Chm dt chng trnh bng cch chn Run/End trn menu tr v
mi trng son tho.
Bc 4: Nhp p ln Button Command1 hin th s kin Click ca Command1.
Bc 5: Mc ch ca Command1 l chuyn nhng phn t c chn t List1 sang
List2. Thm on m sau vo th tc s kin Click ca Command1:
' Kiem tra neu mot phan tu duoc chon
If Form1.List1.ListIndex = -1 Then Exit Sub
' Chep cac phan tu duoc chon tu List1 sang List2
Form1.List2.AddItem Form1.List1.List(Form1.List1.ListIndex)
Bc 6: Chy ng dng. Nhp phn t th nht ca List1, sau nhp Command1.
iu g xy ra? Phn t c chn ca List1 phi c hin th bn List2. Chm dt
ng dng v tr v mi trng son tho.
Bc 7: Tm trong phn tr gip cc thuc tnh sau ca ListBox:
o ListCount
o List
TT. Visual Basic
Trang 3
o ListIndex
Bc 8: Tm trong phn tr gip cc hm sau ca ListBox:
o AddItem
o RemoveItem
o Clear
Bc 9: Tm tr gip cho lnh VB:
Exit Sub
Bc 10: on m trong th tc Command1_Click thc hin thao tc chp phn t t
mt ListBox sang mt ListBox khc. By gi ta lm ngc li: loi b phn t trong
List1. lm iu ny ta nhp p ln Command1 v thm dng code sau vo cui
th tc:
' Xoa phan tu duoc chon trong List1
Form1.List1.RemoveItem Form1.List1.ListIndex
Bc 11: Chy chng trnh v chn phn t th nht trong List1. iu g xy ra?
Bc 12: Nu khng chn phn t no trong List1, nhp Command1. iu g xy ra?
Ti sao?
Bc 13: Ta c mt button dng chuyn cc phn t c la chn t tri sang
phi (List1 sang List2), vi button cn li ta s dng chuyn cc phn t c chn
t phi sang tri (List2 sang List1).
Bc 14: Vi Command2 ta s copy on m t Command1 vi 1 vi thay i nh.
Bc 15: Command2 thc hin cc thao tc ging vi Command1, nhng c nhim
v di chuyn phn t c la chn t List2 sang List1. on m trong Command1 s
c s dng li vi mt vi thay i nh. Nhp p ln Command1, chn cc m
lnh thm vo cc bc trc. Chn Edit/Copy trn menu.
Bc 16: ng ca s Code v nhp p ln Command2. S kin Command2_Click
s hin th trong ca s Code. Nhp bt k bn trong th tc s kin v chn
Edit/Paste trn menu. Nh vy ta chp on m t Command1 sang Command2.
Bc 17: Sa li cc m lnh va c chp. Thay i cc ch thch cho thch hp;
i List1 thnh List2 v ngc li. Nhng sa i ny gip Command2 c th thc
hin thao tc chuyn cc phn t c chn t List2 sang List1.
Lu cc cng vic thc hin bng cch chn File/Save Project.
Bc 18: Chy chng trnh. Chn phn t th nht trong List1 v chn Command1
chuyn n sang List2. By gi chn phn t th nht trong List2, v nhp
Command2. Nu Command2 khng thc thi, tr li mi trng son tho. Kim tra li
on m lnh trong th tc Command2_Click ta va chp bc trn.
Bc 19: Lu rng cc phn t c 2 ListBox khng c sp th t; nu mun sp
th t, ta nhp List1 v i thuc tnh Sorted thnh True, tng t i vi List2.
Bc 20: Lu d n li v chy chng trnh. Tt c cc phn t phi c hin th
theo th t trong c 2 ListBox, bt chp th t chng c thm vo trong ListBox.
Bi tp 1I-2
THAO TC VI SPINCONTROL
TT. Visual Basic
Mt SpinControl l s kt hp ca TextBox v Slider. Slider to mt min gi
tr s c hin th trong TextBox. Cc gi tr ny c th c thay i bng cch
nhp trc tip vo trong TextBox.
Bc 1: To th mc Basic\Bt1-2. To d n mi trong th mc trn.
Bc 2: Trong Form1, thm mt TextBox v Horizontal Scroll Bar nh hnh 2. Thit
lp cc thuc tnh sau cho mi Control:
Trang 4
Hnh I.2: Spin Control
Item1: TextBox
Name: Text1
Text: <blank>
Item2: Horizontal Scroll Bar
Name: Hscroll1
LargeChange: 10
Max: 100
Bc 3: Nhp p ln scrollbar nhp m lnh, y l s kin Change ca Scroll
Bar gi l hm HScroll1_Change. Thm on m sau hin th gi tr hin thi ca
scroll bar trong TextBox.
Text1.Text = HScroll1.Value
Bc 4: Chy ng dng bng cch chn Run/Start trn menu. By gi nhp cc mi
tn tri v phi ca scroll bar. Gi tr trong TextBox phi thay i.
Bc 5: By gi thm m thay i gi tr bng cch nhp trc tip gi tr trong
TextBox. Nhp p vo TextBox v thm on m sau thit lp gi tr cho scroll
bar khi TextBox thay i:
HScroll1.Value = Text1.Text
Bc 6: Chy chng trnh v nhp 50 vo TextBox. Vch ca scroll bar thay i
theo. Thay i vch ca scroll bar, gi tr trong TextBox cng thay i.
Bc 7: Trong khi chy chng trnh, nhp k t A vo TextBox. iu g xy ra?
Nguyn nhn v scroll bar ch nhn cc gi tr l s ch khng phi k t.
Bc 8: ngn chn nhng k t khng mong mun c nhp vo TextBox, ta s
dng s kin KeyPress. S kin ny xy ra khi c mt phm trn bn phm c nhn,
nhng trc khi gi tr thc s c hin th trn TextBox. S kin ny nhn mt gi
tr s nguyn ca phm c nhn, gi l ASCII. Mi k t trn bn phm c i
din bng mt m ASCII duy nht. Do ta c th kim tra phm no c nhn v b
qua n nu ta thy khng cn thit.
Bc 9: Thm on m sau vo s kin Text1_KeyPress ngn chn cc gi tr
khng phi l s.
' Loai bo ky tu khong can thiet
TT. Visual Basic
If KeyAscii = vbKeyBack Then Exit Sub
If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
KeyAscii = 0
End If
Bc 10: Lu d n li v chy chng trnh.
Bi tp 1I-3
THAO TC VI DRIVELISTBOX, DIRLISTBOX, FILELISTBOX
Trong v d ny ta phi to 5 i tng, trong c 4 iu khin:
o Mt Form.
o Mt iu khin DriveListBox
o Mt iu khin DirListBox
o Mt iu khin FileListBox
o Mt iu khin ImageBox
Bc 1: To giao din ngi dng. Ta ch cn nhp v v ng v tr tng iu khin
trn Form.
3
4
2
1
Hnh I.3: Giao din la chn tp tin hnh nh hin th
1: DriveListBox
Name: drvSource
2: DirListBox
Name: dirSource
3: FileListBox
Name: filSource
Pattern: *.bmp;*.wmf;*.ico;*.jpg
4: ImageBox
Name: ImgSource
Stretch: TRUE
Trang 5
TT. Visual Basic
Bc 2: Vit m trao i thng tin gia cc i tng:
Trong ca s thit k Form, nhp p vo DriveListBox, ca s Code hin ra,
x l s kin sau:
Private Sub drvSource_Change()
dirSource.Path = drvSource.Drive
End Sub
Tng t cho DirListBox & FileListBox
Private Sub dirSource_Change()
filSource.Path = dirSource.Path
End Sub
Private Sub filSource_Click()
imgSource.Picture = LoadPicture(filSource.Path & "\" & filSource.FileName)
End Sub
Bc 3: Lu d n li vo th mc Basic\Bt1-3. Chy chng trnh nh phm F5.
Trang 6
Hnh I.4: Kt qu thc thi
Bi tp 1I-4
IU KHIN OLE
Bc 1: To d n mi, trong ta c s dng OLE.
Hp thoi Insert Object hin ra ta la chn, y chn kch hot Create
New, Object Type l Bitmap Image; nh du chn Display as Icon.
TT. Visual Basic
Hnh I.5: S dng OLE Control
Bc 2: Nhp OK, VB s gi trnh ng dng Paint & ta v hnh trn ca s Paint. Sau
chn Exit & Return trong ca s Form, ta c:
Hnh I.6: Kt qu thc thi ng dng
Bc 3: Lu d n vo th mc Basic\Bt1I-4 v chy chng trnh; nhp p vo
biu tng Bitmap Image,VB s khi ng Paint ta hiu chnh hnh v u.
I.2 Bi tp t lm
1) Thit k chng trnh nh sau:
Hnh I.7 Cc php tnh
c bn
Nhp vo 2 gi tr A, B; sau chn mt php ton (+,-,*,/). Nhp chn nt
nhn Thc hin, kt qu s hin th trong iu khin nhn Kt qu.
Trang 7
TT. Visual Basic
t k c 2) Thi hng trnh nhp vo ta ca hai im (x1,y1); (x2,y2) v cho
a hai im theo cng thc:
b) Tnh ia hai im theo cng thc:
hong cch =
php:
a) Tnh h s gc ca ng thng i qu
H s gc = (y2 - y1) /(x2 - x1)
khong cch g
2 2
y1) - (y2 x1) - (x2 + k
Giao din chng trnh c th nh sau:
3) Vit chng trnh cho php nhp vo bn knh r ca mt hnh trn. Tnh chu vi v
din tc trn theo cng thc :
in th cc kt qu ln mn hnh.
) Thit k ch c nng sau:
h ca hnh
Chu vi CV = 2*Pi*r
Din tch Dt = Pi*r*r
H
Trang 8
4 ng trnh c giao din nh hnh di v thc hin cc ch
Hnh I. cc
im
8: Ta
TT. Visual Basic
Trang 9
M s c a vo ComboBox, cn gi tr ca
H
extBox tng ng (nh hnh). (X l s kin Combo1_Click &
Lis C
au chn nt Sa, gi tr ca chng trong ComboBox &
Lis
Box),
au h chn Xa, cc thng tin ny c xa ra khi ComboBox & ListBox.
II. CC CU TRC LP TRNH TRONG VB
II.1 Bi tp c hng dn
mc Basic\Bt1II-1. Thit k chng trnh c giao din & lu trong th mc
n:
hp nt Nhn xt, mt nhn xt s xut hin ng vi tui m h nhp t
ng ton t so snh (=, <, <=, >, >=, <>) cng vi cc t kha Is
To
it k sau t kha Is.
tr.
ext )
o Mi khi ngi s dng chng trnh nhp thng tin vo 2 TextBox, sau
nhp chn nt Thm, gi tr ca
v tn c a vo ListBox.
o Mi khi h chn mt m s no trong ComboBox, gi tr h v tn tng
ng cng s c chn trong ListBox; ng thi chng s c hin th ln trn cc
iu khin T
t1_ lick)
o i vi m s v h tn ca mt ngi, ta c th sa i gi tr ca chng
trong cc nhp TextBox, s
tBox cng sa i theo.
o Khi ngi dng chn mt m s (hay h tn) trn ComboBox (hoc List
s
Bi tp 1II-1
S DNG SELECT CASE
To th
Hnh I.9: La chn tn
Hnh I.10: Select Case
tr
y, ngi s dng chng trnh nhp vo mt tui no trong nhp tui,
sau h n
bn phm.
Lc ny ta s d
v trong biu thc.
Is: so snh bin vi biu thc c l
To: nh ngha phm vi ca gi
S kin Command1_Click():
Di mAge As I nt eger
Age = Val ( Text 1. T
TT. Visual Basic
Trang 10
Sel ect Case Age
Case I s < 18
Label 2. Capt i on = " Ba
t hoi ! "
n con t hi eu ni en, ban phai hoc
= " Ban da t r uong t hanh, l ap gi a di nh
apt i on = " Lua t uoi t r ung ni en r oi ! "
Label 2. Capt i on = " Ban co con chau day dan r oi
End Sel ect
BIN V CU TRC
ng th
c tr ; thm n m sau:
y hanh chinh"
Form1:
y gi, m Modul1 v thay Public bng Private. Chy chng trnh. iu g
y vo u th tc
Form_Load:
Hang so khong the thay doi duoc.
Form_Resize:
i tr ca n. Sau , hm Form_Resize c th
:
True cho bin trn:
tr ca bin trong hm Form_Resize. Thm vo on m
au tro g hm
lse
b
MsgBox Form Resize
Case 18 To 30
Label 2. Capt i on
t hoi ! "
Case 31 To 60
Label 2. C
Case El se
nhe! "
Bi tp 1II-2
Bc 1: To th mc Basic\Bt1II-2. To d n mi (VB Standard EXE) tro
m n mt modul vo d n, trong modul nay thm vo o
Public Const tieude As String = "Quan l
Public Const sohieu As String = "1.0"
Thm on m sau vo hm x l s kin Form_Load ca
Form1.Caption = tieude & " phien ban " & sohieu
Chy ng dng, ta thy tiu ca Form: Quan ly hanh chinh phien ban 1.0.
B
xy ra?
Bc 2: i cc khai bo trn thnh Public, thm dng sau
tieude = Loi xuat hien &
Chy chng trnh, iu g xy ra?
Bc 3: Thm dng sau trong hm x l s kin
MsgBox FORM RESIZE
Bc 4: Chy chng trnh, khi Form bt u c hin th (s kin Form_Load), s
kin Resize ca Form c thc hin. Ch c hm x l s kin Resize mi cho bit
chc rng hm Form_Load c thc thi. kim chng ta to mt bin trn form v
trong hm Form_Load ta thit lp g
kim tra bin v x l trn bin ny.
Bc 5: Khai bo mt bin Private trong Form1 tn sukienLoad
Private sukienLoad As Boolean
Trong hm Form_Load, t gi tr
sukienLoad = True
By gi ta kim tra gi
s n Form_Resize:
If sukienLoad = True Then
SukienLoad =Fa
Exit Su
End If
TT. Visual Basic
Trang 11
Chy ng dng, khi Form bt u c hin th, ta khng thy xut hin cu
thng bo, nhng khi ta thay i kch thc ca Form (nhn cc nt _, ca form),
cu thng bo li xut hin. y ta s dng mt bin lm trung gian cho s giao
tip gia s kin Form_Load v s kin Form_Resize. Bi v c 2 hm ny nm trong
Form1, nn ta c khai bo Private cho chng, cc ng dng khc khng th truy xut
n cc bin ny.
CHNG TRNH CON
Bc 6: Ta vit mt chng trnh con x l chui. u vo ca chng trnh con l
mt chui, kt qu ca chng trnh con l chui nhng cc t u c vit hoa
k t u tin. Bi tp ny gip ta khai bo (nh ngha) mt chng trnh con v gi
thc thi chng trnh con trong chng trnh ng dng ca mnh.
Chn Modul1 trong ca s son tho chng trnh, sau nhp chn
Tools\Add Procedure. nh ngha mt hm public tn Doihoa() nh sau:
Public Function Doihoa(s As String) As String
Dim s1 As String
Dim s2 As String
Do While InStr(s, " ") <> 0
s1 = Left(s, InStr(s, " "))
s = Right(s, Len(s) - InStr(s, " "))
' Doi chu hoa
s1 = UCase(Left(s1, 1)) & Right(s1, Len(s1) - 1)
s2 = s2 & s1
Loop
' Tra ket qua
Doihoa = s2 & " " & s
End Function
' Ham nay khong viet hoa tu cuoi cung.
Bc 7: Hm Doihoa c nhim v nhn vo mt chui v i k t u tin ca cc t
trong chui thnh ch hoa. By gi ta kim tra hm ny nh sau: Thm mt TextBox
v mt nt nhn (Button) ln Form1. Nhp vo Button, ta thm on m sau vo hm
x l s kin Command1_Click:
Form1.Caption = Doihoa(Text1.Text)
Chy ng dng, nhp mt chui vo Text1, nhp Command1. Chui ch hoa s
xut hin trn tiu ca Form1.
Bc 8: Sa li sao cho c th vit hoa k t u tin ca tt cc t.
Bi tp 1II-3
LA CHN VI LISTBOX
Bc 1: To th mc Basic\Bt1II-3. To d n mi VB Standard EXE trong th mc
trn, sau to Form c dng sau:
TT. Visual Basic
Trang 12
Ta c 2 ListBox v cc nt nhn (Button); trong :
Hnh I.11: La chn vi ListBox
Nt > chuyn mt phn t t tri sang phi
Nt < chuyn mt phn t t phi sang tri.
Nt >> chuyn tt c cc phn t t tri sang phi.
Nt << chuyn tt c cc phn t t phi sang tri.
Thm 2 ListBox v 4 Button vo Form1. Trong hm x l s kin Form_Load
thm vo on m:
List1.AddItem "Thing 1"
List1.AddItem "Thing 2"
List1.AddItem "Thing 3"
List1.AddItem "Thing 4"
List1.AddItem "Thing 5"
List1.AddItem "Thing 6"
Chy chng trnh.
Bc 2: Thm hm x l s kin Click cho nt nhn 1 (>) Command1_Click:
' Kiem tra co chon hay khong?
If Form1.List1.ListIndex = -1 Then Exit Sub
' Chep tu trai sang phai
Form1.List2.AddItem Form1.List1.List(Form1.List1.ListIndex)
' Xoa ben trai
Form1.List1.RemoveItem Form1.List1.ListIndex
Bc 3: Chy chng trnh, chn phn t trong List1 v nhp nt >, phn t
chuyn sang List2. By gi ta lm ngc li: chuyn phn t c chn t List2 sang
List1. Tr v ca s son tho; chn on m va nhp trong List1, chn Edit\Copy
trong menu ca VB. Nhp ln Button <, chn Edit\Paste. By gi ta sa li on m
sau trong hm x l s kin Command2_Click:
' Kiem tra co chon hay khong?
If Form1.List2.ListIndex = -1 Then Exit Sub
TT. Visual Basic
Trang 13
' Chep tu phai sang trai
Form1.List1.AddItem Form1.List2.List(Form1.List2.ListIndex)
' Xoa ben phai
Form1.List2.RemoveItem Form1.List2.ListIndex
Bc 4: Lu d n v chy chng trnh.
Ta nhn thy 2 on m lnh trn (cho Button < v >) l nh nhau (ch i ch
List1 cho List2 v ngc li). Do ta s vit mt chng trnh con chuyn d liu
t ListBox ny sang ListBox kia, v trong hm x l s kin ca 2 Button ta ch cn
gi chng trnh con ny chuyn d liu.
Thm mt Modul mi vo d n tn Modul1, chn Tool\Add Procedure
thm mt chng trnh con vo tn Chuyendulieu()
Vo Modul1, sa i li th tc chuyn d liu nh sau:
Public Sub Chuyendulieu(L1 As ListBox, L2 As ListBox)
' Kiem tra co chon hay khong?
If L1.ListIndex = -1 Then Exit Sub
' Chep
L2.AddItem L1.List(L1.ListIndex)
' Xoa ben trai
L1.RemoveItem L1.ListIndex
End Sub
By gi hm x l s kin ca Command1 (Command1_Click) ta sa li nh
sau:
Call Chuyendulieu(Form1.List1, Form1.List2)
Hm Command2_Click:
Call Chuyendulieu(Form1.List2, Form1.List1)
Lu d n v chy chng trnh. Kim tra kt qu.
Bi tp 1I -4
TRUYN THEO A CH V TRUYN THEO GI TR
Bc 1: Tham s a vo chng trnh con c truyn theo mt trong 2 cch: theo
a ch v theo gi tr. By gi ta to d n mi trong th mc Basic\Bt2-4 kim tra
chng.
Bc 2: To Form1 nh sau:
TT. Visual Basic
1
Hnh I.12: Truyn
tham s
2
3
Button 1: Name: cmdTTri; Caption: Truyen tri
Button 2: Name: cmdTChieu; Caption: Tham chieu
TextBox: Name: Text1
Label 1: Name: lblTruoc
Label 2: Name: lblTrong
Label 3: Name: lblSau
Bc 3: Thm 1 Modul vo d n tn l Modul1, chn Tools\Add Procedure thm th
tc Thamchieu nh sau:
Name: Thamchieu
Type: Sub
Scope: Public
Bc 4: Thm on m sau trong th tc Thamchieu
Public Sub Thamchieu(so As Integer)
so = so + 2
Form1.lblTrong.Caption = Str(so)
End Sub
Bc 5: Chn Tool\Add Procedure thm th tc Truyentri nh sau:
Name: Truyentri
Type: Sub
Scope: Public
Bc 6: Thm on m sau trong th tc Truyentri
Public Sub Truyentri(ByVal so As Integer)
so = so + 2
Form1.lblTrong.Caption = Str(so)
End Sub
Bc 7: S khc nhau gia 2 th tc trn l t kha ByVal trong th tc Truyentri.
By gi ta thm th tc x l bin c Click ca Button cmdTTri. Thm on m sau:
Private Sub cmdTTri_Click()
Dim n As Integer
n = Val(Text1.Text)
lblTruoc.Caption = Str(n)
Call Truyentri(n)
lblSau.Caption = Str(n)
End Sub
Bc 9: Thm hm x l bin c cmdTChieu_Click cho Button cmdTChieu:
Trang 14
TT. Visual Basic
Private Sub cmdTChieu_Click()
Dim n As Integer
n = Val(Text1.Text)
lblTruoc.Caption = Str(n)
Call Thamchieu(n)
lblSau.Caption = Str(n)
End Sub
Bc 10: Lu d n, chy chng trnh. Nhp s bt k vo TextBox ri nhp nt
Truyen tri, sau nhp nt Tham chieu. Kim tra kt qu. Gii thch.
Bi tp 1II-5
THAM S TY CHN
Bc 1: To th mc tn Basic\Bt1II-5. To d n mi trong th mc ny.
Bc 2: To Form nh sau:
Trang 15
Hnh I.13: Ly thi
gian
Trong :
Label: Name: lblTg
Button 1: Name: cmdGioPhut
Button 2: Name: cmdGioPhutGiay
Bc 3: Thm modul mi vo d n tn Modul1. Chn Tool\ Add Procedure to th
tc:
Name: Laythoigian
Type: Sub
Scope: Public
Bc 3: Thm on m sau vo th tc trn:
Public Sub Laythoigian(gio As String, phut As String, Optional giay As String)
' Tham so thu 3 co tu khoa Optional, nghia la ta
' co the goi thu tuc co the co tham so nay hay khong co deu duoc
TT. Visual Basic
' Ham IsMissing kiem tra xem tham so nay co hay khong
If IsMissing(giay) Then giay = ""
Dim hientai
hientai = Now
gio = Format$(hientai, "hh")
phut = Format$(hientai, "nn")
giay = Format$(hientai, "ss")
End Sub
Bc 4: Thm th tc x l s kin cho Button cmdGiophutgiay, trong th tc ny
chn on m sau:
Private Sub cmdGiophutgiay_Click()
Dim gioht As String
Dim phutht As String
Dim giayht As String
Call Laythoigian(gioht, phutht, giayht)
lblTg.Caption = gioht & ":" & phutht & ":" & giayht
End Sub
Bc 5: Thm th tc x l s kin cho Button cmdGiophut, trong th tc ny chn
on m sau:
Private Sub cmdGiophut_Click()
Dim gioht As String
Dim phutht As String
' Khong su dung tham so thu ba
Call Laythoigian(gioht, phutht)
lblTg.Caption = gioht & ":" & phutht
End Sub
Bc 6: Lu d n li v chy chng trnh. Kim tra kt qu.
Bi tp 1II-6
PARAM ARRAY
Bc 1: To th mc Basic\Bt1II-6. To d n mi trong th mc ny.
Bc 2: To Form nh hnh sau:
Hnh I.14: Param Array
Trang 16
TT. Visual Basic
Trong :
ListBox: Name: lstTen
Button: Name: cmdds; Caption: Them vao danh sach
Bc 3: Chn modul mi vo d n tn Modul1. Sau , chn Tool\Add Procedure
chn th tc sau:
Name: Diends
Type: Sub
Scope: Public
Bc 3: Chn on m sau vo th tc Diends
Public Sub Diends(ParamArray Ten() As Variant)
' Su dung ParamArray thi mang phai kieu Variant va
' mang nay la tham so cuoi cung cua thu tuc
Dim hten As Variant
For Each hten In Ten()
Form1.lstTen.AddItem hten
Next
End Sub
Bc 4: ParamArray cho php khng cn xc nh s lng cc i s trong mt
chng trnh con. By gi, thm hm x l s kin cho nt cmdds: cmdds_Click:
Private Sub cmdds_Click()
Call Diends("Huynh Xuan Hiep", "Nguyen Van Linh", "Lam Hoai
Bao")
Call Diends
Call Diends("Phan Huy Cuong")
End Sub
Bc 5: Lu d n li v chy chng trnh. Kim tra kt qu (hnh bn di). Lu
n li gi th tc trong s kin cmdds_Click (s lng i s khc nhau)
Hnh I.15: Kt qu Param
Array
Trang 17
TT. Visual Basic
Bi tp 1II-7
X L CHUI
Bc 1: To d n mi trong th mc Basic\Bt2-7 vi giao din nh sau:
Trang 18
5 4
3
2
1
Hnh I.16: X l
chui
1: Form: Name: frmMain; MinButton: False; MaxButton: False; Font: VNI-Times.
2: Label: Name: lblTen.
3: TextBox: Name: txtTen.
4: CommandButton: Name: cmdTen; Caption: Tch tn.
5: CommandButton: Name: cmdCKT; Caption: Ct khong trng.
Bc 2: To mt hm ct khong trng nh sau:
Private Function ATrim(ByVal Name As String) As String
Name = LTrim(RTrim(Name))
Do While InStr(Name, "") <> 0
Name = Replace(Name, "", "")
Loop
ATrim = Name
End Function
Bc 3: Trong ca s thit k Form; nhp p vo Tch tn, ta x l on m cho s
kin ny:
Private Sub cmdTen_Click()
Dim sName As String, Name As String
sName = ATrim(StrConv(txtTen.Text, vbProperCase))
Dim i As Long
i = InStrRev(sName, "")
Name = Right(sName, Len(sName) - i)
MsgBox Name & ": " & Str(Len(Name))
End Sub
Bc 4: Sau , tr li ca s thit k, nhp p vo Ct khong trng, ta x l:
Private Sub cmdCKT_Click()
Dim sName As String
sName = ATrim(StrConv(txtTen.Text, vbProperCase))
TT. Visual Basic
Trang 19
MsgBox sName, , "Kieu du lieu chuoi"
End Sub
Bc 5: Lu d n v chy chng trnh.
Bi tp 1II-8
X L LI
Bc 1: To mt d n mi. Dng Tools\Add Procedure thm mt th tc mi tn
GoiThuTuc vo Form1 vi ni dung nh sau:
Public Sub GoiThuTuc()
Dim bien As Integer
MsgBox "Truoc khi gan tri cho bien"
bien = "Bien nguyen khong nhan gia tri la chuoi"
MsgBox "Sau khi gan tri cho bien: " & "Bien = " & Format(bien)
End Sub
Bc 2: Th tc x l s kin Form_Load c ni dung nh sau:
Private Sub Form_Load()
MsgBox "Truoc khi goi thu tuc"
Call GoiThuTuc
MsgBox "Sau khi goi thu tuc"
End Sub
Lu d n vo th mc Basic\Bt1II-8:
Form: tn l form1
Project: Debug
Bc 3: Chy chng trnh. VB a ra hp thoi bt li (debug) chng trnh. Ta
chn End tr v ca s son tho.
To tp tin thc thi tn Debug.exe bng cch chn File\Make Debug.exe. Chy
tp tin Debug.exe t Windows Explorer ta nhn c hp thoi bo li v chng
trnh t ng chm dt.
Nhn xt kt qu khi thc hin chng trnh.
Bc 4: By gi ta thm vo on m x l li trong th tc ca s kin Form_Load:
Private Sub Form_Load()
On Error GoTo Xulyloi
MsgBox "Truoc khi goi thu tuc"
Call GoiThuTuc
MsgBox "Sau khi goi thu tuc"
Thoat:
Exit Sub
Xulyloi:
TT. Visual Basic
Trang 20
MsgBox "Su kien Form_Load - Loi xay ra: " & Err.Description
Resume Thoat
End Sub
Bc 5: Lu d n v chy chng trnh. Nhn thy, thay v ta nhn c cu thng
bo li t VB, mt hp thoi bo li do ta a vo xut hin. Lu , nhng li c
bt trong th tc Form_Load (ch khng phi trong GoiThuTuc()). Nguyn nhn v
th tc GoiThuTuc() c gi bi th tc x l s kin Form_Load.
Bc 6: Bin dch li thnh tp tin Debug.exe, chy n. Nhn xt kt qu.
Bc 7: Cc kt qu trn cho ta bit c cc li trong s kin Form_Load c x l
bi cc thao tc bt li trong th tc Form_Load. Nhng nu th tc GoiThuTuc()
cng c cc thao tc bt li chng trnh th sao? n gin gi s mt li xut hin
trong GoiThuTuc(). B phn x l li ca GoiThuTuc (do ta thm vo bt li
chng trnh) s thc thi thay v on lnh bt li ca s kin Form_Load c thc
hin. Khi GoiThuTuc chm dt, quyn x l li mi trao li cho s kin Form_Load.
Sa li th tc GoiThuTuc nh sau:
Public Sub GoiThuTuc()
Dim bien As Integer
On Error GoTo Xulyloicucbo
MsgBox "Truoc khi gan tri cho bien"
bien = "Bien nguyen khong nhan gia tri la chuoi"
MsgBox "Sau khi gan tri cho bien: " & "Bien = " & Format(bien)
Thoatthutuc:
Exit Sub
Xulyloicucbo:
MsgBox "GoiThuTuc() - Loi xay ra: " & Err.Description
Resume Thoatthutuc
End Sub
Bc 8: Lu d n v chy chng trnh. Thay on m Resume Thoatthutuc bng
Resume v chy chng trnh. Mt vng lp v tn xy ra do chng trnh s quay li
on m b li v c gng thc thi n; thot chng trnh ta phi bm t hp phm
Ctrl + Break.
By gi thay Resume bng Resume Next v chy li chng trnh. Nhn xt kt
qu. Gii thch.
II.2 Bi tp t lm
1) Thit k chng trnh cho php nhp vo cc h s a, b ca phng trnh bc 1
dng: ax+b=0; sau gii phng trnh ny. Giao din chng trnh c th nh sau:
TT. Visual Basic
Trang 21
Hnh I.17: Phng trnh
bc 1
2) Thit k chng trnh cho php nhp vo cc h s a, b, c ca phng trnh bc 2
dng: ax
2
+ bx + c=0; sau gii phng trnh ny.
3) Thit k chng trnh cho php nhp vo mt k t, sau kim tra xem k t
thuc tp hp no trong cc tp k t sau:
Cc k t ch hoa: 'A' ...'Z'
Cc k t ch thng: 'a' ... 'z'
Cc k t ch s : '0' ... '9'
Cc k t khc.
4) Gii phng trnh bc 1 bng cch s dng cu trc Select Case
5) To mt chng trnh hin th mt danh sch chn la cho ngi dng trong mt
ListBox, sau x l vi cu trc quyt nh Select Case.
Mc ch ca iu khin s kin ny l hin thi mt danh sch cc quc gia, sau
hin th mt thng ip cho mng bng ngn ng bn x khi ngi dng chn
quc gia ca h.
Hnh I.18: Li cho cc nc
Chng hn: Ting Anh: Hello, programmer
Ting c: Hallo, programmierer
Ting Ty Ban Nha: Hola, programador
Ting : Ciao, programmatori
6) S dng vng lp For.. Next
S dng For.. Next thay i ln k t trn mt Form bng cch thay i
thuc tnh FontSize ca Form.
Thit k Form c giao din:
TT. Visual Basic
S kin Command1_Click()
Di mi As I nt eger
For i = 1 To 10
For m1. Font Si ze = 10 + i
Pr i nt " Li ne " ; i
Next
Hnh I.19: ForNext
Chy chng trnh.
7) Thit k chng trnh cho php tnh N! (N! = 1*2*3**N). Giao din ngh:
Hnh I.20: Tnh N!
8) Thit k chng trnh cho php nhp vo mt s nguyn N; sau tnh cc tng
sau:
a. S=1 + 2 + ... + n
b. S=1/2 + 2/3 + ... +n/(n+1)
c. S= - 1 +2 - 3 +4 - ... + (-1)
n
n
9) Thit k chng trnh cho php nhp vo s nguyn dng N; sau tm s
nguyn dng k nh nht sao cho
+
+ + +
) 1 ( * ) 1 (
...
4 * 2
3
3 * 1
2
k k
k
N.
10) Thit k chng trnh cho php nhp vo 2 s nguyn A, B; sau tm UCLN v
BCNN ca hai s a v b theo thut ton sau ( K hiu UCLN ca a, b l (a,b)
cn BCNN l [a,b])
- Nu a chia ht cho b th (a,b) = b
- Nu a = b*q + r th (a,b) = (b,r)
- [a,b] = a*b/(b,r)
Trang 22
TT. Visual Basic
11) Thit k chng trnh cho php nhp vo s nguyn N; sau vit 1 hm tnh N!;
cui cng hin th kt qu gi tr N!.
12) Thit k chng trnh cho php nhp vo 2 s nguyn N, K; s dng hm tnh N!
trn, vit mt hm tnh gi tr t hp chp K ca N phn t theo cng thc
)! !*(
!
K N K
N
C
K
N
= .
13) Thit k chng trnh cho php nhp vo s thc X v s nguyn N; sau vit
cc hm tnh cc tng sau ri hin th kt qu:
- S= 1 + x +x
2
+ x
3
+ ... + x
n
- S= 1 - x +x
2
- x
3
+ ... (-1)
n
x
n
- S= 1 + x/1! +x
2
/2! + x
3
/3! + ... + x
n
/n!
14) S dng vng lp Do While Loop thit k chng trnh cho php nhp vo mt
s nguyn, sau thng bo kt qu xem s c phi l s nguyn t hay khng?
on chng trnh kim tra s nguyn N c nguyn t hay khng:
i = 2
Do While (i < N) And (N Mod i <> 0)
i = i + 1
Loop
If i = N Then N l s nguyn t
Else N khng l nguyn t
15) Lm li bi tp 11 (tnh N!) nhng s dng vng lp Do While Loop.
16) Lm li bi tp 15 (kim tra s nguyn t) nhng bng cch s dng Do Until
Loop.
17) Lm li bi tp 11 (tnh N!) nhng s dng vng lp Do Until Loop.
18) Thit k chng trnh cho php nhp vo mt s nguyn N; sau phn tch s
nguyn ny ra tha s nguyn t. Giao din chng trnh c th nh sau:
Hnh I.21: Tha s nguyn t
Trang 23
19) S dng iu khin nh thi (Timer).
To mt chng trnh cho php ngi dng 15 giy nhp mt khu trong
mt TextBox.
Nu ngi dng khng nhp mt khu ng trong thi gian ni trn, chng
trnh hin th thng bo Time Expired (Ht thi gian) v ng chng trnh.
Thi gian lm bi tp: 30 pht.
Giao din ngh:
TT. Visual Basic
- Nhp vo mt khu cn thit (gi s mt khu l: Secret)
Hnh I.22: Giao
di
- Nu nhp ng mt khu, ri nhp nt Nhp, mt hp thng bo xut hin
vi ni dng: Ban dang nhap thanh cong.
Hnh I.23: Li ng nhp
- Nu nhp mt khu sai, ri nhp nt Nhp, mt thng bo xut hin vi ni
dung: Xin loi, chung toi khong biet ban!
Sau nhp nt OK trn hp thng bo ny th chng trnh cho bn
nhp li mt khu.
Hnh I.24: Li ng nhp
- Nu thi gian qu 15 giy m ngi dng cha nhp ng mt khu th mt
thng bo s hin ln Xin loi, thoi gian da het; sau chng trnh s kt
thc.
Hnh I.25: Bo ht gi
20) Thit k chng trnh tng t nh ng dng Canculator ca Windows.
Trang 24
TT. Visual Basic
Trang 25
Chng 2 LP TRNH S KIN NNG CAO
& HA TRONG VISUAL BASIC
Mc tiu:
Chng ny gm cc bi tp nhm mc ch rn luyn sinh vin cc k
nng lp trnh s kin nng cao nh cc thao tc x l chut, bn phm
cng nh gip cho sinh vin c ci nhn s lc v cch thc x l ha
trong Visual Basic.
Hc xong chng ny, sinh vin phi nm bt c cc vn sau:
- Cch thc s dng menu trong thit k giao din.
- Cch x l cc s kin chut v bn phm.
- Cc phng thc ha c bn.
Kin thc c lin quan:
Gio trnh Visual Basic, Chng 6.
Ti liu tham kho:
Visual Basic 6 Certification Exam Guide - Chapter 3, Page 69 - Dan
Mezick & Scot Hillier - McGraw-Hill - 1998.
http://www.vovisoft.com/VisualBasic/VB6Chapter12C.htm
TT. Visual Basic
I. HNG DN
Bi tp 2-1
XY DNG MENU V HP THOI C BN
Bc 1: To d n mi tn Bt2-1 trong th mc Basic\Bt2-1. Ch thng xuyn lu
d n li.
Bc 2: Bt u vi Menu Editor. Nhp chut phi ln Form1. Chn Menu Editor.
Lc ny ca s Menu Editor s hin ra.
Hnh II.1: To menu
Bc 3: To menu File bng cch thit lp cc thuc tnh sau:
Trang 26
TT. Visual Basic
Trang 27
Caption: &File
Name: mnuFile
Bc 4: nh ngha cc phn t ca menu File, cc phn t ny s xut hin khi ta
nhp vo File. Ta nhp nt Next, vt sng s di chuyn xung 1 hng, ta s in cc
thng tin vo.
Bc 5: Cc phn t ca menu File phi c t trong cng mt cp: Bng cch
nhp chn mi tn phi, ta xc nh cc phn t ny thuc menu File.
Bc 6: nh ngha cc thuc tnh sau cho phn t ca menu sau:
Caption: &New Project
Name: mnuFileNew
Bc 7: Chn nt OK ca Menu Editor, sau thc thi d n. Khi nhp chut vo
menu File ta s thy x xung phn t New Project ca Menu File. By gi tr li mn
hnh son tho.
Bc 8: Tr li ca s Menu Editor v thm cc phn t tip theo; nh kim tra th t
ca cp m phn t cn thm vo (phi nm trong menu File). Mi ln thm mt phn
t ca menu (sau khi in Caption v Name), cn chn nt Next nh ngha mt
phn t mi. Cn lu cc phn t ca menu File phi cng mt cp.
Bc 9: nh ngha cc phn t sau:
Caption: &Open Project Name: mnuFileOpen
Caption: A&dd Project Name: mnuFileAdd
Caption: Sa&ve Project Name: mnuFileSave
Caption: Sav&e Project As Name: mnuFileSaveAs
Bc 10: Phn t k tip ca menu s l ng phn cch, ng phn cch ny cng
phi c mt tn, ta khng th nhp chut trn n thc thi cng vic. ng phn
cch c Caption l du -. By gi ta thm ng phn cch v sau thm mc Exit
l hon tt.
Bc 11: Nhp nt Next, thm ng phn cch:
Caption: - Name: mnuSeparator1
Bc 12: Nhp Next, thm mc Exit
Caption: E&xit Name: mnuFileExit
Bc 13: Cu trc ca h thng menu ca ta nh sau:
&File
&New Project
&Open Project
A&dd Project
Sa&ve Project
Sav&e Project As
-
E&xit
T y ta c th chn phn t bt k vo menu ( cc bc trn ta ch chn
sau).
Bc 14: Mun chn thm mt phn t, nhp vo phn t di v tr m phn t mi
mun t ti . Chng hn, mun chn mt phn t trc mc Save Project, nhp vo
Save Project sau chn nt Insert. Mt phn t trng mi s xut hin v ta in
thng tin vo.
Bc 15: nh ngha mc mi:
Caption: &Remove Project Name: mnuFileRemove
TT. Visual Basic
Trang 28
Nu mc Name l khong trng th ta s nhn c mt thng bo li: Menu
Control must have a name. Ta phi nhp Name vo.
Bc 16: Gn phm tt. Phm tt cho php ta s dng bn phm truy xut n cc
mc ca Menu. Chng hn mun cho mc Open Project c phm tt l Ctrl + O, ta
chn mc Open Project trong hp thoi Menu Editor.
Bc 17: Nhp OK. Lu d n v thc thi chng trnh. Nhp chn mc bt k trong
menu, ta thy khng tc dng. Do ta phi cung cp hm x l s kin khi nhp vo
cc mc ca menu.
Bc 18: ng ca s Menu Editor, nhp File\Exit; ca s Code xut hin. Thm
on m sau cho s kin Click ca mnuFileExit:
MsgBox Dong ung dung
End
Bc 19: Chy ng dng, chn File\Exit. iu g xy ra?
Bc 20: Tr v ca s son tho; nhp chut vo File\Open Project m ca s
son tho m lnh cho hm x l s kin mnuFileOpen_Click. Thm on m sau:
MsgBox Ban da nhap vao muc File\Open Project
Bc 21: Chy ng dng. Nhp vo File, ri Open Project; mt thng bo hin ra.
ng thng bo li
Bc 22: Ta c th dng phm tt chn Open Project; gi phm Alt, bm phm f ri
o.
Bc 23: Mt cch khc chn File\Open Project l bm phm Ctrl + O. Nh vy, ta
thy c 3 cch chn File\Open Project.
Bc 24: Trong nhiu ng dng c s dng menu, sau khi chn 1 mc trn menu, ta
thy xut hin mt hp hi thoi gm cc nt OK v Cancel, trn c nhiu ty chn
hay yu cu m ngi s dng c th chp nhn hay hy b. y cng vy, ta s m
mt hp thoi tng t nh trn.
Bc 25: Nhp chut vo Project\Components. Mt danh sch cc iu khin m ta
c th thm vo d n ca mnh. Chn Microsoft Common Dialog 6.0 bng cch
nh du vo checkbox v chn OK. Lc ny VB s t ng thm iu khin mi ny
vo ToolBox.
Bc 26: iu khin Common Dialog s xut hin trn ToolBox, nhp p trn n v
t n vo v tr bt k trn Form1.
Bc 27: Nhp chut vo mc File\Open Project, ca s son tho m lnh hin ra,
thm vo on m sau trong hm x l s kin mnuFileOpen_Click:
Form1.CommonDialog1.ShowOpen
MsgBox Bn da chon tap tin: & Form1.CommonDialog1.FileName
Bc 28: Trong lnh MsgBox trn ta c s dng php ton ni 2 chui li vi nhau:
chui Ban da chon tap tin: v chui Form1.CommonDialog1.FileName. Lu , ta
phi s dng php ton & ni chui li.
Bc 29: m hp hi thoi (Common Dialog) ta phi c mt li gi hm:
ShowOpen chng hn. Lc ny hp thoi mi hin ra.
Bc 30: Lu d n v chy chng trnh. Chn File\Open Project, hp thoi hin ra.
Chn tp tin no , iu g xy ra tip theo?
Bc 31: Tm hiu cc lnh ShowOpen, ShowSave, ShowPrinter, ShowColor. Ta c
th gi chng bng cch thm hm x l s kin cho mt mc ca menu, chng hn
cho mnuFileSave_Click:
Form1.CommonDialog1.ShowSave
TT. Visual Basic
Bi tp 2-2
HA VI BASIC
Bc 1: To mt d n mi trong th mc Basic\Bt2-2.
Bc 2: Trong Form1 ta to Menu c dng:
Trang 29
Hnh II.2: Menu v giao din
TT. Visual Basic
Vi cc thuc tnh nh sau:
TT Caption Name TT Caption Name
1 Ve hinh MnuVe 9 Duong Tron MnuTron
2 &Pixel MnuPixel 10 &Cung tron MnuCung
3 &Tam giac MnuTg 11 &Bau duc MnuBauduc
4 &Den MnuTgDen 12 Bieu &do MnuBieudo
5 D&o mnuTgDo 13 - MnuGach2
6 - MnuGach1 14 &Xoa man hinh MnuXoa
7 &Hinh vuong mnuHV 15 - MnuGach3
8 Hinh khac MnuKhac 16 &Thoat MnuThoat
HM PAINTPICTURE
Bc 3: Hm PaintPicture cho php ta copy rt nhanh mt khi d liu ha, ni
nm na l mt khu vc trong mt hnh ha trn form, PictureBox n mt ni khc.
Th d ta copy mt hnh t ch ny n ch khc trong form, hay t form/PictureBox
ra i tng Printer sau ta in n ra.
Ta nhp p ln PictureBox Icon trong ToolBox t mt PictureBox ln
form vi cc thuc tnh sau:
Name: picDohoa.
Visible: False ( ta khng thy n lc chy chng trnh).
Bc 4: By gi ta load mt hnh vo thuc tnh Picture ca picDohoa bng cch chn
mt tp tin hnh nh t ca s Properties. y ta chn INTL_NO.BMP t folder
\Program Files\Microsoft Visual Studio\Common\Graphics\Bitmaps\Assorted
Trang 30
Hnh II.3: La chn
tp tin nh
TT. Visual Basic
Trong chng trnh ny ta mun h khi nt tri ca Mouse xung v di
chuyn chut th khi con tr chut i n u, hnh INTL_NO c v n .
Bc 5: Ta s dng mt bin nh du nt-tri-ca-Mouse-Down, t tn l
IsMousedown. Khi nhn c s kin MouseDown ta t IsMouseDown thnh True,
v khi nhn c s kin MouseUp ta t li IsMouseDown thnh False. Mi ln
nhn c s kin MouseMove th nu IsMouseDown l True ta s v hnh
INTL_NO.
Trong phn [General]\[Declaration], khai bo bin sau:
Dim IsMouseDown As Boolean
Bc 6: u tin bin ny phi c khi to l False trong s kin Form_Load:
Private Sub Form_Load()
IsMouseDown = False
End Sub
Bc 7: Ta x l cc s kin MouseUp, MouseDown, MouseMove ca Form nh sau:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y
As Single)
IsMouseDown = True
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y
As Single)
If IsMouseDown Then
' V hnh ti v tr X, Y
PaintPicture picDohoa.Picture, X, Y, picDohoa.Width, picDohoa.Height
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As
Single)
IsMouseDown = False
End Sub
Bc 8: Chn Form1 trong ca s Project Explorer, ta s x l s kin khi ta nhp
chn mc Xoa man hinh trn menu nh sau:
Private Sub mnuXoa_Click()
Cls
End Sub
Bc 9: Khi ta nhp chn mc Thoat trn menu, chng trnh t ng ng li s
kin mnuThoat_Click c x l: