You are on page 1of 15

Vit Code

Trong ba chng u chng ta hc qua ba b phn chnh ca mt chng trnh Visual Basic 6.0. l:

Forms l ci n n hay khung ta xy dng User Interface. Controls l nhng vin gch ta dng xy dng User Interface. Event procedures l code nm pha sau nhng hnh nh, n l cht keo dng dn cc Controls li vi nhau to thnh chng trnh p dng ca ta.

Nh ta th y, tt c cc code c x l (executed) khi c mt Event xy ra. Th d nh khi User click mt CommandButton (Event Click) hay type nt Tab di chuyn Cursor t Textbox ny (Event Lostfocus) qua Textbox khc (Event GotFocus). Cc nhm code x l l : Private Sub Command1_Click() ... End Sub Private Sub Text1_LostFocus() ... End Sub v Private Sub Text2_GotFocus() ... End Sub Trong khi lp trnh, mi ln ta double click ln mt Control ca mt Form l VB6 IDE t ng generate cho ta ci v t hng Private Sub Control_Event() cho n End Sub chng ta in nhng h ng code ca mnh vo chnh gia. iu khin th t x l cc dng code Gi d ta vit mt chng trnh Vb6 n gin nh trong hnh ny vi hai Textbox tn txtName, txtAge v mt nt tn CmdEnter n m trong mt form tn Form1:

Thng thng cc dng code c x l theo th t t trn xung di. Th d nh kim xem cc d kin va c cho vo cc Textbox c tng i hp l hay khng, khi User click nt CmdEnter, ta x l Sub di y: Private Sub CmdEnter_Click() ' Make sure the Name field is not blank If txtName.Text = "" Then MsgBox "Please enter Name" Exit Sub ' Terminate this Sub End If ' Make sure a number is supplied for Age If Not IsNumeric(txtAge.Text) Then MsgBox "Please enter a number for Age" Exit Sub ' Terminate this Sub End If End Sub Ci Sub ni trn c ch Private nm pha trc, ni ch ni trong cng mt form cha Control CmdEnter (tc l Form1 trong trng hp ny) ta mi c th gi (dng) Sub CmdEnter_Click(). Th d ta mun khi User bm key "Enter" trn bn phm sau khi cho vo chi tit Textbox txtAge th coi nh User click nt CmdEnter. Ta vit nh sau: Private Sub txtAge_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

KeyAscii = 0 ' swallow Key Enter to avoid side effect CmdEnter_Click ' Call Private Sub CmdEnter_Click from the same form End If End Sub Khi ta dng cu CmdEnter_Click lm mt dng code (cn gi l gi Sub CmdEnter_Click) th coi nh tng ng vi nht tt c 10 dng codes gia hai hng Private Sub CmdEnter_Click() v End Sub ti ch cu CmdEnter_Click, nh vit li di y: Private Sub txtAge_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 ' Swallow Key Enter to avoid side effect ' Make sure the Name field is not blank If txtName.Text = "" Then MsgBox "Please enter Name" Exit Sub ' Terminate this Sub End If ' Make sure a number is supplied for Age If Not IsNumeric(txtAge.Text) Then MsgBox "Please enter a number for Age" Exit Sub ' Terminate this Sub End If End If End Sub C mt cch ni khc l khi execution i n hng CmdEnter_Click th n nh y vo Private Sub CmdEnter_Click() execute cho n ht ri nhy tr li hng k tip trong Private Sub txtAge_KeyPress(KeyAscii As Integer) Trong Private Sub CmdEnter_Click() nu User khng nh g vo Textbox txtName th chng trnh s display message "Please enter

