Professional Documents
Culture Documents
Bi tp chng 1
A - BI TP
Bi tp 1: S dng hm MsgBox v InputBox Vit chng trnh gii phng trnh
bc 2. H s a, b, c nhp t bn phm bng hm InputBox (Gii s a 0).
Bi tp 2: Minh ho cu trc If Then. Vit chng trnh tnh lng nh sau: Cho
ngi dng nhp vo lng c bn LCB, H s lng HSL v chc v CV. Nu
chc v l "giam doc" th cng thm 500000 vo lng thc lnh (LTL), nu l
"truong phong" th cng thm 300000, nu l "to truong" th cng thm 200000, nu
l "nhan vien" th khng cng. Sau hin th tng s lng thc lnh.
Bi tp 3-Select Case: Yu cu nh bi 2, nhng s dng cu trc Select Case
Bi tp 4: Hin th cc loi thng bo s dng hm MsgBox. Vit chng trnh
hin th 4 loi hp thoi MsgBox nh m t di y khi ngi dng nhp vo cc
s tng ng 1,2,3,4 bng hm InputBox:
Bi tp 5: S dng cu trc Select Case. Vit chng trnh cho php ngi dng
nhp vo 2 s thc a v b v mt trong cc php ton gm +, -, *, /, \ (Chia ly phn
nguyn), mod (chia ly phn d) hoc ^ (Lu tha). Sau hin th kt qu tng
ng. V d nu nhp 2 s 10, 20 v php ton l + th thng bo "Kt qu l 30" v.v.
Trang 1
n2 +
n =1
200
n2 +
n =100
310
n =300
Bi tp 16- Tnh dy Fibonasi: Tnh tng ca day s Fibonasi theo 2 cch: bng
qui v khng qui, vi N nhp t bn phm. Bit rng dy s Fibonasi c nh
ngha nh sau:
F (n) = 1 nu n = 0, n = 1
F (n) = Fn-2 + Fn-1 nu n 2
Bi tp 17- Tm c s chung ln nht : Tm c s chung ln nht ca 2 s a v
b (a,b nhp t bn phm).
Bi tp 18-Ti gin phn s : Kim tra xem phn s a/b (a, b nhp t bn phm)
ti gin hay cha? Nu cha ti gin th hy thc hin rt gn phn s v in ra
mn hnh.
Trang 2
Trang 3
PH LC 1
Di y l m t mt s hm rt hay dng trong VB bn tham kho trong khi lp
trnh v cho cc bi tp sau ny .
Tn hm
M t
V d
Abs (x)
Sqr(x)
Round(x)
Asc(Ch)
Chr(n)
UCase(S)
LCase(S)
Len(S)
Mid(S,i,n)
Left(S, n)
Right(S,n)
Trim(S)
LTrim(S)
RTrim(S)
StrReverse(S)
Str(x)
Val(S)
Instr(n,S1,S2)
Split(S, C)
Hm tnh gi tr tuyt i ca mt s.
Tnh cn bc hai ca mt s x (x>=0)
Lm trn s x
Tr v m ca k t Ch
Tr v k t c m Ascii l n
Tr v xu ch hoa (Nhng khng lm thay i
n xu S)
Tr v xu ch thng (Nhng khng lm thay
i n xu S)
Tr v di ca xu S
Ly mt xu con trong S t v tr th i, n k t.
Nu b qua tham s n th mc nh l ly t v tr i
n ht xu.
Ly ra n k t trong xu S tnh t bn tri
Ly ra n k t trong xu S tnh t bn phi
Tr v mt xu S nhng b cc du trng hai u
(Xu S khng b thay i).
Ging nh Trim(S) nhng ch ct pha tri
Ging nh Trim(S) nhng ch ct pha phi
o ngc xu S (S khng b thay i)
Chuyn s x sang dng xu
Chuyn mt xu sang dng s
Kim tra xu S2 c nm trong xu S1 hay khng.
Hm tr v gi tr > 0 nu c.
Tch xu S thnh cc phn t, vi k hiu phn
Abs(-5)
5
Sqr(4)
2
Round(3.2)
3
Asc("A")
65
Chr(65)
"A"
UCase("aBc")
"ABC"
UCase("aBc")
"abc"
Len("abc123")
Mid("ABCDE", 2,3)
"BCD"
Left(S,"ABCD",3)
"ABC"
Right(S,"ABCD",3)
"BCD"
Trim(" ABC ")
"ABC"
Dim S As string, R As
Trang 4
tch l C.
Replace
(S, S1, S2)
FileLen(F)
CurDir
Year(D)
Month(D)
Day(D)
Hour(T)
Now
Time
Rnd
Variant
Dim I As integer
S = ha,noi,viet,nam
R = Split(S,,)
For i=0 to Ubound(R)
Msgbox R(i)
Next
Dim S As string
S = Replace(A!!,!!,!)
MsgBox FileLen("C:\io.sys")
Msgbox CurDir
Dim D As Date
D = Now
Msgbox Year(D)
MsgBox Month(Now)
Day(#21/2/2004#)
21
Hour(Time)
Msgbox now
Msgbox Time
Msgbox Rnd
B. HNG DN - GII MU
Bi tp 1
a. Hng dn: Cn tnh gi tr ca , Sau s dng cu trc lnh If...Then...Else
(Hoc cu trc Select Case) kim tra v tnh nghim.
b. Chng trnh mu:
Cch 1: S dng cu trc If..Then Else
a = InputBox("Nhp h s a (a<>0):")
b = InputBox("Nhp h s b : ")
c = InputBox("Nhp h s c : ")
Delta = b ^ 2 - 4 * a * c
Select Case Delta
Case Is < 0
MsgBox "V nghim "
Case 0
x1 = -b / (2 * a)
MsgBox "Nghim kp:" & x1
Case Is > 0
x1 = (-b + Sqr(Delta)) / (2 * a)
x2 = (-b - Sqr(Delta)) / (2 * a)
MsgBox "x1=" &x1 &" x2=" &x2
End Select
End Sub
c. Ghi ch: Cu trc Select Case ca VB rt mnh, n khng nhng kim tra biu
thc dng s nguyn m cn c th kim tra c dng s thc, xu k t, ng thi
vi mi loi gi tr c th kim tra mt khong gi tr (s dng t kho Case is )
Trang 5
Bi tp 2
a. Hng dn: Lng thc lnh (LTL) = HSL * LCB + Ph cp chc v. tnh Ph
cp chc v, cn s dng cu lnh If ... Then kim tra xem chc v nhp vo c
l "giam doc", "truong phong" hay "to truong" hay khng cng thm.
b. Chng trnh mu:
Chng trnh nhp v tnh lng
Private Sub Form_Load()
Dim HSL As Long, LCB As Long, PCCV As Long, LTL As Long
Dim CV As String
LCB = InputBox("nhp vo lng c bn : ", "Tnh lng", 290000)
HSL = InputBox("nhp vo h s lng", "Tnh lng", 1.92)
CV = InputBox("Chc v ")
If CV = "giam doc" Then LTL = HSL * LCB + 500000
If CV = "truong phong" Then LTL = HSL * LCB + 300000
If CV = "to truong" Then LTL = HSL * LCB + 20000
If CV = "nhan vien" Then LTL = HSL * LCB
End Sub
C. Ghi ch: chng trnh vn tnh ng cho d ngi dng c th nhp chc v
dng ch thng hay ch HOA th nn UCase cc xu trc tin. (Xem ph lc 1)
Trang 6
Bi tp 4
a. Hng dn: hin th hp thoi Msgbox vi cc nt v biu tng khc nhau, ta
ch cn thm cc hng vo tham s th 2 ca hm MsgBox, v d : vbQuestion,
vbYesNo, vbOKCancel, vbInformation, vbAbortRetryIgnore....
Ngoi ra, bit ngi dng mun hin th loi hp thoi no (nhp vo s my) cn
s dng cu trc Select Case kim tra v ra quyt nh.
b. Chng trnh mu:
Private Sub Form_Load()
Dim Kieu As Byte
Kieu = InputBox("Bn hy nhp vo mt s (1-4) chn kiu MsgBox : ")
Select Case Kieu
Case 1: MsgBox "Kiu n gin ch c nt OK" '///Vit nhiu lnh cn cch nhau du ":"
Case 2: MsgBox "C 2 nt Yes v No", vbYesNo
Case 3: MsgBox "C nt OK, Cancel v du hi chm", vbOKCancel Or vbQuestion
Case 4: MsgBox "C 3 nt v du cnh bo mu ", vbAbortRetryIgnore Or vbCritical
Case Else: MsgBox "Bn phi nhp 1,2,3 hoc 4", vbExclamation, "nhp sai"
End Select
End Sub
c. Ghi ch:
Bi tp 5
a. Hng dn:
Vic cng, tr, nhn hay chia a vi b v.v... cn ph thuc vo php ton (ton t) m
ngi dng nhp vo l g. Do vy, ra quyt nh l thc hin php ton no ln 2
ton hng a v b , cn s dng cu trc Select Case kim tra ton t nhp
vo.
b. Chng trnh mu:
Private Sub Form_Load()
Dim a As Single, b As Single, KetQua As Single
Dim PhepToan As String
a = InputBox("Nhp s hng th nht: ")
PhepToan = InputBox("Nhp vo php ton (+,-,*,/,mod,div,^)")
b = InputBox("Nhp s hng th hai: ")
Select Case PhepToan
Case "+": KetQua = a + b
Case "-"
KetQua = a - b
Case "*": KetQua = a * b
Case "/": KetQua = a / b
Case "div": KetQua = a \ b
Case "mod": KetQua = a Mod b
Case "^": KetQua = a ^ b
Trang 7
Case Else: MsgBox "Ti khng hiu php ton ny !", vbExclamation, "Nhp sai"
End Select
MsgBox "Kt qu ca " & a & PhepToan & b & " l : " & KetQua
End Sub
S=S+i
i=i+1
Loop
Msgbox "Tng = " & S
Bi tp 7
a. Hng dn: C nhiu cch tnh nhng trong trng hp ny c th s dng vng
lp For kt hp vi iu khon Step:
b. Chng trnh mu:
Private Sub Form_Load()
Dim i As Integer, S As Long
S=0
For i = 2 To 100 Step 2
S=S+i
Next
MsgBox "Tng cc s chn t 1->100 l : " & S
End Sub
c. Ghi ch:
Bi tp 8
a. Hng dn: Thng thng trong VB, vi vng lp For th c sau mi ln lp bin
chy t ng c tng ln 1 n v. Tuy nhin, trong mt s trng hp ta mun
bin chy thay i theo chiu gim dn (Tng t nh For Downto ca
Pascal), tc l sau mi ln lp th bin chy li b gim i mt n v th cn phi s
dng n iu khon Step N vi N l mt s m. Nu mun sau mi vng lp bin
chy i gim i mt n v th ta cn vit : For i = N to 1 Step -1
b. Chng trnh mu:
Private Sub Form_Load()
Dim i As Integer
For i = 100 To 1 Step -1
Debug.Print i
Next
End Sub
Bi tp 9
a. Hng dn: V khng bit ngi dng nhp bao nhiu s do vy ta c th dng
vng lp khng xc nh tin hnh cng vic nhp. Ngoi ra, cng cn c 2 bin
lu tng cc s m v dng. iu kin kt thc vng lp s l n=0.
Trang 9
b.Gii mu:
Private Sub Form_load()
Dim n As Long, i As Long
Dim TongAm As Long
Dim TongDuong As Long
TongAm = 0
TongDuong = 0
Do
n = InputBox("Nhp vo mt s nguyn : ")
If n > 0 Then
TongDuong = TongDuong + n
Else
TongAm = TongAm + n
End If
Loop Until n = 0
'/// Lp cho n khi no nhp n = 0 th dng.
MsgBox "Tng cc s m = " & TongAm & ". Tong cc s dng = " & TongDuong
End Sub
c. Ghi ch:
Vng lp Do . Loop Until <K> s kt thc khi iu kin <K> bng true
Vng lp DoLoop Until khc vi vng lp dng Do.Loop While <K>
ch vng lp DoLoop While <K> kt thc khi <K> vn l False.
Thc cht, cu trc lp DoLoop Until v Do Loop While l tng
ng nhau, do vy trnh nhm ln chng ta ch nn nh mt loi khi thc
hnh.
C th thot khi vng lp dng Do Loop bng cu lnh Exit Do
Bi tp 10
a. Hng dn: V khng th bit c l sau bao nhiu nm th tng s tin s l
2.000.000, m ch bit rng mi nm s tng thm mt lng no . Do vy, y
ta s s dng vng lp khng xc nh v mi ln lp ta s kim tra xem c s
tin cn thit hay cha? Nu ri th thot v s ln th chnh l s nm cn tm.
Nhng y ti sao ta li s dng vng lp Do WhileLoop m khng l Do
Loop ?. S d s dng vng lp Do While Loop l v rng s tin gi vo ban
u rt c th ln hn s tin k vng !
b. Chng trnh mu:
Private Sub Form_Load()
Dim SoNam As Integer, TongTien As Long
SoNam = 0
TongTien = 1000000
Do While TongTien < 2000000
SoNam = SoNam + 1
TongTien = (1 + 0.05) ^ SoNam * TongTien /// Cng thc cn nh
Loop
MsgBox "Cn phi gi trong " & SoNam & " nm !"
End Sub
c. Ghi ch: y l bi ton tnh tin gi tit kim, GDP c th p dng trong cuc sng
Trang 10
Bi tp 11
a. Hng dn: Mt s N c gi l s nguyn t nu nh n ch chia ht cho 1 v
chnh n. Hay ni cch khc l s N khng l nguyn t nu nh n chia ht cho t
nht mt s nm trong khong [2N-1]. Nh vy, kim tra ta ch cn duyt tt c
cc s i trong phm vi t [2N-1] xem N mod i = 0 ?, nu xy ra th kt lun ngay
rng N khng l nguyn t, tri li nu sau khi duyt ht m khng thy trng
hp xy ra th kt lun N l nguyn t.
Ngi ta chng minh c rng khng cn phi duyt t [2N-1] m ch cn
duyt trong phm vi hp hn l t [2.. N ] .
b. Chng trnh mu:
Private Sub Form_Load()
Dim n As Integer, i As Integer, KetQua As Boolean
n = InputBox("Nhp vo mt s nguyn ")
KetQua = True
For i = 2 To Sqr(n)
If n Mod i = 0 Then
KetQua = False
Exit For
End If
Next
If KetQua = True Then MsgBox n & l s nguyn t !
If KetQua = False Then MsgBox n & khng phi l s nguyn t !
End Sub
c. Ghi ch:
Bi tp 12
a. Hng dn: Giai tha ca s N c tnh theo cng thc N!=1.2.3N-1.N.
tnh ton ta thc hin nhn dn cc s i ( i = 1 N) vo kt qu.
b. Chng trnh mu:
Private Sub Form_Load()
Dim n As Integer, i As Integer, KetQua As Long
Trang 11
Do
n = InputBox("Cn tnh giai tha ca my : ")
Loop Until (0 < n And n < 10)
'/// S dng vng lp For
KetQua = 1
For i = 1 To n
KetQua = KetQua * i
Next
Debug.Print "Kt qu ca " & n & "! = " & KetQua
'/// S dng vng lp Do While
KetQua = 1
i=1
Do While i <= n
KetQua = KetQua * i
i=i+1
Loop
Debug.Print "Kt qu ca " & n & "! = " & KetQua
'/// S dng vng lp Do Until
KetQua = 1
i=1
Do Until i > n
KetQua = KetQua * i
i=i+1
Loop
Debug.Print "Kt qu ca " & n & "! = " & KetQua
'/// S dng vng lp Do ... Loop While
i=1
KetQua = 1
Do
KetQua = KetQua * i
i=i+1
Loop While i <= n
Debug.Print "Kt qu ca " & n & "! = " & KetQua
'/// S dng vng lp Do ... Loop Until
i=1
KetQua = 1
Do
KetQua = KetQua * i
i=i+1
Loop Until i > n
Debug.Print "Kt qu ca " & n & "! = " & KetQua
End Sub
c. Ghi ch:
o Do
Bi tp 13
a. Hng dn: Ta c thng S = S1 + S2 + S3, vi S1, S2, S3 tng ng vi 3 tng
trn. S dng vng lp tnh tng ca mi Si, sau cng li c kt qu.
b. Chng trnh mu:
Private Sub form_load()
Dim i As Integer
Dim Tong As Long
Dim S1 As Long, S2 As Long, S3 As Long
Tong = 0
' u tin do cha tnh nn Tong bng 0
S1 = 0
S2 = 0
S3 = 0
'/// Tnh tng S1
For i = 1 To 8
S1 = S1 + i ^ 2
Next
'/// Tnh tng S2
For i = 100 To 200
S2 = S2 + i ^ 2
Next
'/// Tnh tng S3
For i = 300 To 310
S3 = S3 + i ^ 2
Next
S = S1 + S2 + S3
MsgBox "Tng l : " & Tong, vbInformation, "Thng bo ..."
End Sub
Trang 13
Bi tp 14:
a. Hng dn: Cng thc tnh giai tha ca s N l: N! = 1.2.3N-1.N, nh vy
y ta cn nhn lin tip cc s i (i chy t 1 n n) vo kt qu. Trong , gi tr
khi to cho kt qu l 1. Bi ny c th gii theo cch qui hoc khng qui.
b. Chng trnh mu
Cch 1: Dng vng lp (Khng dng qui)
Private Sub Form_Load()
Dim i As Integer, n As Integer
Dim KetQua As Long
'/// Nhp s n (0<n<20)
Do
n = InputBox("Nhp s N : ", "Tnh giai tha")
Loop Until (0 < n And n < 20)
KetQua = 1
For i = 1 To n
KetQua = KetQua * i
Next
MsgBox n & " ! bng " & KetQua
End Sub
Cch 2: Dng qui
'/// Hm qui tnh N !
Do
N = InputBox("Nhp s N : ", "Tnh giai tha")
Loop Until (0 < N And N < 20)
MsgBox N & " ! bng " & GiaiThua(N)
End Sub
Trang 14
Bi tp 15:
a. Hng dn: Vi bi ton dng tnh tng ca mt chui s khi bit s hng tng
qut Si, ni chung l n gin. C th thc hin theo gii thu nh sau:
S=0
For i = i0 TO in
S = S + Si
Next
Vi mi dy khc nhau th gi tr i0, N, Si c th khc nhau v cn phi xc nh.
S i = i * n + (i + 1)
Trang 15
i=2
Do While i <= N
KetQua = F1 + F2
F1 = F2
F2 = KetQua
i=i+1
Loop
Fib_KhongDequi = KetQua
End Function
'--------------------------------------------------------------------------------------------------------------------------'/// Chng trnh chnh
Ch : Ring vi bi ton ny, ngi ta cn c th gii bng phng php qui hoch
ng (Dynamic Programming) rt n gin nh sau:
Function Fib_DynamicPrgramming(ByVal N As Integer) As Long
Dim i As Integer
Dim F(1000) As Long '/// Bng cha gi tr tnh ton c bc trung gian
'/// im xut pht
F(0) = 1
F(1) = 1
For i = 2 To N
F(i) = F(i - 2) + F(i - 1)
Next
Fib_DynamicPrgramming = F(N)
End Function
Bi tp 17:
a. Hng dn: tm c s chung ln nht ca 2 s nguyn a v b, ngi ta c
th da vo cng thc -Le v ci t bng vng lp hoc qui. Vic tm c s
chung c ng dng vo ti gin phn s.
b. Chng trnh mu:
'/// Tm USCLN khng dng qui
Trang 16
Bi tp 18:
a. Hng dn: Phn s dng a/b c gi l ti gin nu c s chung ln nht ca
a v b l 1. V d: phn s 5/7 v 9/7 l ti gin; 4/6 v 6/4 l cha ti gin.
b. Chng trnh mu:
'/// Tm c s chung ln nht ca 2 s a v b
/// Tnh li t s mi
/// Tnh li mu s mi
MsgBox "Phn s sau khi ti gin l : " & TuMoi & "/" & MauMoi
End If
End Sub
Bi tp 19:
a. Hng dn: Trc ht cn xy dng hm kim tra xem s N c phi l nguyn t
hay khng ? Sau s dng kt qu ny vo gii quyt yu cu bi ton.
b. Chng trnh mu:
Trang 17
Bi tp 20
a. Hng dn:
m s k t a v A trong mt xu S, chng ta cn duyt v kim tra ln lt
tng k t nm trong xu S v so snh vi k t a v A. duyt (ly tng k t
trong xu S) chng ta c th s dng mt trong 3 loi vng lp. Hm Mid(S,i,1) cho
ta k t ti v tr th i trong xu S.
b. Chng trnh mu (S dng vng lp Do While):
Form_load()
Dim S As String
Dim TongAa As Integer
Dim i As Integer
S = InputBox("Bn hy nhp mt xu : ")
i=1
TongAa = 0
'Bt u t k t th nht
'Khi to s k t A hoa v a thng ban u bng 0.
Trang 18
xi
(y l s
i+n
hng tng qut) v i chy t 0 n N. Do vy tnh tng chng ta cn s dng mt
trong 3 loi vng lp hc.
a. Hng dn: Tng S chnh l tng ca cc s hng th i, vi Si =
Trang 19
For i = 1 To N
A(i) = InputBox("Nhp vo s th " & i)
Next
'/////// Tm s ln nht trong N s va nhp ///////////////////////
MAX = A(1)
'///Gi nh phn t ln nht l phn t A(1)
For i = 1 To N
If A(i) > MAX Then MAX = A(i)
Next
MsgBox "Phn t ln nht l : " & MAX
End Sub
MAX = DS(1)
For i = 1 To N
If MAX < DS(i) Then MAX = DS(i)
Next
'/// Hin th nhng phn t bng vi MAX (chnh l nhng pt ln nht)
For i = 1 To N
If DS(i) = MAX Then Debug.Print DS(i)
Next
End Sub
C. Ghi ch:
C th p dng gii bi ton tm s nh nht, in ra cc s nh nht v.v
Trong danh sch khng phi ch c duy nht mt phn t ln nht (nh nht)
Bi tp 24
a. Hng dn:
sp xp mt dy s A c N phn t ta tin hnh nh sau:
Bt u t phn t u tin
Trang 20
Ch :
Bi tp 25
a. Hng dn: V bn cht, gii thut Quick_Sort s dng phng php Chia tr
(Deive and Conquer). C th m t th thut ton ny nh sau:
- Chn mt v tr K gia (Khng nht thit l chnh gia) ca danh sch L.
- Duyt tng phn t v xt: Nu phn t L[i] < L[k] th cho vo danh sch con
L1, cn nu L[i] >= L[k] th cho vo danh sch L2. Kt qu ta c:
L = L1 L[k] L2, Trong L[k] v tr ng. Tip tc thc hin qui vi L1
v L2 Do L hu hn nn thut ton s dng. phc tp ca thut ton
ny trung bnh vo c O(n) = n.Log2n.
Trang 21
Trang 22
c. Ghi ch:
Tham s hnh thc trong phn khai bo chng trnh con l mt mng th phi
vit di dng nh sau: <Tn> () As <Kiu c bn>, Cch vit: A (10) As
integer hay A (1 to 10) As String v.v l sai !.
Gii thut Quick_Sort thc hin tng i nhanh khi n ln. Ngi ta gi gii
thut sp xp Quick_Sort v mt s gii thut sp xp nhanh khc (nh
Merge sort, Heap sort) thuc phng php sp Cng nghip, do vy cn
phi nh v vn dng thnh tho gii thut ny.
Bi tp 26
a. Hng dn: tng ca gii thut ny l dng mng mt chiu biu din cy
nh phn. Sau tinh chnh dn cc cy con c sp xp cho kt qu cui
cng.
b. Chng trnh mu
'/// Th tc hon i gi tr ca 2 bin a v b cho nhau (s s dng trong chng trnh)
Trang 23
c. Ghi ch:
Ton t \ thc hin php chia ly phn nguyn.
Khi gi hm hay th tc c th thm t kho Call hoc khng, nhng khi c t
kho Call th cc tham s phi c t trong ngoc n nh trn.
Mt cy nh phn c th biu din bng mng mt chiu, trong nt con tri
ca nt i c ch s l i*2 v nt con phi l i*2 + 1. Nt cha ca nt i c ch s
l i \ 2.
Bi tp 27
a. Hng dn: Vic sp xp c th thc hin thng qua gii thut sp xp n gin
c phc tp tnh ton n2. (p dng thut ton s dng trong bi tp 12)
b. Chng trnh mu:
Private Sub Form_Load()
Dim DanhSach(100) As String
Dim SoSV As Integer
Dim i As Integer
Trang 24
For i = 1 To SoSV- 1
For j = i + 1 To SoSV
If DanhSach(j) < DanhSach(i) Then
TrungGian = DanhSach(i)
DanhSach(i) = DanhSach(j)
DanhSach(j) = TrungGian
End If
Next
Next
'/// Hin th danh sch va sp xp ra ca s Immediate
'/// Nhn Ctrl-G hin th ca s ny
For i = 1 To SoSV
Debug.Print DanhSach(i)
Next
End Sub
S = Trim(S)
'/// Tr kt qu v cho hm. (Lu : Bn thn xu S khng b thay i khi ra khi hm)
ChuanHoa = S
End Function
'----------------------------------------------------------------------------------------------------------------------------'/// Chng trnh chnh
Trang 25
c. Ghi ch:
Bi tp 29
a. Hng dn:
S = Trim(S)
'///----------- Chuyn i thnh k t HOA mi u cu (Sau du ".")----------///
S2 = ""
'///Kim tra tng k t, nu l du "." th chuyn k t ng cnh (cch 2 v tr) thnh ch HOA.
For i = 1 To Len(S)
If (Mid(S, i, 1) = ".") And (i < Len(S)) Then
S2 = S2 & "." & Mid(S, i+1, 1) & UCase(Mid(S, i + 2, 1))
i = i + 2 '/// B qua v tr i+1 v i+2 (v cng vo kt qu S2 dng trn ri)
Else
S2 = S2 & Mid(S, i, 1) '/// Nu khng phi l du "." th cng vo S2
End If
Next
'// Cng cn chuyn k t u vn bn thnh ch HOA
ChuanHoa = S2
End Function
Trang 26
c. Ghi ch:
Hm Mid(S,i,n) ly n k t ti v tr i ca xu S. Nu b qua tham s n th
hm s tr v cc k t cn li t v tr i cho n cui xu. Nu n = 1 th cho ta
k t ti v tr th i. (Trong cc ngn ng lp trnh khc, ly k t th i trong
xu S, ta thng vit S[i]
nhng trong VB phi vit l Mid(S,i,1) )
Left(S,n) : Tr v n k t pha tri ca xu S
Right(S,n) : Tr v n k t pha phi ca xu S.
Hm Ucase(S) : Tr v xu S nhng dng ch HOA
Lcase(S) : Tr v xu ch thng ca S.
Bi tp 30
a. Hng dn: y ta cn duyt ln lt tng k t v kim tra, s c 2 kh nng
xy ra. trong qu trnh thc hin, ta s dng mt bin xu lu cc s.
b. Chng trnh mu
'/// Tch cc s ra khi xu
Trang 27
Bi tp 31
a. Hng dn: Gi S1 l mt cu trong xu S. Ta duyt tng k t trong S v cng
vo S1 cho n khi no gp k t l du chm hoc ht xu th dng li. Sau in
xu S1 ra mn hnh v t li S1 = .
b. Chng trnh mu:
'/// Tch cc cu ra khi xu vn bn
Debug.Print S1
End Sub
'/// M c (Input=c)
F_Dich = FreeFile
Open "c:\FontVIQR.txt" For Output As F_Dich
Trang 28
c. Ghi ch:
Bi tp 33
a. hng dn: C nhiu cch gii quyt bi ny, nhng cch nhanh gn nht l dng
mt mng lu tr s lng k t nhp. Ch s ca cc phn t trong mng
lu s lng k t s l gi tr ASCII ca k t . V d: M[65] dng lu s
lng k t l ch ci A.
b. Chng trnh mu
'/// m s lng tng loi k t
Trang 29
c. Ghi ch:
65
Bi tp 34
a. Hng dn : Sdng hm Replace
b. Chng trnh mu:
'/// Thay th k t
Bi tp 35
a. Hng dn: Thc hin cng t phi sang tri tng cp k t s vi nhau (c tnh
n phn nh)
b. Chng trnh mu
Private Sub Form_Load()
Dim S1 As String, S2 As String, S As String
Dim i As Integer, Nho As Integer, DonVi As Integer /// Nho=Nh, DonVI=n V
S1 = InputBox("Nhp vo s nguyn dng th nht : ")
S2 = InputBox("Nhp vo s nguyn dng th hai : ")
'/// Chn thm s 0 vo trc xu s2 2 xu di bng nhau
nu S2 < S1
Trang 30
c. Ghi ch:
C th p dng thc hin cng 2 s nguyn, hai s thc hay s nguyn vi
s thc.
C th vn dng vo vic nhn 2 s ln.
Hm String(N,Ch) : Tr v mt xu cha N k t Ch
Hm Val (S) : Chuyn xu S thnh s.
Php Mod thc hin vic chia ly phn d
Php ton \ thc hin vic chia ly phn nguyn.
Bi tp 36
a. hng dn: Cc phn t trn ng cho chnh th nht c ch s l [i,i] (vi i
chy t 1 n n). ng cho chnh th hai c ch s l [i,j] (vi i chy t 1 n n v
j chy t n-i+1 n 1)
b. Chng trnh mu:
Private Sub Form_Load()
Const MAX = 10
Dim TongDuong As Long, TongAm As Long
Dim A(1 To MAX, 1 To MAX) As Integer
Dim N As Integer, i As Integer, j As Integer
N = InputBox("Kch thc ca ma trn : ")
'/// Nhp d liu cho ma trn
For i = 1 To N
For j = 1 To N
A(i, j) = InputBox("Nhp phn t A[" & i & "," & j & "]")
Next j
Next i
TongAm = 0
TongDuong = 0
'/// Cng trn ng cho th nht
For i = 1 To N
If A(i, i) < 0 Then
TongAm = TongAm + A(i, i)
Else
TongDuong = TongDuong + A(i, i)
End If
Next
'/// Cng trn ng cho th hai
For i = 1 To N
If A(i, N - i + 1) < 0 Then
TongAm = TongAm + A(i, N - i + 1)
Else
TongDuong = TongDuong + A(i, N - i + 1)
End If
Next
MsgBox "Tng m = " & TongAm & " Tng dng = " & TongDuong
End Sub
Trang 31
Bi tp 37
a. Hng dn: Kim tra tng v tr A[i,j] ca ma trn. Vi mi v tr ta th lan tip
theo chiu ngang, dc, cho xem liu c lin k m c gi tr 1 hay khng ?. Nu
c th ghi nhn thm vo, trong qu trnh ghi nhn th cn kim tra, nu s >=5
th dng v thng bo l c tn ti mt hng lin nhau cng c gi tr l 1.
b. Chng trnh mu:
Option Explicit
Dim A(1 To 10, 1 To 10) As Integer
Dim N As Integer
'///Hm kim tra xem ti v tr hng h, ct c c t nht 5 c cng gi tr 1 hay khng ?
'/// Nu tn ti th hm tr v gi tr True, tri li tr v False
Trang 32
For i = 1 To 4
If (h + i <= N) And (c - i >= 1) Then
If A(h + i, c - i) = 0 Then Exit For
SoPT = SoPT + 1
End If
Next
KiemTraCheo2 = SoPT >= 5
End Function
'----------------------------------------------------------------------------------------------------------------------------Private Sub Form_Load()
Dim i As Integer, j As Integer
N = InputBox("Kch thc ca ma trn : ")
'/// Nhp d liu cho ma trn
For i = 1 To N
For j = 1 To N
A(i, j) = InputBox("Nhp phn t A[" & i & "," & j & "]")
Next j
Next i
For i = 1 To N
For j = 1 To N
If A(i, j) = 1 Then
If KiemTraHangNgang(i, j) Then
MsgBox "ng ngang bt u t v tr " & i & ":" & j
End
End If
If KiemTraHangDoc(i, j) Then
MsgBox "ng dc bt u t v tr " & i & ":" & j
End
End If
If KiemTraCheo1(i, j) Then
MsgBox "ng cho chnh 1, bt u t v tr " & i & ":" & j
End
End If
If KiemTraCheo2(i, j) Then
MsgBox "ng cho chnh 2, bt u t v tr " & i & ":" & j
End
End If
End If
Next
Next
MsgBox "Khng thy xut hin !"
End Sub
Bi tp 37
a. Hng dn: Mun nh ngha kiu d liu mi, cn dng t kho Type End
type v thng nh ngha trong Module.
Trang 33
For i = 1 To SoLuong - 1
For j = i + 1 To SoLuong
If DS(i).NamSinh > DS(j).NamSinh Then
Tam = DS(i)
DS(i) = DS(j)
DS(j) = Tam
End If
Next
Next
'/// Lu kt qu ra tp
Dim F As Long
F = FreeFile
Open "c:\Canbo.txt" For Output As #F
For i = 1 To SoLuong
Print #F, DS(i).HoTen, vbTab, DS(i).NamSinh
Next
Msgbox M file c:\Canbo.txt quan st
Close F
End Sub
c. Ghi ch:
C BI TP T GII
Bi 1: Vit chng trnh nhp vo 3 cnh ca tam gic (Lu phi m bo kim tra
tng 2 cnh ln hn cnh cn li). Dng hm MsgBox hin th chu vi, din tch,
di 3 ng cao, 3 ng trung tuyn, 3 ng phn gic, bn knh ng trn ni
tip, ngoi tip theo cc cng thc sau:
V = a+b+c = 2p
2S
S = p ( p a )( p b)( p c)
ha =
a
1
2
ma =
ga =
2b 2 + 2c 2 a 2
bcp( p a)
2
b+c
S
abc
r=
R=
P
4S
Bi tp 2: Thng tin v mt sinh vin gm c: H tn, Tui, im ton (H s 2),
im tin (H s 1). Hy nhp cc thng tin trn cho mt lp v in ra bng im gm
cc chi tit nu trn v im trung bnh.
HD: nh ngha kiu d liu mi bng t kho Type (Tng t nh Record trong
pascal) v khai bo mt Mng lu tr danh sch sinh vin. Dng hm inputbox
nhp liu, hm Debug.print in kt qu.
Bi tp 3: Nhp 3 s a, b, c. Hy cho bit 3 s trn c th l di 3 cnh ca tam
gic hay khng ?. Nu lp thnh mt tam gic th l tam gic g : Vung, u, cn,
vung cn hay tam gic thng.
HD: S dng cu trc If ... Then v If...Then ...Else.
Bi tp 4: Nhp mt k t. Hy cho bit l ch ci vit hoa, thng, ch s hay
k t khc.
HD: S dng cu trc Select Case
Bi tp 5: Nhp vo thng v nm dng lch. Hy hin th s ngy trong thng .
HD: S dng cu trc Select Case v lu nhng thng ca nm nhun (Tc thng
2 c 29 ngy).
Bi tp 6 : Nhp vo tn ca mt hm (Ch thng hoc hoa) v gi tr ca mt
bin s. Sau in ra kt qu ca hm. V d : Nu nhp tn hm l Cos v gi tr
bin s l 0 th kt qu l 1.
HD: S dng cu trc Select Case v hm UCase (hoc LCase)
Bi tp 7: Va g va ch b li cho trn 36 con, 100 chn chn. Hy lp trnh cho
bit c bao nhiu con g, bao nhiu con ch.
HD: S dng 2 vng lp lng nhau th. Nu kim tra tho mn u bi th hin th
kt qu v dng vng lp.
Bi tp 8: C 100 con tru, 100 b c, tru ng n nm b, tru nm n 3 b, tru
gi 3 con n 1 b. Hy lp trnh tm xem c bao nhiu con tru mi loi. HD : Tng
t nh bi tp 7, nhng s dng 3 vng lp th.
Trang 35
1 + 2 + 3 + ... + n
n
1 3 5
2n 1
S3= . . .....
2 4 6
2n
S1 =
S5 = 2 + 2 + 2 + ... + 2 (n du cn)
S2= 12 + 2 2 + 3 2 + ... + n 2
S4= 1 1 + 2 2 + 3 3 + ... + n n
S6 = n !
Trang 36
Bi tp 21: Vit chng trnh tnh din tch hnh gii hn bi ng y1=0, y2 = x2 v
xa=-2, xb=5. bng phng php trung bnh, bc nhy l i = xi+1-xi = 0.0000001.
2
n
( xi +1 + xi )
2
HD: Din tch S = 1 i * y i ; n = ( xb x a ) / i ; y i =
Bi tp 22: Vit chng trnh cho ngi dng nhp vo mt s nguyn dng, sau
in ra mn hnh dng ch, v d nhp "12345" th in ra l "mi hai nghn ba
trm bn mi lm".
HD: Phn chia thnh cc cm 3 ch s sau "c" cm 3 s kt hp vi hng ca
3 s . Nh v d trn th s 12 c c l "mi hai", nhng v s ny thuc
hng nghn nn thm t "nghn".
Bi tp 23: Nhp vo n s v in ra c s chung ln nht ca n s
Bi tp 24: Vit chng trnh m ho mt file vn bn bng phng php m ho
c in. Kt qu c lu vo mt file vn bn khc. Qui tc m ho nh sau:
K t ban u
a
b
c
.................
z
A
B
.............
Z
K t sau khi b m ho
b
c
d
.....
a
B
C
.......
A
Bi tp 25: Vit chng trnh gii m theo qui tc ca bi 24. (B-> A, A->Z...)
Bi tp 26 : Vit chng trnh chuyn i mt dy cc con s (dy con s ny cho
di dng mt xu, v d '142345'). Sau chuyn dy s ny thnh s chui nh
phn, trong mi ch s c chuyn thnh 1 cm 4 bit nh phn. v d nu nhp
xu '1234567' th kt qu cho ta : '0001 0010 0011 0100 0101 0110 0111'.
Bi tp 26: Vit chng trnh chuyn i dy nh phn thnh dy cc k t ASCII
tng ng, bit rng mi cm gm 7 bit nh phn biu din mt k t c m l gi tr
h 10 ca 7 bit .
Bi tp 27: Nhp vo n im trong to phng. Sau in ra mn hnh s lng
tam gic c th c t n im .
Bi tp 28: Yu cu nh bi tp 27 nhng m s lng tam gic u, cn, vung,
vung cn v tam gic thng.
Bi tp 29 : Yu cu nh bi tp 27 nhng m s lng tam gic gc phn t
th I, II, III, IV.
Bi tp 30: Nhp vo mt s h 10 sau in gi tr ca n trong h c s 2, 8, 16.
Trang 37
Chng ii
S dng cc iu khin c bn
MC TIU: SAU KHI HON THNH CC BI TP, NGI HC C TH
S dng c cc iu khin c bn ca VB
Kt hp s dng nhiu iu khin c bn trong chng trnh
Vn dng cc iu khin vit c mt s chng trnh tin ch.
A - BI TP
Bi 1: Vit chng trnh gii phng trnh bc 2. H s a, b, c nhp t cc
TextBox. Kt qu nghim c hin th trn 2 nhn, hoc thng bo l v nghim
bng hm MsgBox. Giao din c dng nh sau:
Yu cu:
Trong c hai Listbox, u cho php ngi dng la chn nhiu mc ng thi.
Yu cu thm: Sau khi chn cc mc ang chn bn Listbox tri sang List
bn phi th cng ng thi xo cc mc ang chn khi Listbox bn tri.
Trang 40
Khi ngi dng nhp mt a ch Web (URL) v nhn Enter th thc hin thm
mc ny vo trong ComboBox
M trang Web vi a ch tng ng m ngi dng va nhp vo.
M trang Web tng ng khi ngi dng click chn trong hp ComboBox.
Trang 41
t font ch cho textbox bng vi Font ch khi ngi dng chn trong hp
Combox. Trong , hp Combox hin th ch (style) l : Dropdown list.
Trang 42
Gi tr chn mc nh l Restart-Normal
Khi ngi dng di chuyn thanh tiu th form cng di chuyn theo.
Trang 43
Khi Click vo nt
th dng cun.
Khi ni dung cun ht th t li Label v v tr cun ban u.
Trang 44
Hnh 2.18 - ng h in t
Trang 45
Hnh 2.19 -Giao din chng trnh bt phm t cc ng dng khc- KeyLogger
b. Yu cu
Khi ngi dng click chn nt Kt thc th lu cc phm nhn ghi nhn
c vo trong tp vn bn C:\Keys.txt
Hnh 2.20 Giao din chng trnh v kt qa khi click "Xem kch thc file"
b. Yu cu:
M file hin hnh (ang c chn) khi ngi dng click nt "M file ny" hoc
Click p mt file.
Xem kch thc file ang c chn khi chn nt Xem kch thc file
Xo file ang c chn (cn hi ngi dng xc nhn li trc khi xo).
Thot khi chng trnh khi ngi dng click nt "Thot"
Trang 46
Khi click vo nt
th thc hin chn ng dn v tn file ca nhng file
ang c chn vo trong Listbox pha bn phi. Sau hin th tng s file
v tng kch thc ca cc file c trong Listbox.
Trang 47
(Picture1)
Hnh 2.24 - (Hin menu khi click chut phi)
b. Yu cu
Khi ngi dng click chut phi ln biu tng trn khay h thng th hin th
(Popup) menu nh hnh 24.
Khi ngi dng click chn mc Exit th thot khi chng trnh.
Trang 48
B- HNG DN - GII MU
Bi 1
a. Thit k giao din v thit lp cc thuc tnh cho cc iu khin (Lu : T nay v
sau, tn ca cc iu khin c vit ngay cnh iu khin . Ring vi iu
khin Label no m khng thc s cn thit th tn c th mc nh - b qua)
d. Ghi ch:
Trong cu trc Select Case, nu mun thc hin mt cng vic ng vi biu
thc cn kim tra nm trong mt min gi tr th c th s dng t kho "IS"
Cu trc Select Case <K> khng ch lm vic vi biu thc <K> dng s
m cn c dng xu k t (nhiu ngn ng khc khng c kh nng ny).
Trang 49
Bi 2:
a. Giao din v thit lp tham s cho cc iu khin: Tn ca cc iu khin c
t nh trong hnh 26. Trong c mt iu khin chuyn dng cho nhp ngy
thng rt thun tin l Date Time Picker (nm trong th vin : Microsoft Windows
Common Control-2 6.0)
Bi 3
a. Giao din v thit lp thng s cho cc iu khin.
Trang 51
Else
MsgBox "Bn phi chn mt mc trc khi xo !"
End If
End Sub
Private Sub cmdThoat_Click()
End
End Sub
d. Ghi ch:
Hnh 2.28 - Nhp liu cho Listbox trong lc thit k (Nhn Ctrl-Enter xung dng)
Bi 4
a. Thit k giao din v thit lp thng s cho cc iu khin trn Form
Trang 53
d. Ghi ch:
Bi 6
a. Giao din v t thuc tnh cho cc iu khin trn Form
Xu vo cn o tn
Nguyen Van
An
An
Nguyen Van
Mng
Trang 54
'-----------------------------------------------------------------------------------------------------------------------------
c.Chng trnh mu
Option Explicit
'// Vit lnh cho th tc s kin click chut ln nt Tch
lstKetQua.Clear
'/// Xo Listbox lu kt qu
For i = 0 To UBound(S)
lstKetQua.AddItem S(i)
Next
End Sub
d. Ghi ch:
Bi 8.
a. Giao din v t tn cho cc iu khin trn form
c. Chng trnh mu
Option Explicit
'/// Hm ny c chc nng ct phn tn ( cui) a ln u (tn ln trc h)
For i = 0 To UBound(S) 1
KetQua = KetQua & Chr(32) & S(i)
Next
'/// Tr kt qu v cho hm
DaoTen = KetQua
End Function
'----------------------------------------------------------------------------------------------------------------------------'///Thc hin sp xp danh sch trong lstDSSV_SapXep khi ngi dng click "Sp xp theo TN"
For i = 0 To lstDSSV.ListCount - 1
lstDSSV_SapXep.AddItem Trim(lstDSSV.List(i))
Next
'/// Thc hin sp xp danh sch trong lstDSSV_SapXep s dng hm DaoXau.
For i = 0 To lstDSSV_SapXep.ListCount - 2
For j = i + 1 To lstDSSV_SapXep.ListCount - 1
If DaoTen(lstDSSV_SapXep.List(i)) > DaoTen(lstDSSV_SapXep.List(j)) Then
TG = lstDSSV_SapXep.List(i)
lstDSSV_SapXep.List(i) = lstDSSV_SapXep.List(j)
lstDSSV_SapXep.List(j) = TG
End If
Next
Next
End Sub
d. Ghi ch:
Bi 9
a. Giao din v t tn cho cc iu khin trn Form
c. Chng trnh mu
Option Explicit
'///Nu ngi dng chn a ch trong danh sch th m trang
End If
End Sub
d. Ghi ch:
Bi 10
a. Giao din v t tn cho cc iu khin trn form
For i = 0 To Screen.FontCount - 1
cboFontChu.AddItem Screen.Fonts(i)
Next
'----------------------------------------------------------------------------------------------------------------------------'/// Chn mt s gi tr vo trong cboCoChu
d. Ghi ch:
Trang 59
Bi 11
a. Giao din v t tn cho cc iu khin
Trang 60
Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
'/// Cc hm ny xin copy t API TextViewer i cng vi b Visual Studio 6.0
Private Declare Function GetCurrentProcess..
Private Declare Function OpenProcessToken
Private Declare Function LookupPrivilegeValue .
Private Declare Function AdjustTokenPrivileges
Private Declare Function ExitWindowsEx
Private Declare Function GetVersionEx ..
'///Kim tra xem h iu hnh ang chy c phi thuc dng Windows NT hay khng ?
Public Function IsWinNT() As Boolean
Dim myOS As OSVERSIONINFO
myOS.dwOSVersionInfoSize = Len(myOS)
GetVersionEx myOS
IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
Trang 61
End Sub
Form.frm
Private Sub cmdThucHien_Click()
If optLogoff.Value = True Then LogOffNT optFore.Value
If optRestart.Value = True Then RebootNT optFore.Value
If optShutdown.Value = True Then ShutDownNT optFore.Value
End Sub
d. Ghi ch:
Bi 12
a. Thit k giao din
c. Chng trnh mu
'/// Khai bo hm API
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As
Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
'----------------------------------------------------------------------------------------------------------------------------'/// Khi ngi dng click v di chut trn Label th "bo" vi Form l "Ngi dng an di chuyn
'/// thanh tiu " Form c di chuyn.
Private Sub lblTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
Call ReleaseCapture
'----------------------------------------------------------------------------------------------------------------------------'/// Thot khi chng trnh khi ngi dng click vo nt thot
Private Sub cmdThoat_Click()
End
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Thot khi chng trnh khi ngi dng click vo nt trn Form
Private Sub cmdClose_Click()
End
End Sub
d. Ghi ch:
Vic thay i tiu chun bng mt Label gip cho ng dng c th t Font
ch theo nh mun m khng b l thuc vo font h thng mc nh. Tuy
nhin c mt s hn ch l : Khi Form c h thng menu bar v thanh cng
c (Toolbar) v.v th vic thay th ny khng cn ngha v vic hin th khi
s b sai lch. Ni chung, ch nn thay th khi Form ng dng n gin,
cn i vi nhng form phc tp th nn s dng cc k thut khc.
Trang 63
Bi 13
a. Thit k giao din
lblMain.Caption = "Khoa Cng ngh thng tin - i hc s phm K thut Hng Yn. "
lblMain.Caption = lblMain.Caption & "Bi tp mn Lp trnh Hng s kin vi VB"
lblMain.Caption = lblMain.Caption & "Hng dn s dng Label kt hp vi iu khin Frame "
lblMain.Caption = lblMain.Caption & " v iu khin Timer. Hy click vo nt "
lblMain.Caption = lblMain.Caption & "Bt u v Dng cun v quan st !. "
lblMain.Caption = lblMain.Caption & vbCrLf & "C th thay i tc cun bng cch t li "
lblMain.Caption = lblMain.Caption & "thuc tnh Interval. Gi tr ny cng nh th tc cun cng nhanh."
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// C sau 50 miligiy th cun Label ln trn 5 twips. Trong khi cun cn kim tra v t li v tr ca Label
Trang 64
d. Ghi ch:
Bi 14
a. Thit k giao din
lblMain.Caption = "Khoa Cng ngh thng tin - i hc s phm K thut Hng Yn. "
lblMain.Caption = lblMain.Caption & "Bi tp mn Lp trnh Hng s kin vi VB"
lblMain.Caption = lblMain.Caption & "Hng dn s dng Label kt hp vi iu khin Frame "
lblMain.Caption = lblMain.Caption & " v iu khin Timer. Hy click vo nt "
lblMain.Caption = lblMain.Caption & "Bt u v Dng cun v quan st !. "
lblMain.Caption = lblMain.Caption & vbCrLf & "C th thay i tc cun bng cch t li "
lblMain.Caption = lblMain.Caption & "thuc tnh Interval. Gi tr ny cng nh th tc cun cng nhanh."
'///t mt s thuc tnh cho VscollBar. (Th tc s kin Change s c kch hot sau cc lnh ny)
vsbMain.Min = 5
vsbMain.Max = 200
vsbMain.SmallChange = 1
vsbMain.LargeChange = 5
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Khi ngi dng thay i gi tr trn ScrollBar th gn tr li gi tr ny cho Timer.
Trang 65
Bi 15
a. Thit k giao din (thm vo 1 Label v 4 ng thng Line vo form)
c. Chng trnh mu
Option Explicit
'///Khi chut di chuyn trong form Chut di chuyn ra ngoi Label th t nh ban u
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
l3.BorderColor = &HFFFFFF
l4.BorderColor = &HFFFFFF
l1.BorderColor = 0
l2.BorderColor = 0
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Khi chut di chuyn vo trong Label th t hiu ng cho cc ng L1, L2, L3, L4
Private Sub lblThoat_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
l3.BorderColor = 0
l4.BorderColor = 0
l1.BorderColor = &HFFFFFF
l2.BorderColor = &HFFFFFF
End Sub
Trang 66
d. Ghi ch:
Bi 16
a. Thit k giao din
"
Bi 17
a. Thit k giao din (tn ca cc iu khin c vit ch m bn cnh)
Dim i As Integer
For i = 0 To 23
cboGio.AddItem i
Next
For i = 0 To 59
cboPhut.AddItem i
Next
End Sub
'----------------------------------------------------------------------------------------------------------------------------Private Sub tmrBaoThuc_Timer()
Dim T As Date
T = Now '/// Ly gi hin ti ca h thng v so snh. Nu bng th m file nhc
If (Hour(T) = cboGio.Text) And (Minute(T) = cboPhut.Text) Then
ShellExecute Me.hwnd, "open", txtTenFile.Text, vbNullString, "C:\", 1 '/// M file
tmrBaoThuc.Enabled = False
End If
'/// Thng tin v gi, pht hin ti hin th trn thanh tiu
Me.Caption= "By gi l: " & Hour(T) & "h:" & Minute(T) & "':" & Second(T) & "''"
End Sub
'----------------------------------------------------------------------------------------------------------------------------Private Sub cmdDongY_Click()
tmrBaoThuc.Enabled = True
End Sub
d. Ghi ch:
Bi 18
a. Thit k giao din: Cn 4 Label, 1 Shape (Shape=3-circle), 1 timer v mt Line.
Bi 19
a. Thit k giao din
Dim PrevKey As String, i As Integer '///PrevKey lu trng thi ca phm nhn trc
Private Sub Form_Load()
tmrLogger.Interval = 10
tmrLogger.Enabled = False
End Sub
Trang 70
d. Ghi ch
Bi 20
a. Thit k giao din: cn 4 nt v
vi tn c t nh hnh sau y.
Hm ShellExecute m file
Th tc Kill xo file
Trang 71
c. Chng trnh mu
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal
hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters
As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'----------------------------------------------------------------------------------------------------------------------------'/// Khi ni dung trong Drive1 thay i th cng thay i li ng dn trong Dir1
d. Ghi ch
Lnh On error Goto <Nhn> th khi gp li, chng trnh s nhy n nhn
c ch nh trc. Cn i vi lnh On error Resume Next th chng trnh
vn c tip tc chy cu lnh tip theo, b qua cu lnh gy li.
Bi 21
a. Thit k giao din (nh bi tp 20).
b. Hng dn: Np biu tng (icon) cho iu khin ngun thng qua thuc tnh
DragIcon. Tip theo vit lnh cho th tc s kin Drop ca iu khin ch. Vic ko
th thc s ch din ra khi gi phng thc Drag ca iu khin ngun (thng gi
trong th tc s kin MouseDown)
c. Chng trnh mu
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd
As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String,
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'--------------------------------------------------------------------------------------------------------------------------'/// Th tc ny s c gi khi ngi dng th (drop) 1 file t iu khin File1
'/// Tham s Source lc ny chnh l iu khin File1, v nh vy ly tn file v ng
'/// dn m ngi dng va "th" th s dng thuc tnh Path v FileName nh i vi
'/// iu khin file
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Thc hin ko th i vi file va c chn
End Sub
'----------------------------------------------------------------------------------------------------------------------------Private Sub cmdMoFile_Click()
ShellExecute Me.hwnd, "open", File1.Path & "\" & File1.FileName, vbNullString, "C:\", 1
End Sub
Trang 73
d. Ghi ch
C th tham kho thm v Drag v Drop trong b tr gip MSDN vi topic
"Drag Method" v chn thm phn Sample.
Khi thao tc vi tp, th mc c nhiu trng hp xy ra li do vy cn phi
bt li vi pht biu "On error goto err" hoc "On error resume Next" (Xin
tham kho thm trong MSDN).
3 iu khin DriveListBox, DirListBox v FileListBox khng nht thit lc no
cng phi i cng vi nhau. Thc t nu mun hin th ni dung ca mt a
no trong iu khin DirListbox th ta ch vic gn tn a cho thuc tnh
Path, v d: Dir1.Path = "e:" th lp tc ni dung ca a E: s c hin th
trong DirListbox. Tuy nhin, v thuc tnh Drive ca iu khin DriveListbox tr
v tn a m ngi dng chn nn ta thng gn gi tr ny cho thuc tnh
Path ca DirListbox. Tng t vi iu khin FileListbox.
Khi s kin "Drop" ca i tng ch xut hin th tham s Source ca th
tc s kin s tr n (hay chnh l) iu khin ngun. Nn ta c th gi
cc thuc tnh v phng thc ca i tng ngun thng qua Source.
Bi 22
a. Thit k giao din nh hnh 46 (Tn ca cc iu khin c t trong trn)
b. Hng dn
V chng trnh cho php ngi dng la chn nhiu file (Multiselect) nn cn t
thuc tnh MultiSelect ca iu khin File l True. Sau tnh tng kch thc cc
file bng hm FileLen.
c. Chng trnh mu
Option Explicit
Private Sub cmdThem_Click()
Dim i As Integer, TongKichThuoc As Long
'/// Thm tn cc file ang c chn (Selected = true) vo danh sch
For i = 0 To File1.ListCount - 1
If File1.Selected(i) = True Then lstDanhSachFile.AddItem File1.Path & "\" & File1.List(i)
Next
'/// Tnh tng kch thc cc file cho vo danh sch (Listbox)
TongKichThuoc = 0
For i = 0 To lstDanhSachFile.ListCount - 1
TongKichThuoc = TongKichThuoc + FileLen(lstDanhSachFile.List(i))
Next
'/// hin th kt qu tnh ton ra Label
End Sub
'----------------------------------------------------------------------------------------------------------------------------Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
d. Ghi ch:
Trang 75
Bi 23
a. Thit k giao din
c. Chng trnh mu
Option Explicit
'/// M hp thoi chn file (nhng ch hin th nhng file nh)
dlgChonFile.ShowOpen
On Error GoTo Err
imgBack.Picture = LoadPicture(dlgChonFile.FileName) '///Np file va chn
Exit Sub
Err:
MsgBox "C li khi np file : " & Err.Description, vbCritical, "Thng bo."
End Sub
'----------------------------------------------------------------------------------------------------------------------------'///Hm LoadPicture() khng tham s c ngha l np file rng.
Trang 76
Bi 24
a. Thit k giao din
Trang 77
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As
Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATA
Dim Msg As Long
'----------------------------------------------------------------------------------------------------------------------------Private Sub Form_Load()
TrayI.cbSize = Len(TrayI)
'///t Hangle ca ca s
TrayI.hwnd = Picture1.hwnd
'///t nh danh cho khay biu tng
TrayI.uId = 1&
'///Thit lp cc c
TrayI.ucallbackMessage = WM_LBUTTONDOWN
'///t biu tng cho khay (Phi l mt biu tng)
TrayI.hIcon = Picture1.Picture
'///t dng nhc khi chut di chuyn qua biu tng di Khay h thng
Me.Hide
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Th tc xo (Remove) biu tng trong khay h thng
Sub Deletetray()
TrayI.cbSize = Len(TrayI)
TrayI.hwnd = Picture1.hwnd
TrayI.uId = 1&
Shell_NotifyIcon NIM_DELETE, TrayI
End Sub
'----------------------------------------------------------------------------------------------------------------------------Private Sub mnuAbout_Click()
MsgBox "To menu di System tray !. ", vbInformation
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// X l khi ngi dng Click chut ln biu tng trong khay h thng
Trang 78
Me.PopupMenu mnuMain
'//// Hin th menu mnuMain ca Form
End If
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Xo biu tng v thot khi ngi dng chn mc Exit
d. Ghi ch
C- BI TP T GII
Bi 1. Vit chng trnh "ng h bo thc". Chic ng h ny s thc hin "Reo
chung" (Chi i chi li mt file nhc ting) cho n khi no ngi dng tt ng
dng th thi.
Bi 2: To chic ng h c y 3 Kim (Gi, pht, giy). Mt ng h l mt bc
nh tht.
Bi 3: Vit chng trnh Son tho vn bn n gin.
Bi 4: Vit chng trnh qun l v xem cc file hnh nh.
Bi 5: Vit li chng trnh KeyLogger thu c ni dung chun m ngi dng
g, tc l nu ngi dng nhn phm xo () th ni dung cng phi xo .
Bi 6: Vit chng trnh qun l im cho mt lp. Thng tin c th c lu v np
t file.
Bi 7: Vit chng trnh "my tnh b ti", c kh nng thc hin cc php ton
cng, tr, nhn, chia, bnh phng, chuyn i gia cc h c s.
Bi 8: S dng iu khin FlexGrid hoc iu khin Grid, vit tr chi xp ch. Tr
chi ny nh sau: Mt bn c kch thc n x n , trong c n x n -1 cha cc s
t 1 n n x n 1 v mt trng. Cc c t cc v tr ngu nhin v
nhim v ca ngi chi l xp cc s theo ng th t t 1 n n x n 1.
Bi 9: Vit chng trnh nh dng font cho cc t kho ca mt chng trnh ngun
vit trn ngn ng Visual Basic (c th m rng sang cc ngn ng khc). D liu
vo l chng trnh ngun cha trong tp vn bn RTF. HD: S dng iu khin
Richtext v s dng cc phng thc Find tm v t SelText = Bold v.v..
Trang 79
Chng iiI
A - BI TP
Bi 1: Xy dng chng trnh son tho vn bn s dng iu khin RichText.
Hnh 3.2 Giao din chng trnh (C thm mc chn "Mu ch")
Trang 80
Bi 6 : Nh bi 5 nhng chng trnh c thm thanh trng thi (status bar) trong
form chnh (Xem hnh 6). Trong thanh trng thi c 3 , th nht cho bit tng s
k t trong Richtextbox, th hai hin th thi gian, th 3 hin th ngy trong my
tnh.
Trang 82
B. HNG DN - GII MU
Bi 1
a. Thit k giao din
c. Chng trnh mu
Option Explicit
'/// X l khi ngi dng click vo mc ""t Font ch" trn menu
rtfNoiDung.Font.Name = dlgMain.FontName
Trang 83
rtfNoiDung.Font.Bold = dlgMain.FontBold
rtfNoiDung.Font.Italic = dlgMain.FontItalic
rtfNoiDung.Font.Underline = dlgMain.FontUnderline
rtfNoiDung.Font.Size = dlgMain.FontSize
End Sub
'/// o li trng thi trc : Nghing
Khng chn
Ctrl-N"
Trang 84
Bi 2
a. Giao din nh bi 1 nhng c thm mc "Mu ch" vi tn l mnuForeColor.
b. Hng dn: S dng phng thc ShowColor ca iu khin Dialog
c. Chng trnh mu: (Chn thm on lnh x l s kin mnuForeColor_Click vo
phn Code ca bi 1)
'///chn phn chng trnh ngun ca bi 1 vo y .
Trang 85
b. Hng dn
If Button = 2 Then
'/// Nu click chut phi (nt chut tri l 1)
If Len(rtfNoiDung.SelText) = 0 Then Me.PopupMenu mnuFile
If Len(rtfNoiDung.SelText) > 0 Then Me.PopupMenu mnuFormat
End If
End Sub
d. Ghi ch: Khi lm vic vi iu khin Richtext, nu cc thuc tnh ca iu khin
ny c tin t l "Sel", v d SelText, SelColor, SelBold th ta hiu l ang lm vic
vi phn c bi en (hay ch phn c bi en b tc ng)
Bi 4
a. Thit k giao din
Trang 86
Hnh 3.14 Giao din ca frmDocument (cn t thuc tnh MDIChild = True)
b. Hng dn
Trang 87
Bi 5
a. Thit k giao din
H thng giao din ging nh bi tp 4, nhng thm thanh cng c (Toolbar) v i
tng cha nh ImageList. (Tn ca cc iu khin c in m bn cnh)
Trang 88
Trang 89
End Sub
'----------------------------------------------------------------------------------------------------------------------------'/// Ngi dng click chn mc "m ti liu"
End Select
End Sub
Trang 91
d. Ghi ch
Bi 6
a. Thit k giao din. Ging nh bi s 5, nhng thm iu khin Statusbar (tn l
staMain) vi thuc tnh c thit lp nh hnh 21 di y:
Lun lun tham kho v c thm ti liu tr gip trc tuyn MSDN, Internet
Lun phi quan nim rng: Kin thc vit trong mt cun sch ch mang
ngha dn dt ta lm cc bc lm c bn. Kin thc su sc nht chnh
l t thc tin ta lm !.
Trang 93
Chng iV
A - BI TP
Bi 1: Minh ho s dng iu khin Carlendar (Lch)
Gii thiu: iu khin Carlendar nm trong th vin
, c
chc nng hin th nh mt cun lch in t. ng thi cng c dng cho
php ngi dng chn trc quan ngy, thng, nm trong mt s ng dng.
th tr v ngy hin ti
Khi click
Khi click
.
th ng cng hin hnh.
th gi lnh v d liu cha trong cboCommand
Trang 95
Khi click nt "Cp nht" th t ni dung ca dng hin hnh bng ni dung
trong cc hp Text tng ng.
Khi click nt "Lu ra File" th lu ni dung FlexGrid ra file Text, mi bn ghi
trong FlexGrid c ghi trn mt dng ca file.
Trang 96
(Gi ln) cc file. Ngoi ra, cc lnh trong giao thc FTP nh SEND, PUT, PWD.
cng c iu khin ny h tr.
Yu cu: Xy dng mt chng trnh cho php ngi dng Download cc file t
Internet v my tnh cc b. Cc file ny sau c th m theo yu cu.
Khi ngi dng nhp mt biu thc trong textbox v click nt "Hin th" th
hin th kt qu tnh ton c bng hm MsgBox.
Trang 97
Trang 98
Trang 99
Cho php thm mt hng (mc) mi vo Listview khi click nt "Thm bn ghi"
Thc hin cc chc nng khi ngi dng click vo cc nt tng ng. Vic
c gi tr ca mi nt bao gm gi tr ca trng "Key" v trng "Text".
Trang 100
Hnh 4.12 Giao din khi chy chng trnh mu & t tn cc iu khin
Bi 13: S dng DateTimePicker nhp trc quan ngy/thng/nm.
Gii thiu
B- HNG DN - GII MU
Bi 1
a. Hng dn: Tn cc thuc tnh v phng thc ca iu khin ny bn thn n
ni ln chc nng ca chng. Do vy chng ta c th tra cu v iu khin
Calendar trong b MSDN. (Cch tra cu nhn: Trong khi lp trnh, click vo iu
khin Calendar v nhn phm F1).
b. Chng trnh mu:
Form1.frm
Option Explicit
'/// Chuyn sang thng tip theo
Trang 102
c. Ch :
Bi 2
a. Hng dn: iu khin COM c th c s dng truyn thng (Giao tip) vi
bt k thit b no c ni v tng thch vi cng ny. Vit thit lp cc thng s
kt ni tng i n gin, ch cn t s hiu cng (Com 1, 2, 3) sau m kt
ni bng cch t thuc tnh PortOpen = True. Ring i vi mt s trng hp c
bit th cn t li mt s thng s khc.
Khi lm vic, iu khin Com ny c 2 cch ly d liu do cc thit b khc gi
n Cng Com, cch th nht l lun lun thm d (Polling) cng v nhn d liu
v; cch th 2 l khi d liu c gi n th s kin OnComm xut hin v ta ly
d liu v thng qua thuc tnh Input. Chng trnh mu di y s dng cch
nhn d liu th 2 v thc hin giao tip vi Modem.
C th tham kho thm
trong MSDN.
b. Chng trnh mu (Giao tip vi Modem):
Form1.frm
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'///--------------------------------------------------------------------------------------------------------------------------------'/// Thc hin m cng COM khi ngi dng click nt Open
Trang 103
cmdOpen.Enabled = True
Exit Sub
err:
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// Gi lnh ra cng COM khi click nt OutPut
cboCommand.AddItem "AT"
cboCommand.AddItem "AT VCID = 1"
cboCommand.AddItem "AT# CID"
cboCommand.AddItem "ATDT 0912068582"
cboCommand.AddItem "ATDT 713319"
cboCommand.AddItem "ATDT 713153"
End Sub
Bi 3
a. Hng dn: S dng thuc tnh Row, Col chuyn n cn tham chiu, v d
cn chuyn n c ch s hng l 10, ct l 20 th ch cn t Row = 10, Col = 20.
Mun ly hoc thay i gi tr ca mt hng i, ct j th vit theo c php:
TextMaTrix(i,j).
b. Chng trnh mu.
Form1.frm
Option Explicit
Dim SL_BanGhi As Integer
Trang 104
Trang 105
'///--------------------------------------------------------------------------------------------------------------------------------'/// Hin th gi tr ca dng hin ti trong FlexGrid mi khi ngi dng Click ln dng
c. Ghi ch:
Bi 4
a. Hng dn:
Ngoi ra, nu c nhu cu truy cp trc tip ti tng phn t trong trang web
ang c m th cn phi khai bo mt i tng HTMLDocument (i
tng ny nm trong th vin HTML Object Library). Trong dng phng
thc getElementById tham chiu n i tng trn trang web thng qua
tn ca i tng y. v dng phng thc getAttribute ly gi tr mt thuc
tnh no ca i tng tham chiu bi getAttribute.
Trang 106
b. Chng trnh mu
Form1.frm
Option Explicit
Dim Doc As HTMLDocument
'///---------------------------------------------------------------------------------------------------------------------------------
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// Khi trang web m xong mt trang th s kin ny xut hin. Khi ta mi cho
'/// bin i tng Doc "tr" n i tng Document ny (Phi s dng cu lnh Set).
Trang 107
c. Ghi ch:
Bi 5
a. Hng dn: Internet control c th ly d liu t my ch v thng qua 2 giao
thc l HTTP v FTP. Phng thc OpenURL l cch n gin ly d liu v,
ng thi c th lu ngay vo file. Phng thc ny cng c gi l phng thc
hot ng ng b (synchronous), c ngha l vic ly d liu v phi c hon tt
th cc lnh tip sau mi c thc hin. Cng c th nhn d liu bng phng
thc khc nh Execute, nhng phng thc Execute li hot ng ch khng
ng b (Asynchronous), tc l cu lnh tip theo lnh ny s c thc hin khng
ph thuc vo vic d liu ly v hay cha (Thng s dng trong ng dng
phc tp). Trong trng hp ny, xin s dng phng thc OpenURL ly d liu
v. C php ca phng thc ny nh sau:
OpenURL url [, <Kiu d liu ly v>]. Trong , url l a ch ca trang Web (v
d http:///www.myweb.com/index.htm hay ftp://home.com/default.html), Cn kiu d
liu ly v cho bit l d liu ly v xem nh mt mng xu (hng icString) hay mt
mng byte (hng icByteArray). Mc nh xem nh mt mng xu.
b. Chng trnh mu
Form1.frm
Option Explicit
'/// Cc hm API nn copy t API Text Viewer
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd
As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As
String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'/// Thc hin download trang web khi click nt Download
Trang 108
c. Ghi ch:
Phng thc Execute cho php ta thc hin rt nhiu lnh FTP chun nh
LS, DIR, CDUP, CD, PUT, GET, SEND v.vdo vy c th d dng vit cc
ng dng FTP Client (nh CuteFTP chng hn)
Bi 6
'/// bt u Play
'///---------------------------------------------------------------------------------------------------------------------------------
mmcPlayer.Notify = False
mmcPlayer.Wait = True
mmcPlayer.Shareable = False
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
Trang 109
End Sub
c. Ghi ch:
Bi 7
a. Hng dn:
iu khin ny rt hay trong mt s bi ton m gi tr hay thm ch l cu lnh c
nhp vo khi chng trnh ang chy. Do vy n s v cng hu ch cho nhng bi
ton m gi tr v cng thc tnh ton a vo l khng bit trc. Trong bi tp ny
ly v d v vic ngi dng nhp vo mt biu thc ton hc bt k v chng trnh
s tnh v cho ra kt qu s dng iu khin Script.
b. Chng trnh mu
Form1.frm
Option Explicit
'/// Phng thc Eval s tr v gi tr tnh ton c (trong trng hp khng c li).
Bi 8
a. Hng dn: Thc t th iu khin TAB rt hay c dng, tuy nhin li rt n
gin. Do vy bi ny s s dng thm mt iu khin c gii thiu l FlexGrid
vit mt chng trnh chi c CARO cho thm phn th v. ( chng trnh c
th kim tra c ai thng ai thua th bn c c th tham kho thm thut ton
phn chng trc hon thin hn). Vi vic chi c ca 2 ngi, tng chnh
ca chng ta l dng mt bin theo di hin trng l ai ang i, ngi 1 hay
Trang 110
Sub BanCoMoi()
flxBanCo.Rows = KichThuoc
flxBanCo.Cols = KichThuoc
Dim i As Integer
'/// t kch thc mi thnh vung, v t co gin theo rng ca FlexGrid
For i = 0 To flxBanCo.Rows - 1
flxBanCo.RowHeight(i) = flxBanCo.Height \ flxBanCo.Rows
flxBanCo.ColWidth(i) = flxBanCo.RowHeight(i)
Next
'/// Xo trng cc trn bn c. (TextArray s xem Grid nh mt mng)
If NguoiDi = 1 Then
NguoiDi = 2
Else
NguoiDi = 1
End If
End Sub
'/// Nu Ngi 1 i ri
'/// ngi 2 i
'/// ngi 1 i
'///---------------------------------------------------------------------------------------------------------------------------------
flxBanCo.BorderStyle = flexBorderNone
flxBanCo.BackColorBkg = &HFFFFFF
Trang 111
flxBanCo.Width = flxBanCo.Height
flxBanCo.FixedCols = 0
flxBanCo.FixedRows = 0
NguoiDi = 1
Nguoi1 = "X"
Nguoi2 = "O"
Call BanCoMoi
End Sub
'/// V bn c
'/// V li bn c
'///---------------------------------------------------------------------------------------------------------------------------------
c. Ghi ch:
Bi 9
a. Hng dn: i vi thanh tin trnh th ta cn quan tm n cc thuc tnh sau:
Hnh 4.16 - Minh ha 3 thuc tnh quan trng ca thanh tin trnh
b. Chng trnh mu
Trang 112
Form1.frm
Option Explicit
'/// Khi m file ch, dng hm Dir kim tra tp c tn ti hay khng.
F2 = FreeFile
Open txtFileDich.Text For Binary As #F2
pgrCopyFile.Value = 0
pgrCopyFile.Max = FileLen(txtFileNguon.Text) + 1
Do While Not EOF(F1)
Get #F1, , Buffer
Put #F2, , Buffer
DoEvents '/// cho CPU x l cc ng dng khc, trnh chim dng ti nguyn
Loop
Close #F1
Close #F2
MsgBox " copy xong !", vbInformation
End Sub
c. Ch :
Bi 10
a. Hng dn: Vic thao tc ging nh iu khin ComboBox. Tuy nhin cn lu l
ImageCombo cn phi (Bind) gn kt vi mt iu khin ImageList c th ly nh
(Icon) t ra hin th. Vic gn kt c th s dng cu lnh Set nh chng
trnh mu di y, hoc cng c th t trong lc thit k (vo Properties). Ngoi
ra, iu khin ImageCombo c "2 ni" (trng) lu d liu cho mt mc l Key v
Text. Mi mt phn t (item) thng c mt gi tr chng trnh thao tc (thng
ngn gn - Key) v mt gi tr hin th cho ngi dng quan st (thng tin Ting
vit c du - Text). Thuc tnh ComboItems s qun l v thao tc vi cc mc ny.
Mun truy cp n mc i, ta vit: ComboItems (i). Mi mc i l mt i tng
ComboItemvi rt nhiu thuc tnh. (Xin tham kho thm trong MSDN) .
b. Chng trnh mu
Form1.frm
Option Explicit
Private Sub cmdGui_Click()
Shell "Net.exe Send " & cboComputer.Text & " " & txtThongBao.Text, vbHide
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
For i = 1 To 5
cboComputer.ComboItems.Add , ,"My " & i, "icoComputer"
Next
End Sub
Trang 114
Bi 11
a. Hng dn: i vi listview, iu khin ny c rt nhiu tp hp con bn trong n
v nhiu ngi rt d b nhm ln gia cc khi nim nh, ListItem, SubItems v.v
Trc tin xin gii thiu vi bn c mt cch trc quan v cc khi nim trn.
Nh vy:
Mun thm cc hng (mi hng gm 3 trng thng tin) nh trn th tham
kho n thuc tnh ListItems. Thuc tnh ListItems l mt tp hp, do vy
mun thm mt mc (ListItem) th c th s dng phng thc Add. Phng
thc ny tr v mt ListItem. Khi mt hng (listItem) c to ra th ta c th
in d liu cho cc mc con i (i>= 2) thng qua thuc tnh SubItems tng
ng.
b. Chng trnh mu
Form1.frm
Option Explicit
'/// Mc nh khi ngi dng 2 ln click ln mt mc th Listview s cho sa i.
'/// Ta c th khng cho php iu ny bng cch t li thuc tnh LabelEdit.
Trang 115
Item.Text = txtHoVaTen.Text
'/// ct th nht lu H v tn
Item.SubItems(1) = txtNgaySinh.Text '/// ct th 2 cha ngy sinh
Item.SubItems(2) = txtQueQuan.Text '/// ct th 3 cha qu qun
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
Trang 116
imlBieuTuong.ImageHeight = 16
imlBieuTuong.ImageWidth = 16
imlBieuTuong.ListImages.Add , "icoFace", LoadPicture("C:\Program Files\Microsoft Visual
Studio\Common\Graphics\Icons\Misc\FACE02.ICO")
lvwDSSV.Icons = imlBieuTuong
'/// Biu tng khi hin th ch Icons
lvwDSSV.SmallIcons = imlBieuTuong
'/// ch SmallIcon (Report)
lvwDSSV.ColumnHeaderIcons = imlBieuTuong '/// Hin th ct tiu (Header)
lvwDSSV.ColumnHeaders.Add , "hoten", "H v tn", , , "icoFace"
lvwDSSV.ColumnHeaders.Add , "ngaysinh", "Ngy sinh"
lvwDSSV.ColumnHeaders.Add , "quequan", "Qu qun"
lvwDSSV.View = lvwReport
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
'///---------------------------------------------------------------------------------------------------------------------------------
'///---------------------------------------------------------------------------------------------------------------------------------
'///---------------------------------------------------------------------------------------------------------------------------------
b. Chng trnh mu
Form1.frm
Option Explicit
Dim STT As Integer '/// Bin ghi s lng phn t. S t ng tng khng xung t.
'///---------------------------------------------------------------------------------------------------------------'/// c gi tr ca nt hin ti (nt c chn) v hin th 2 trng l Key v Text ra mn hnh
'///Thuc tnh SelectedItem tr v nt ang c chn. Nu khng c nt no c chn th
'/// thuc tnh ny c gi tr l NOTHING. Do vy cn kim tra bng cu lnh If is nothing
'///---------------------------------------------------------------------------------------------------------------------------
Dim i As Integer
For i = 1 To tvwDSSV.Nodes.Count
Debug.Print tvwDSSV.Nodes.Item(i).Key &",Text=" & tvwDSSV.Nodes.Item(i).Text
Next
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// Th tc in tt c cc nt anh em lin k (Cng mc) trong cy
Trang 118
STT = STT + 1
txtMaSV.Text = "SV" & STT
End Sub
Trang 119
Set X = tvwDSSV.SelectedItem
If X Is Nothing Then Exit Sub
If X.children = 0 Then Exit Sub
Set X = X.Child
Do While Not (X Is Nothing)
Debug.Print "Key = " & X.Key & vbTab & "Text = " & X.Text
Set X = X.Next
Loop
End Sub
'///---------------------------------------------------------------------------------------------------------------------------------
imlBieuTuong.ImageHeight = 16
imlBieuTuong.ImageWidth = 16
imlBieuTuong.ListImages.Add , "icoFace", LoadPicture("C:\Program Files\Microsoft
Visual Studio\Common\Graphics\Icons\Misc\FACE02.ICO")
tvwDSSV.HideSelection = False
tvwDSSV.LabelEdit = tvwManual
tvwDSSV.ImageList = imlBieuTuong
'/// Thm mt nt gc vo cy
tvwDSSV.Nodes.Add , , "NUT_GOC", "Trng HSPKTHY"
'/// Thm mt s nt con (mc 1) vo sau nt gc
'/// M rng nt gc
STT = 1
txtMaSV.Text = "SV" & STT
txtMaSV.Enabled = False
'/// Thm mt na trong Panel (Mc nh mi Panel ch c mt )
Trang 120
'///---------------------------------------------------------------------------------------------------------------------------------
'///---------------------------------------------------------------------------------------------------------------------------------
Bi 14
a. Hng dn: tng chnh gii quyt bi ny nh sau:
Trang 121
b. Chng trnh mu
Frm4_14.frm
Option Explicit
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal
hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal
cy As Long, ByVal wFlags As Long)
'----------------------------------------------------------------------------------------------------------------------------Private Sub Form_Load()
wmpMain.uiMode = "none"
'/// Khng hin th cc iu khin trn WM Player
frm4_14_Setting.Show
'/// M form frm4_14_Setting
SetWindowPos frm4_14_Setting.hWnd, -1,0,0,0,0,83 '/// t ln trn cng (Topmost)
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// Khi thay i kch thc form th ta cng ko gin kch thc ca wmpMain bng vi form
Else
frm4_14_Setting.lstSongList.ListIndex = 0
End If
wmpMain.URL=frm4_14_Setting.lstSongList.List(frm4_14_Setting.lstSongList.ListIndex)
'/// Chi file ny
wmpMain.Controls.Play
End If
'/// Cp nht li gi tr Max ca thanh cun gi lp trong frm4_14_Setting
'/// Gi tr Duration cho bit di ca bi ht (cun film)
c. Ghi ch:
Trang 122
c, False
Khng
Trang 123
frm4_14.wmpMain.Controls.Stop
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// B sung thm mt file vo danh sch cc bi ht.
tmrUpdate.Interval = 1000
sldVolume.Max = 100
sldVolume.LargeChange = 10
sldVolume.SmallChange = 5
sldVolume.Value = frm4_14.wmpMain.Settings.volume
End Sub
'///--------------------------------------------------------------------------------------------------------------------------------'/// Khi ngi dng thot khi chng trnh th lu li danh sch cc bi ht
Trang 124
C- BI TP T GII
Bi 1. Vit li chng trnh nghe nhc cho hon chnh hn (Nn tham kho cc chc
nng qun l bi ht ca Winnamp v JetAudio.
Bi 2. S dng iu khin TreeView hin th cu trc cy th mc ca a C:\,
(gi lp iu khin DirListbox). HD: kt hp s dng hm API FindFirst, FindNext
ly danh sch cc file v th mc ca th mc hin hnh, sau chn vo cy.
Bi 3: Vit chng trnh to cy "Gia ph", trong cho php ngi dng c th
thm cc th h con chu (nt con ca nt gc). Sau thc hin m xem mt
ngi (nt) c bao nhiu con chu (nt con).
Bi 4: Vit chng trnh to cy v thc hin vic duyt cy theo nhiu cch khc
nhau (theo cu trc cy nhiu phn thng thng) v duyt s dng khi nim tp
hp (tc duyt tp hp c tn l Nodes ca cy).
Bi 5: Vit chng trnh cho php ngi dng to cy s dng TreeView nhng khi
xo mt nt bt k th cc nt con ca n khng b xo m c y ln mc trn.
Bi 6: Vit chng trnh cho php ngi dng nhp danh sch cc file (c c ng
dn) vo mt ListView. Trong , tu thuc vo file nhp vo c phn m rng l
exe, dll, txt, doc, xls, ppt ... th hin th vi mt biu tng tng ng. V khi ngi
dng click p chut vo mt mc th m file .
Bi 7: S dng iu khin ScriptControl vit chng trnh v th ca hm s,
trong hm s c th nhp vo t bn phm khi chng trnh ang chy.
Bi 8: S dng iu khin Inet, vit chng trnh FTP vi mt s lnh FTP n gin
(HD: Tham kho mt s lnh v v d mu trong MSDN, tra phn Inet control)
Bi 9: Xy dng chng trnh Website Download Manager, chng trnh ny cho
php Download v my tnh mt danh sch cc a ch trang web ch nh. (HD: Xem
bi tp mu trong cng chng ny v xem trong MSDN)
Bi 10: Xy dng chng trnh Download tng t nh trnh Download Webzip.
HD: Xem li m hnh ti liu DOM Document Object Model v s dng iu khin
Webbrowser + th vin HTML Object Library truy cp ni dung (cc links) bn
trong mt trang WEB.
Trang 125
chng v
kt ni v thao tc vi csdl
MC TIU: SAU KHI HON THNH CC BI TP, NGI HC C TH
Kt ni n CSDL bng iu khin ADO Data Control v Connection
Truy cp (Select, Update, Delete, Insert) d liu s dng Connection
Gn kt d liu gia cc iu khin vi i tng Connection
Vit c mt s ng dng qun tr CSDL n gin
To v trnh by bo co (Report) in ra my in.
A - BI TP
Qui c
Cc bi tp trong chng ny u lin quan n vic kt ni v thao tc vi mt C
s d liu (CSDL) nht nh, do vy m bo s thng nht cng nh trnh hiu
sai trong mt s tnh hung, y chng ta ch yu s dng c s d liu sn c
khi ci b Visual Studio 6.0, c tn l : Nwind.mdb. S d chng ta chn CSDL ny
lm mu trong hu ht cc bi tp v my l do sau:
Sn c trong my tnh khi ci Visual Basic.
y l mt c s d liu c xy dng thc t t qun l bn hng ca
hng North Wind, do vy cc bi tp lin quan s st vi thc tin hn.
S lng bn ghi trong CSDL ny tng i nhiu, minh ho trong rt
nhiu trng hp, do khng phi mt cng sc li.
Trong CSDL ny c nhiu bng v c chun ho.
C y cc mi quan h 1-nhiu, nhiu-nhiu c th thc hnh vi cc
truy vn nng cao, truy vn trn nhiu bng ng thi.
C s d liu Nwind.mdb thng c lu trong th mc cng vi th mc VB:
C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB.
Vi ng dn rt di nh trn, ni chung l khng c thun tin trong khi vit
chng trnh. Ta s gi thit rng, vi mi chng trnh, tp Nwind.mdb s c
Copy vo trong cng th mc vi tp d n. V d, nu ta c mt d n tn l :
QLHSSV.VBP, t trong th mc C:\Projects\QLHSSV th tp Nwin.mdb cng phi
c t trong th mc ny:
Trang 127
Trang 128
Hnh 5.11 Xem thng tin v khch hng bng ADO Data control v Textbox
b. Yu cu:
Hnh 5.12 Xem thng tin v khch hng s dng cc phng thc ca ADO
b. Yu cu
Hnh 5.13 Danh sch khch hng hin th trong Data Grid Control
b. Yu cu : Hin th tt c cc bn ghi trong bng Customers trong mt DataGrid
Bi 4: Vit chng trnh xem thng tin v khch hng (Version 4)
a. Giao din
Trang 131
b. Yu cu:
Khi ngi dng click chut ln mt nt (tn cng ty) trong cy th hin th tt
c cc sn phm m cng ty cung cp (Hin th tt c cc trng trong
bng Products) trong mt Datagrid control nh hnh 18.
Trang 132
Trang 133
Trang 134
Trang 135
B- HNG DN - GII MU
Bi 1: Vit chng trnh xem thng tin v khch hng (Version 1).
a. Thit k giao din
Trang 136
txtHoTenKH.DataField = "ContactName"
Set txtDiaChiKH.DataSource = adoDSKH
txtDiaChiKH.DataField = "Address"
Set txtDienThoaiKH.DataSource = adoDSKH
txtDienThoaiKH.DataField = "Phone"
End Sub
Trang 137
Sub CapNhatNutNhan()
cmdPrevious.Enabled = (adoDSKH.Recordset.BOF = False)
cmdNext.Enabled = (adoDSKH.Recordset.EOF = False)
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Tr v bn ghi u tin
Option Explicit
Private Sub Form_Load()
Dim strConn As String
strConn="Provider=Microsoft.jet.oledb.4.0;Data Source=" & App.Path & "\Nwind.mdb"
adoDSKH.ConnectionString = strConn
adoDSKH.CommandType = adCmdTable
adoDSKH.RecordSource = "Customers"
adoDSKH.Refresh
Set dgrDSKH.DataSource = adoDSKH
adoDSKH.Visible = False
End Sub
d. Ghi ch: Khi s dng cu lnh SELECT ly d liu v th ngi dng khng
th sa i d liu trc tip trn DataGrid.
Trang 139
cboDSBang.Text = "Customers"
adoBang.Visible = False
End Sub
d. Ghi ch:
Trang 140
C th s dng cu lnh dng ... Is Nothing ... kim tra xem mt i tng
c rng hay khng (tc cha tr ti i tng no trc ).
Tn bng trong Access c th cha du cch, khi khng b li th tn
bng phi t trong cp ngoc [ ] trc khi gn cho thuc tnh
Recordsource, ging nh trong bi ny. Vi cc bng m tn khng cha du
cch th bn c th thm vo hoc khng.
Khi thit k CSDL, khng nn t tn bng cha du cch.
Trang 141
Trang 143
MaNCC
adoSanPham.Refresh
Set dgrSanPham.DataSource = adoSanPham
End Sub
Bi 9: S dng vi TreeView
a. Thit k giao din
Sub NapMaNhaCC()
Dim strConn As String
strConn="Provider=Microsoft.jet.oledb.4.0;Data Source=" & App.Path & "\Nwind.mdb"
adoDSKH.ConnectionString = strConn
adoMaNCC.CommandType = adCmdText
adoMaNCC.RecordSource = "SELECT SupplierID, CompanyName FROM Suppliers"
adoMaNCC.Refresh
tvwNhaCC.Nodes.Clear
tvwNhaCC.LabelEdit = tvwManual
tvwNhaCC.Nodes.Add , , "NUT_GOC", "Tn cc nh cung cp"
Do While adoMaNCC.Recordset.EOF = False
tvwNhaCC.Nodes.Add "NUT_GOC", tvwChild, "M1" & adoMaNCC.Recordset!SupplierID,
adoMaNCC.Recordset!CompanyName
adoMaNCC.Recordset.MoveNext
Loop
tvwNhaCC.Nodes("NUT_GOC").Expanded = True
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Khi to ListView, to 3 ct vi cc nhn tng ng.
Sub KhoiTaoListView()
lvwSanPham.ColumnHeaders.Add , , "Tn sn phm"
lvwSanPham.ColumnHeaders.Add , , "M loi"
lvwSanPham.ColumnHeaders.Add , , "n gi"
Trang 144
lvwSanPham.View = lvwReport
lvwSanPham.GridLines = True
End Sub
Private Sub Form_Load()
Call NapMaNhaCC
Call KhoiTaoListView
'/// Np m nh cung cp
'/// Khi to ListView
adoMaNCC.Visible = False
'/// n 2 iu khin ny i v khng dng n.
adoSanPham.Visible = False
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Th tc ny c kch hot khi ngi dng click vo mt nt trn cy
adoSanPham.CommandType = adCmdText
adoSanPham.RecordSource = "SELECT * FROM Products WHERE SupplierID=" & MaNCC
adoSanPham.Refresh
lvwSanPham.ListItems.Clear
Do While adoSanPham.Recordset.EOF = False
With adoSanPham
Set Nut=lvwSanPham.ListItems.Add(, "A" & .Recordset!ProductID, .Recordset!ProductID)
Nut.SubItems(1) = .Recordset!CategoryID
Nut.SubItems(2) = .Recordset!UnitPrice
.Recordset.MoveNext
End With
Loop
End Sub
Trang 145
c. Chng trnh mu
Option Explicit
Dim strConn As String
'-----------------------------------------------------------------------------------------------------------------------'//// Np M nh cung cp v cc sn phm ca nh cung cp khi np form
Sub NapMaNhaCC()
Dim Key As String
adoMaNCC.ConnectionString = strConn
adoMaNCC.CommandType = adCmdText
adoMaNCC.RecordSource = "SELECT SupplierID, CompanyName FROM Suppliers"
adoMaNCC.Refresh
tvwNhaCC.Nodes.Clear
tvwNhaCC.LabelEdit = tvwManual
tvwNhaCC.Nodes.Add , , "M0NUT_GOC", "Tn cc nh cung cp"
Do While adoMaNCC.Recordset.EOF = False
Key = "M1" & adoMaNCC.Recordset!SupplierID
tvwNhaCC.Nodes.Add "M0NUT_GOC",tvwChild, Key,adoMaNCC.Recordset!CompanyName
NapSanPhamVaoNCC Key
adoMaNCC.Recordset.MoveNext
Loop
adoMaNCC.Recordset.Close
tvwNhaCC.Nodes("M0NUT_GOC").Expanded = True
End Sub
Trang 146
adoSanPham.Refresh
Do While adoSanPham.Recordset.EOF = False
MaSP = adoSanPham.Recordset!ProductID
TenSP = adoSanPham.Recordset!ProductName
tvwNhaCC.Nodes.Add MaNCC, tvwChild, "M2" & MaSP, TenSP
adoSanPham.Recordset.MoveNext
Loop
adoSanPham.Recordset.Close
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Khi to Listview: To ra 3 ct l OrderID, UnitPrice v Quantity
Sub KhoiTaoListView()
lvwCTDonHang.ColumnHeaders.Add , , "M n hng"
lvwCTDonHang.ColumnHeaders.Add , , "Gi ($)"
lvwCTDonHang.ColumnHeaders.Add , , "S lng"
lvwCTDonHang.View = lvwReport
lvwCTDonHang.GridLines = True
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Hin th tt c cc ho n c xut hin mt hng va c click chn
'/// V nt ang c chn c MaSP = "M2" & ProductID, do vy ly ra m sn phm
'/// thc s cho cu lnh truy vn th cn phi b xu "M2", tc l vit : Mid(MaSP,3)
adoCTDonHang.Refresh
lvwCTDonHang.ListItems.Clear
Do While adoCTDonHang.Recordset.EOF = False
Set MucMoi = lvwCTDonHang.ListItems.Add(, , adoCTDonHang.Recordset!OrderID)
Trang 147
d. Ghi ch:
adoCTDonHang.Recordset!UnitPrice v
adoCTDonHang.Recordset.Fields("UnitPrice") l 2 cch vit tng ng. Tuy
nhin cch th nht c a dng hn v ngn gn.
Trang 148
Call KhoiTaoListView
adoMaNCC.Visible = False
adoSanPham.Visible = False
adoCTDonHang.Visible = False
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Np m nh cung cp vo cy. Khi np mt NCC th np cc sn phm ngay vo nt
Sub NapMaNhaCC()
Dim Key As String
adoMaNCC.ConnectionString = strConn
adoMaNCC.CommandType = adCmdText
adoMaNCC.RecordSource = "SELECT SupplierID, CompanyName FROM Suppliers"
adoMaNCC.Refresh
tvwNhaCC.Nodes.Clear
tvwNhaCC.LabelEdit = tvwManual
tvwNhaCC.Nodes.Add , , "M0NUT_GOC", "Tn cc nh cung cp"
Do While adoMaNCC.Recordset.EOF = False
Key = "M1" & adoMaNCC.Recordset!SupplierID
tvwNhaCC.Nodes.Add "M0NUT_GOC",tvwChild, Key,adoMaNCC.Recordset!CompanyName
NapSanPhamVaoNCC Key
adoMaNCC.Recordset.MoveNext
Loop
adoMaNCC.Recordset.Close
tvwNhaCC.Nodes("M0NUT_GOC").Expanded = True
End Sub
'----------------------------------------------------------------------------------------------------------------------'/// Np cc sn phm vo nt nh cung cp. Nt ny c m l MaNCC
'/// V trng Key ca mi nt cha xu "M1" & SupplierID, do vy khi Select cn phi b
'/// xu "M1" i bng cch vit Mid(MaNCC,3).
'/// Cng ging nh trng SupplierID, trng ProductID cng l trng s, do vy cn
'/// phi thm mt xu, v d "M2" vo thuc tnh Key.
adoSanPham.Refresh
Do While adoSanPham.Recordset.EOF = False
MaSP = adoSanPham.Recordset!ProductID
TenSP = adoSanPham.Recordset!ProductName
tvwNhaCC.Nodes.Add MaNCC, tvwChild, "M2" & MaSP, TenSP
adoSanPham.Recordset.MoveNext
Loop
adoSanPham.Recordset.Close
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Khi to Listview: To ra 3 ct l OrderID, UnitPrice v Quantity
Sub KhoiTaoListView()
lvwCTDonHang.ColumnHeaders.Add , , "M n hng"
lvwCTDonHang.ColumnHeaders.Add , , "Gi ($)"
lvwCTDonHang.ColumnHeaders.Add , , "S lng"
lvwCTDonHang.View = lvwReport
Trang 149
lvwCTDonHang.GridLines = True
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Hin th tt c cc ho n c xut hin mt hng va c click chn
'/// V nt ang c chn c MaSP = "M2" & ProductID, do vy ly ra m sn phm
'/// thc s cho cu lnh truy vn th cn phi b xu "M2", tc l vit : Mid(MaSP,3)
'/// Trong cu lnh SELECT ta thm mt trng mi v t tn l GiaTri.
'-----------------------------------------------------------------------------------------------------------------------------------
MucMoi.SubItems(1) = adoCTDonHang.Recordset!UnitPrice
MucMoi.SubItems(2) = adoCTDonHang.Recordset!Quantity
MucMoi.SubItems(3) = adoCTDonHang.Recordset!GiaTri
adoCTDonHang.Recordset.MoveNext
Loop
adoCTDonHang.Recordset.Close
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Khi ngi dng click mt nt th cn trch 2 k t u bit l ngi dng click vo
'/// nt gc (M0), tn nh cung cp (M1) hay sn phm (M2) c x l ph hp.
'/// Thuc tnh Node s cho bit thng tin (tr n) nt c chn.
'-----------------------------------------------------------------------------------------------------------------------------------
'/// Ly 2 k t u
Case "M0"
'/// Click vo nt gc
Case "M1"
Case "M2"
d. Ghi ch:
Trang 150
Cn.Execute "Cu lnh SQL" --> Nu ch mun thc thi mt cu lnh SQL m
khng cn ly kt qu tr v (V d cu lnh Delete, Insert, Update).
c. Chng trnh mu
Option Explicit
Dim Cn As New ADODB.Connection
'-----------------------------------------------------------------------------------------------------------------------------------
Err:
Trang 151
Trang 152
Cn.ConnectionString = strConn
Cn.CursorLocation = adUseClient
Cn.Open
Call NapMaNhaCC
Call KhoiTaoListView
Exit Sub
Err:
MsgBox "Kh th kt ni n CSDL ! " & Err.Description
End Sub
'-----------------------------------------------------------------------------------------------------------------------'/// Np m nh cung cp vo cy. Khi np mt NCC th np cc sn phm ngay vo nt
Sub NapMaNhaCC()
Dim Key As String, Rs As ADODB.Recordset
Set Rs = Cn.Execute("SELECT SupplierID, CompanyName FROM Suppliers")
tvwNhaCC.Nodes.Clear
tvwNhaCC.LabelEdit = tvwManual
tvwNhaCC.Nodes.Add , , "M0NUT_GOC", "Tn cc nh cung cp"
Do While Rs.EOF = False
tvwNhaCC.Nodes.Add "M0NUT_GOC", tvwChild, Key, Rs!CompanyName
Key = "M1" & Rs!SupplierID
NapSanPhamVaoNCC Key
Rs.MoveNext
Loop
Rs.Close
tvwNhaCC.Nodes("M0NUT_GOC").Expanded = True
End Sub
'----------------------------------------------------------------------------------------------------------------------'/// Np cc sn phm vo nt nh cung cp. Nt ny c m l MaNCC
'/// V trng Key ca mi nt cha xu "M1" & SupplierID, do vy khi Select cn phi b
'/// xu "M1" i bng cch vit Mid(MaNCC,3).
'/// Cng ging nh trng SupplierID, trng ProductID cng l trng s, do vy cn
'/// phi thm mt xu, v d "M2" vo thuc tnh Key.
Sub KhoiTaoListView()
lvwCTDonHang.ColumnHeaders.Add , , "M n hng"
Trang 153
lvwCTDonHang.ListItems.Clear
Do While Rs.EOF = False
Set BanGhi = lvwCTDonHang.ListItems.Add(, , Rs!OrderID)
BanGhi.SubItems(1) = Rs!UnitPrice & " $"
BanGhi.SubItems(2) = Rs.Fields("Quantity") '/// Cach viet khac
Rs.MoveNext
Loop
Rs.Close
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Khi ngi dng click mt nt th cn trch 2 k t u bit l ngi dng click vo
'/// nt gc (M0), tn nh cung cp (M1) hay sn phm (M2) c x l ph hp.
'/// Thuc tnh Node s cho bit thng tin (tr n) nt c chn.
'-----------------------------------------------------------------------------------------------------------------------------------
Trang 154
c. Chng trnh mu
Trc ht cn tham chiu n th vin Microsoft ActiveX Data Object 2.1 v th vin
Microsoft Window Common Controls 6.0 (SP4).
To mt Module mi (Vo Project --> Add Module), t tn l modKetNoi v vit lnh
sau:
modKetnoi.bas
Option Explicit
Public Cn As New ADODB.Connection '/// Khai bo bin ton cc Connection : Cn
Public TrangThaiKetNoi As Boolean
'/// Dng lu tnh trng kt ni
Trang 155
Sub Main()
On Error GoTo Err
strConn = "Provider=Microsoft.jet.oledb.4.0;"
strConn = strConn & "Data source= " & App.Path & "\Nwind.mdb"
Cn.ConnectionString = strConn
Cn.CursorLocation = adUseClient
Cn.Open
TrangThaiKetNoi = (Cn.State = 1)
frmMain.Show
Exit Sub
Err:
MsgBox "Khng th m c CSDL ! " & Err.Description, vbCritical
End
End Sub
frmMain.frm
Option Explicit
'/// Np m v tn vo cy (M gn cho thuc tnh Key, Tn gn cho thuc tnh Text)
Sub NapNhaCC()
Dim RS As ADODB.Recordset, Key As String
Set RS = Cn.Execute("SELECT * FROM Suppliers")
tvwNhaCC.Nodes.Add , , "NUT_GOC", "Danh sch cc nh cung cp"
Do While RS.EOF = False
Key = "M1" & RS!Supplierid
'/// Thm mt xu v Key khng c l s
tvwNhaCC.Nodes.Add "NUT_GOC", tvwChild, Key, RS!CompanyName
RS.MoveNext
Loop
tvwNhaCC.Nodes("NUT_GOC").Expanded = True
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// To cc ct cho Listview
Sub KhoiTaoListView()
lvwSanPham.ColumnHeaders.Add , , "Tn sn phm"
lvwSanPham.ColumnHeaders.Add , , "M loi"
lvwSanPham.ColumnHeaders.Add , , "n gi"
lvwSanPham.View = lvwReport
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Khi form c np cn kim tra xem trc kt ni c n CSDL cha ?
Trang 156
'----------------------------------------------------------------------------------------------------------------------------------'/// Mi khi ngi dng click vo 1 nt (Tn nh cung cp) th np thng tin sn phm vo Listview
lvwSanPham.ListItems.Clear
Do While RS.EOF = False
Set MucMoi = lvwSanPham.ListItems.Add(, , RS!ProductName)
MucMoi.SubItems(1) = RS!CategoryID
MucMoi.SubItems(2) = RS!UnitPrice
RS.MoveNext
Loop
RS.Close
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Hin th frmNhapNCC
Sub NapMaNCC()
Dim RS As ADODB.Recordset
Set RS = Cn.Execute("SELECT SupplierID FROM Suppliers")
Do While RS.EOF = False
cboSupplierID.AddItem RS!Supplierid
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
End Sub
'----------------------------------------------------------------------------------------------------------------------------------'/// Np m chng loi vo mt hp Combo
Sub NapMaChungLoai()
Dim RS As ADODB.Recordset
Set RS = Cn.Execute("SELECT CategoryID FROM Categories")
Do While RS.EOF = False
cboCategoryID.AddItem RS!CategoryID
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
End Sub
Trang 157
Sub XoaFormNhap()
Dim Obj As Object
For Each Obj In Controls
If (TypeOf Obj Is TextBox) Then Obj.Text = ""
Next
End Sub
'----------------------------------------------------------------------------------------------------------------------'/// Khi thc hin thm bn ghi vo Bng cn t bit lu : Nu mt trng kiu
'/// Text th d liu thm vo phi c km thm 2 du nhy n hai u.
'/// Cn i vi trng kiu s th khng cn !
d. Ghi ch:
Nn c kim tra tnh trng kt ni trc khi thc hin thao tc vi CSDL.
Trang 158
To mt ng dng mi
To mt Data Report : Vo Project -> Data Report
Vo Menu Project -> Add Data Enviroment, nu khng c mc ny th vo
Project -> Components v chn mc sau:
d. Ghi ch:
Trang 160
C- BI TP T GII
Bi 1. Vit chng trnh nhp d liu cho tt c cc bng trong CSDL NWind. Trong
qu trnh nhp cn hin th kt qu (ni dung ca bng).
Bi 2. Vit chng trnh np tt c cc bn ghi trong bng Customers vo mt iu
khin MS FlexGrid.
Bi 3. Vit chng trnh tra cu cc hm, th tc trong VB.
Bi 4. Vit chng trnh nh dng cc t kho ca VB trong ti liu MS Word, cc
t kho c nh dng thnh ch m.
Bi 5. Vit chng trnh qun l l lch ca SV trong mt lp.
Bi tp 6 - Bi tp ln : Xy dng mt ng dng E-MAILn gin.
Trong bi tp ln ny, bn c c th s dng h qun tr CSDL Access hoc SQL
Server u c (v nu ch dng lu tr d liu th khng c s khc nhau
nhiu). Tuy nhin, SQL Server thng c dng nhiu hn trong cc ng dng i
hi tc x l nhanh, kh nng qun l d liu ln. Vic s dng SQL to CSDL
cng nh cch kt ni vi CSDL SQL Server dnh cho bn c t tham kho thm
(v ti liu c rt nhiu v cng tng i n gin).
BI TP LN
m phng chng trnh qun l th in t, s dng h qun
tr csdl sqlserver 2000 v ngn ng lp trnh visual basic
Gii thiu chung
Nh chng ta bit, thc t trong qu trnh gi th in t th thng tin gi i thng
bao gm : Tiu th, a ch ngi nhn, ni dung th, file gi km, ngy gi (do h
thng t sinh ra) v cc thng tin ny c lu tr trn my ch theo mt giao thc
chun (Giao thc SMTP v POP3). Cn khi nhn th chnh l qu trnh chng ta ly
cc thng tin trn v t my ch. Nh vy, nu chng ta s dng SQLServer lu
tr v qun l thng tin ng thi kt hp dng Visual basic gi (Insert vo bng
CSDL) v nhn (Select bn ghi trong bng) sau hin th cho ngi dng th hon
ton c th m phng c h thng th in t ny trong khi ngi dng th khng
th nhn bit c l h thng ca chng ta ch l m phng (tc l h thng trong
sut i vi ngi dng).
Hng dn phn tch v d liu
V y, do thi gian ngn v mc ch chnh l sinh vin thao tc thnh thc cc
cu lnh, v vy nn s y v ti u cc bng d liu khng phi l yu t quan
trng hng u.
Chng ta thy rng, h thng c cc thc th sau :
Nh vy vit li l :
Ngi (Nhn/gi) (MaNguoiDung, H_tn, a_ch, gii_tnh)
Trang 162
Cc bng d liu
Trang 1
Trang 1
tblEMailes Table
Trang 2
tblFiles table
tblReceivers Table
Trang 3
cc yU CU chnh
Vit mt chng trnh bng Visual Basic thc hin cc cng vic sau :
1./ To c s d liu trn SQL Server c tn l TK32
2./ Form nhp d liu cho bng tblUserDetail
3./ Ly th v v hin th ni dung ca th cho mt ngi no
4./ Gi mt th i cho mt (hoc nhiu ngi)
5./ Xo th
6./ Chn cc th tho mn iu kin no (v d c gi t congnx, hay nm gi
l nm 2004 v.v...)
7./ Cho bit l nhng th no cha c c, nhng th no c ngi c
8./ Xo v khi phc li nhng th b xo
9./ Thng k thng tin v nhng e-mail gi i ca mt ngi nh: S lng e-mail,
s file attach, tng kch thc ca tt c cc file attach.
10./ Thng k s lng e-mail c gi i t cc n v
11./ Thay i Password, quyn... ng nhp
12./ To Account mi thng qua chng trnh.
Bi tp 1: Phn tch v thit k phn mm tra cu & nhp sch trong th vin
Bi tp 2: Phn tch v thit k phn mm qun l lch lm vic c nhn
Bi tp 3: Phn tch v thit k phn mm tra cu t in tin hc
Bi tp 4: Phn tch v thit k phn mm qun l im thi ca mt lp
Bi tp 5: Phn tch v thit k phn mm qun l hng ho cho mt ca hng.
Bi tp 6: Phn tich, thit k v xy dng mt Website gii thiu hng ho.
Bi tp 7: Phn tch, thit k v xy dng mt Website t hng (Sn phm c th
l qun o, giy dp, in thoi.)qua mng.
Bi tp 8: Phn tch, thit k ng dng thi trc nghim trn WEB
Bi tp 9: Phn tch, thit k phn mm dy hc trn VB
Bi tp 10: Phn tch, thit k phn mm chi c CARO.
Trang 1
MC LC
CHNG I: NGN NG LP TRNH VISUAL BASIC
A. BI TP
Bi tp 1: S dng hm MsgBox v InputBox ..................................................1
Bi tp 2: Minh ho cu trc If Then. ...........................................................1
Bi tp 3-Select Case: ......................................................................................1
Bi tp 4: Hin th cc loi thng bo s dng hm MsgBox. ..........................1
Bi tp 5: S dng cu trc Select Case..........................................................1
Bi tp 6: S dng vng lp FOR.....................................................................2
Bi tp 7: S dng vng lp For vi iu khon Step ......................................2
Bi tp 8: S dng vng lp For m ngc FOR DOWNTO. ..............2
Bi tp 9: S dng vng lp DoLoop Until ....................................................2
Bi tp 10: S dng cu trc Do While Loop ...............................................2
Bi tp 11: Thot khi vng lp vi Exit For, Exit Do........................................2
Bi tp 12: S tng ng gia cc cu trc lp. .........................................2
Bi tp 13: S dng vng lp FOR...................................................................2
Bi tp 14 Tnh N !:........................................................................................2
Bi tp 15- Tnh tng 1 dy s:.........................................................................2
Bi tp 16- Tnh dy Fibonasi...........................................................................2
Bi tp 17- Tm c s chung ln nht : .........................................................2
Bi tp 18-Ti gin phn s :............................................................................2
Bi tp 19- Tm s nguyn t:...........................................................................3
Bi tp 20-m k t:.......................................................................................3
Bi tp 21-Tnh tng dy s:.............................................................................3
Bi tp 22 : Bi ton tm phn t ln nht (nh nht) trong mt danh sch .....3
Bi tp 23: Lit k cc phn t ln nht (nh nht) trong danh sch. .............3
Bi tp 24: Sp xp mt dy s nguyn. ..........................................................3
Bi tp 25 Quick Sort.....................................................................................3
Bi tp 26- Heap Sort: ......................................................................................3
Bi tp 27: Sp xp ..........................................................................................3
Bi tp 28-Chun ho xu: ...............................................................................3
Bi tp 29-Chun ho xu ................................................................................3
Bi tp 30-Tch s khi xu: ............................................................................3
Bi tp 31-Tch Cu:........................................................................................4
Bi tp 32-Chuyn i Font ch.......................................................................4
Bi tp 33-Thng k k t trong xu.................................................................4
Bi tp 34-Thay th k t .................................................................................4
Bi tp 35-Cng s nguyn ln: .......................................................................4
Bi tp 36-Ma trn s: ......................................................................................4
Bi tp 37- Kim tra "ng thng" trong ma trn:...........................................4
Bi tp 38- Mng bn ghi:.................................................................................4
Trang 2
Trang 4
Bi 16 .............................................................................................................67
Bi 17 .............................................................................................................67
Bi 18 .............................................................................................................69
Bi 19 .............................................................................................................70
Bi 20 .............................................................................................................71
Bi 21 .............................................................................................................73
Bi 22 .............................................................................................................74
Bi 23 .............................................................................................................76
Bi 24 .............................................................................................................77
C. BI TP T GII
Trang 6
Bi 2 .............................................................................................................137
Bi 3 .............................................................................................................138
Bi 4 .............................................................................................................139
Bi 5 .............................................................................................................140
Bi 6 .............................................................................................................141
Bi 7 .............................................................................................................141
Bi 8 .............................................................................................................142
Bi 9 .............................................................................................................144
Bi 10 ...........................................................................................................145
Bi 11 ...........................................................................................................148
Bi 12 ...........................................................................................................151
Bi 13 ...........................................................................................................152
Bi 14 ...........................................................................................................154
Bi 15 ...........................................................................................................159
Bi 16 ...........................................................................................................160
Bi tp ln ....................................................................................................161
Trang 7