Name" ri Exit Sub. y l cch nhy ngay ra khi Sub ch khng i phi execute xung ti hng cht. Dng IF....THEN statement Trong Private Sub CmdEnter_Click() trn ta thy c hai ch dng IF...THEN th xem mt iu kin g c c tha mn khng. Nu iu kin l ng vy, tc l True th ta thc hin nhng g uc vit t h ng IF...THEN cho n hng END IF. Ngc li, nu iu kin khng ng th execution nhy xung ti dng code nm ngay di dng END IF. Tc l c khi execution s i ngang qua, c khi khng i ngang qua nhng dng code gia cu IF...THEN v cu END IF. iu kin trong IF Statement l phn nm gia hai ch IF v THEN. N uc gi l Logical Expression. Ta c: txtName.text = "" ' content of Textbox txtName is nothing, i.e. an empty string v NOT IsNumeric(txtAge.text) ' content of TextBox txtAge is not a number Trong Logical Expression th nh ta dng Function IsNumeric c cho bit rng txtAge.text c phi l mt con s hay khng. V ta ch than phin khi txtAge khng phi l mt con s n n ta ph i thm ch NOT pha truc. Tc l khi IsNumeric(txtAge.text) = False th NOT IsNumeric(txtAge.text) = True Nu gia IF...THEN v END IF ch c mt dng code bn c th nhp dng code ln vi IF...THEN v khng dng END IF. Tc l: If theColorYouLike = vbRed Then MsgBox "You 're a lucky person!" End If is equivalent with If theColorYouLike = vbRed Then MsgBox "You 're a lucky person!"

Mt Logical Expression c th n gin (simple) nh trong cc th d trn hay rc ri hn nu ta rp nhiu simple Logical Expression li vi nhau bng cch dng nhng t OR v AND. Khi hai Logical Expression c rp li bng ch OR (HAY) th ch cn t nht mt trong hai Expression l TRUE l Logical Expression tng hp cng l TRUE. Ci TRUE Table cho OR nh sau: A B A OR B

FALSE FALSE FALSE

FALSE TRUE

TRUE

TRUE

FALSE TRUE

TRUE

TRUE

TRUE

Trong th d di y nu mt ngi 25 tui tr ln HAY c li tc trn 30 ngn la mt nm th cho mn tin c : If (PersonAge >= 25) Or (PersonIncome >= 30000) Then LendPersonMoney End If cch dng cc d u ngoc n ging nh trong ton i s. Thng thng h ci g nm trong ngoc th mnh tnh trc. Nu c nhiu lp du ngoc th tnh theo th t t trong ra ngoi. Nh trong bi trn ta tnh xem PersonAge >= 25 xem l TRUE hay FALSE, ri tnh xem PersonIncome >= 30000 xem l TRUE hay FALSE, trc khi tnh kt qu tng hp, da vo ci TRUE table cho OR.

Khi hai Logical Expression c rp li bng ch AND (V) th ch khi n o c hai Expression u l TRUE, Logical Expression tng hp mi l TRUE. Ci TRUE Table cho AND nh sau: A B A AND B

FALSE FALSE FALSE

FALSE TRUE

FALSE

TRUE

FALSE FALSE

TRUE

TRUE

TRUE

Trong th d di y nu hc sinh 18 tui tr ln v cha m kim 100 ngn tr ln mt nm th ng k hc sinh mt i hc t: If (StudentAge >= 18) And (ParentIncome >= 100000) Then EnrollStudentAtPrivateUniversity End If Mt Logical Expression c th tp hp c OR ln AND nh trong th d di y nu hc sinh 18 tui tr ln v cha m kim 100 ngn tr ln mt nm HAY hc sinh c Intelligent Quotient cao hn 160 th ng k hc sinh mt i hc t: If ((StudentAge >= 18) And (ParentIncome >= 100000)) Or (StudentIQ > 160) Then EnrollStudentAtPrivateUniversity End If Hai du ngoc n nm bn ngoi ca: ((StudentAge >= 18 ) And (ParentIncome >= 100000)) khng cn thit v theo qui c, ta tnh AND expression trc khi tnh OR expression, nhng n gip ta c d hn. Dng IF....THEN..ELSE statement Hy xem th d: If (StudentPassmark > 75) Then ' Part A
6

EnrollStudentAtPublicSchool Else ' Part B EnrollStudentAtPrivateSchool End If Nu hc sinh u vi s im trn 75 th cho hc trng cng, NU KHNG th phi hc trng t. Tc l nu StudentPassmark > 75 l TRUE th x l phn A, nu khng th x l phn B. phn A gm nhng dng code n m gia dng If (StudentPassmark > 75) then v else. Cn ph n B gm nhng dng code nm gia dng else v end if. Ta c th rp ch ELSE vi ch IF dng nh trong th d sau y: < If (StudentPassmark > 75) Then EnrollStudentAtPublicSchool ElseIf (StudentPassmark >= 55) Then EnrollStudentAtSemipublicSchool Else EnrollStudentAtPrivateSchool End If Nu hc sinh u vi s im trn 75 th cho hc trng cng, NU t 55 im n 75 im th cho hc trng bn cng, nu khng (tc l im u di 55) th phi hc trng t. Nu tnh nh, khng c trng t, ta khng c quyt nh cho hc tr u di 55 im hc u th b phn ELSE trong th d trn. Phn chng trnh tr thnh: If (StudentPassmark > 75) Then EnrollStudentAtPublicSchool ElseIf (StudentPassmark >= 55) Then EnrollStudentAtSemipublicSchool

End If Ta c th dng ELSEIF nhiu ln nh sau: If (TheColorYouLike = vbRed) Then MsgBox "You 're a lucky person" ElseIf (TheColorYouLike = vbGreen) Then MsgBox "You 're a hopeful person" ElseIf (TheColorYouLike = vbBlue) Then MsgBox "You 're a brave person" ElseIf (TheColorYouLike = vbMagenta) Then MsgBox "You 're a sad person" Else MsgBox "You 're an average person" End If Execution i ln lt t trn xung di, nu mt iu kin IF l TRUE th x l phn ca n ri nhy xung ngay di dng END IF. Ch khi mt iu kin IF khng c tha mn ta mi th mt iu kin IF bn di k . Tc l nu bn thch mu lu mu tm (magenta) th chng trnh s display "You're a lucky person", v khng h bit "You're a sad person". Dng SELECT CASE statement Th d c nhiu ELSEIF nh trn c th c vit li nh sau: Select Case TheColorYouLike Case vbRed MsgBox "You 're a lucky person" Case vbGreen MsgBox "You 're a hopeful person" Case vbBlue

MsgBox "You 're a brave person" Case vbMagenta MsgBox "You 're a sad person" Else MsgBox "You 're an average person" End Select Cch vit ny tng i d c v t nhm ln khi vit code hn l dng nhiu ELSEIF. Phn ELSE trong Select Case statement th optional (nhim ), tc l c cng c, khng c cng khng sao. H khi iu kin ca mt Case c tho mn th nhng dng code t cho n dng Case k di hay Else c x l v tip theo execution s nhy xung dng nm ngay di dng End Select. Nh l di cng ta vit End Select, ch khng phi End If. Cc Expression dng cho mi trng hp Case khng nh t thit phi n gin nh vy. bit thm chi tit v cch dng Select Case, bn highlight ch Case (doubleclick ch Case) ri bm nt F1. Dng FOR statement Trong lp trnh, ni v Flow Control (iu khin hng i ca execution) ta dng hai lo i statement chnh: Branch statements nh IF..THEN..ELSE (k c Select Case) v Iterative statements (lp i, lp li) nh FOR v WHILE LOOP (Vng). Ta s ni n WHILE Loop trong ph n k tip. Trong khi Branch statement cho php ta execute trong nhnh ny hay nhnh kia ty theo value ca Logical Expression th Iterative statement cho ta execute mt phn code lp i, lp li nhiu ln cho n khi mt iu kin c tha mn. Gi d ta vit mt chng trnh n gin tnh tng s cc con s gia bt c hai con s no (coi chng ln qu). Ci form ca chng trnh ging nh di y:

Sau khi cho hai con s From (T) v To (Cho n) ta click nt Calculate v thy kt qu hin ra trong Textbox txtTotal. Ci Sub tnh tng s c lit ra di y: Private Sub CmdTotal_Click() Dim i, FromNo, ToNo, Total FromNo = CInt(txtFromNumber.Text) ' Convert Text string ra internal number b?ng Function CInt ToNo = CInt(txtToNumber.Text) ' Convert Text string ra internal number b?ng Function CInt Total = 0 ' Initialise Total value to zero For i = FromNo To ToNo ' Iterate from FromNo to ToNo Total = Total + i ' Add the number to the Total Next txtTotal.Text = CStr(Total) ' Convert internal number ra Text string End Sub Trong th d trn, FOR loop bt u t dng For i = FromNo To ToNo v ch m dt dng Next. Khi execution b t u Total bng 0, i bng FromNo. Execution s i qua ht nhng d ng trong FOR loop ri value ca i s c tng ln 1, ri execution s bt u li u loop. Trong th d ny v FromNo=4 v ToNo=6 nn execution s i qua ci FOR loop 3 ln. Ln th nht i=4, ln th nh i=5 ,v ln th ba th i=6. Sau , khi i=7 th n ln hn ToNo (=6) nn execution nhy ra khi FOR loop. Kt qu l Total=15 v c display trong Textbox txtTotal, sau khi c converted t internal number ra text string vi Function CStr. Nu ta ch mun cng nhng s chn t 4 n 16 ta c th lm cho i tng value ln 2 (thay v 1) mi khi n cui loop. Tc l i=4,6,8 .v.v..Ta s thm ch STEP trong FOR statement nh sau: For i = 4 To 16 Step 2 ' Iterate from 4 to 16 with Step=2 Total = Total + i ' Add the number to the Total Next

10

Total s bng 4+6+8+10+12+14+16= 70. Trong th d trn ta cng c th dng STEP s m nh sau: For i = 16 To 4 Step -2 ' Iterate from 16 to 4 with Step=-2 Total = Total + i ' Add the number to the Total Next Trong trng hp ny FOR loop bt u vi i=16. Khi n cui loop ln th nht value ca i b bt 2 v tr thnh 14. Sau i b gim gi tr dn dn n 4. K i=2 th nh hn s cui cng (=4) nn execution nhy ra khi FOR loop.

Gi d ta mun ly ra tt c nhng blank space trong mt text string. Ta bit con s characters trong mt text string, cn gi l chiu di ca text string c th tnh bng cch dng Function Len(TString). V ni n character th i trong mt Text string ta dng Mid Function.

Khi User click button Remove Blank Spaces chng trnh s execute Sub di y: Private Sub CmdRemoveBlankSpaces_Click() Dim i, TLen, TMess TMess = "" ' Initialise temporary String to null string For i = 1 To Len(txtOriginalString.Text) ' Iterate from the first chracter to the last character of the string ' Check if chracter is NOT a blank space If Mid(txtOriginalString.Text, i, 1) <> " " Then ' Character is not a blank space - so append it to TMess

11

TMess = TMess & Mid(txtOriginalString.Text, i, 1) End If Next txtResultString.Text = TMess ' Disaplay TMess by assigning it to txtResultString.text End Sub Thng thng, ta dng FOR loop khi bit trc execution s i qua loop mt s ln nht nh. Nhng thnh thong, khi mt iu kin c tha m n ta c th p execution nhy ra gia chng khi FOR loop, ch khng i cho n s ln i qua loop. Th d nh ta mun bit phi cng bao nhiu s k tip t 1 tr ln c tng s va ln hn hay bng 76.

Khi User click button Work Out, Sub di y s c x l: Private Sub cmdWorkOut_Click() Dim i, Total, WantedTotal WantedTotal = CInt(txtWantedTotal.Text) ' Convert Text string ra internal number b?ng Function CInt Total = 0 ' Initialise Total value to zero For i = 1 To 30 Total = Total + i ' Add the number to the Total If Total >= WantedTotal Then Exit For ' Jump out of FOR loop

12

Next txtActualTotal.Text = CStr(Total) ' Display the Actual Total txtUptoNumber.Text = CStr(i) ' Display the highest number End Sub Dng DO WHILE Loop statement Khi ta khng bit chc l execution s i qua loop bao nhiu ln th tt nht l dng DO WHILE Loop statement. Khc vi FOR Loop, trong DO WHILE Loop ta phi t lo initialisation (tc l m i v u i bng bao nhiu) v t lo tng value ca parameter i. Nu Logical Expression l True th execute nhng dng code t DO WHILE cho n Loop. Th d mi va qua c th vit li bng cch dng DO WHILE Loop nh sau: Private Sub cmdWorkOut_Click() Dim i, Total WantedTotal = CInt(txtWantedTotal.Text) ' Convert Text string ra internal number b?ng Function CInt Total = 0 ' Initialise Total value to zero i = 1 ' Intialise at the first character Do While (Total < WantedTotal) ' Logical Expression is (Total < WantedTotal) Total = Total + i ' Add the number to the Total i = i + 1 ' Increment the vakue of i Loop txtActualtotal.Text = CStr(Total) ' Display the Actual Total txtUptonumber.Text = CStr(i - 1) ' Display the highest number End Sub TRong khi Total hy cn nh hn WantedTotal th ta tip tc i qua While Loop. Gi d ta c cc hng text ch a gi tin cc th c th b vo bnh m tht vi gi nh sau: Chicken Roll 45c
13

Roast Beef Tomato Sauce

55c 5c

By gi ta mun vit code ly ra gi tin t nhng hng Text string nh trn. Ta s i t bn phi ln ln qua tri cho n khi tm c mt blank space. Private Sub WorkOutPrice_Click() Dim i, TStr, PriceInCents, Price TStr = "Chicken Roll 45c" i = Len(TStr) ' Starting from the rightmost character of the text string ' Going from right to left, look for the first blank character Do While (Mid(TStr, i, 1) <> " ") i = i - 1 ' Keep walking to the left Loop PriceInCents = Mid(TStr, i + 1) ' String including character "c" ' Discard the rightmost character which is "c" and convert the price string to single number Price = CSng(Left(PriceInCents, Len(PriceInCents) - 1)) txtPrice.Text = CStr(Price) ' Display the highest number End Sub Dng Function Function l mt dng subroutine ging ging nh Sub. Ch khc ch Function cho ta mt kt qu, cho nn cch dng Function hi khc vi Sub. Ta vit mt variable bn tri d u =, c assigned kt qu ca mt Function. Th d nh ta dng Trim Function loi b nhng blank space hai u ca text string TString: ResultString = Trim(TString) Ta a cho Function Trim mt text string called TString. Sau khi Function Trim c executed, ta c kt qu nhng TString khng h thay i. Ngc li, khi ta gi mt Sub, tt c nhng parameter ta a cho Sub u c th thay i tr khi ta tuyn b mt parameter no
14

l ByVal. Trong th d sau, mt copy ca StringA c a cho Sub nn sau khi execute ProcessString, StringA khng h b thay i. Sub ProcessString (ByVal StringA, ConditionA, ConditionB) Public Sub v Function Khi ta dng ch Public (thay v Private) pha trc mt Sub hay Function, ta cho php code nm mt Form hay Basic Module khc c th gi (hay d ng) Sub hay Function . Th d trong Form2 ta c nh ngha DisplayData l: Public Sub DisplayData .... End Sub Trong Form1, ta gi DisplayDta nh sau: Form2.DisplayData

15

You might also like