Ch

t Code

ươ

ng B n - Vi ố

ế

ng đ u chúng ta đã h c qua ba b ph n chánh c a m t ch ng trình Visual Basic ươ ủ ầ ậ ọ ộ ộ ươ

Trong ba ch

6.0. Đó là:

• • •

ự ề ữ ự ạ Forms là cái n n hay khung đ ta xây d ng User Interface. ể Controls là nh ng viên g ch đ ta dùng xây d ng User Interface. ể Event procedures là code n m phía sau nh ng hình nh, nó là ch t keo dùng đ dán các ấ ữ ể ằ ả Controls l ạ ớ i v i nhau đ t o thành ch ể ạ ươ ng trình áp d ng c a ta. ụ ủ

Private Sub Command1_Click()

...

End Sub

Private Sub Text1_LostFocus()

...

End Sub

Private Sub Text2_GotFocus()

...

End Sub

t c các code đ c x lý (executed) khi có m t Event xãy ra. Thí d nh khi User ấ ư ượ ử ấ ả ộ ể ể ụ ư ầ Textbox n y ừ Nh ta đã th y, t click m t CommandButton (Event Click) hay type nút Tab đ di chuy n Cursor t ộ (Event Lostfocus) qua Textbox khác (Event GotFocus). Các nhóm code x lý là : ử

ỗ ầ ộ ộ hàng ự ộ đ ng ủ ề Private Sub Control_Event() cho đ n ế End Sub đ chúng ta đi n ể Trong khi l p trình, m i l n ta double click lên m t Control c a m t Form là VB6 IDE t ậ generate cho ta cái v t ỏ ừ nh ng hàng code c a mình vào chính gi a. ữ ủ ữ

x lý các dòng code

Đi u khi n th t ể

ứ ự ử

d ta vi ng trình Vb6 đ n gi n nh trong hình n y v i hai Textbox tên txtName, ả ụ t m t ch ộ ươ ư ớ ơ Gi ầ txtAge và m t nút tên CmdEnter n m trong m t form tên Form1: ả ộ ế ộ ằ

Private Sub CmdEnter_Click()

' Make sure the Name field is not blank

If txtName.Text = "" Then

1

ng các dòng code đ t ườ ướ ố ượ ử c cho vào các Textbox có t i. Thí d nh đ ki m xem ụ ư ể ể ng đ i h p lý hay không, khi User click nút c x lý theo th t ứ ự ừ ươ trên xu ng d ố ợ Thông th các d ki n v a đ ữ ệ ừ ượ CmdEnter, ta x lý Sub d i đây: ử ướ

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

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

ỉ ộ ứ ộ ằ ườ ướ ầ ể ọ ợ ớ c, ý nói ch n i trong cùng m t form ch a Control ng h p n y) ta m i có th g i (dùng) Sub CmdEnter_Click(). Textbox txtAge ứ ố t ế ở ụ ấ Cái Sub nói trên có ch ữ Private n m phía tr CmdEnter (t c là Form1 trong tr Thí d ta mu n khi User b m key "Enter" trên bàn phím sau khi cho vào chi ti thì coi nh User đã click nút CmdEnter. Ta vi t nh sau: ư ư ế

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

ộ ọ ấ ả ớ Khi ta dùng câu CmdEnter_Click làm m t dòng code (còn g i là g i Sub CmdEnter_Click) thì coi Private Sub CmdEnter_Click() và nh t ư ươ End Sub t ọ t c 10 dòng codes gi a hai hàng i đây: ươ i ch câu CmdEnter_Click, nh vi ữ i d ng v i nhét t ỗ t l ư ế ạ ướ ng đ ạ

Private Sub ộ Private Sub ả i hàng k ti p trong ế ế ế ế ồ ở ạ ể ế ế ồ Exit Sub. i hàng chót. CmdEnter_Click thì nó nh y vào Có m t cách nói khác là khi execution đi đ n hàng CmdEnter_Click() đ execute cho đ n h t r i nh y tr l ả txtAge_KeyPress(KeyAscii As Integer) Trong Private Sub CmdEnter_Click() n u User không ng trình s display message "Please enter Name" r i đánh gì vào Textbox txtName thì ch ẽ ươ Đây là cách nh y ngay ra kh i Sub ch không đ i ph i execute xu ng t ợ ớ ả ả ỏ ố ớ

Dùng IF....THEN statement

2

txtName.text = "" ' content of Textbox txtName is nothing, i.e. an empty string

NOT IsNumeric(txtAge.text) ' content of TextBox txtAge is not a number

ợ ề ữ ể ử ự ệ ề ế ứ ớ gi a câu Logical ữ IF và THEN. Nó đu c g i là ợ ọ ề ầ ằ trên ta th y có hai ch dùng Trong Private Sub CmdEnter_Click() IF...THEN đ th xem m t ộ ấ ở ỗ c th a mãn không. N u đi u ki n là đúng v y, t c là đi u ki n gì có đ True thì ta th c hi n ệ ứ ệ ế ề ượ ệ ỏ ậ hàng nh ng gì đu c vi c l IF...THEN cho đ n hàng t t i, n u đi u ki n không END IF. Ng ượ ạ ế ế ừ END IF. T c là có khi execution i dòng code n m ngay d đúng thì execution nh y xu ng t i dòng ướ ằ ố ả s đi ngang qua, có khi không đi ngang qua nh ng dòng code IF...THEN và câu END IF. ữ ở ữ ẽ Đi u ki n trong IF Statement là ph n n m gi a hai ch ữ ệ Expression. Ta có:

IsNumeric(txtAge.text) = False

thì

NOT IsNumeric(txtAge.text) = True

c cho bi ể ượ ứ ả ộ ố ố t r ng txtAge.text có Trong Logical Expression th nhì ta dùng Function IsNumeric đ đ ế ằ ph i là m t con s hay không. Vì ta ch than phi n khi txtAge không ph i là m t con s nên ta ph i ả ộ ề ỉ ả đ thêm ch NOT phía tru c. T c là khi ể ữ ứ ớ

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!"

ớ ữ IF...THEN và END IF ch có m t dòng code b n có th nh p dòng code lên v i ể ạ ậ ỉ ế N u gi a ộ IF...THEN và không dùng END IF. T c là: ứ

ộ ể ơ ư ế ề ụ ữ ằ ữ OR (HAY) thì ch c n ít nh t m t trong hai Expression là ấ ỉ ầ ộ ượ M t Logical Expression có th đ n gi n (simple) nh trong các thí d trên hay r c r i h n n u ta ắ ố ơ ráp nhi u simple Logical Expression l ừ OR và AND. Khi hai Logical Expression đ TRUE là Logical Expression t ng h p cũng là TRUE. Cái TRUE Table cho OR nh sau: ả i v i nhau b ng cách dùng nh ng t ạ ớ i b ng ch ợ c ráp l ạ ằ ổ ư

A

B

A OR B

FALSE FALSE FALSE

FALSE TRUE

TRUE

TRUE

FALSE TRUE

TRUE

TRUE

TRUE

If (PersonAge >= 25) Or (PersonIncome >= 30000) Then

LendPersonMoney

End If

i 25 tu i tr lên HAY có l i t c trên 30 ngàn đô la m t năm thì i đây n u m t ng ế ộ ườ ổ ở ợ ứ ộ c : Trong thí d d ụ ướ cho m n ti n đ ượ ề ượ

3

ể ạ ố ư ể ằ ặ ơ ế ấ ướ ấ ặ ặ ng h cái gì n m trong ư trong ra ngoài. Nh PersonIncome Đ ý cách dùng các d u ngo c đ n gi ng nh trong toán đ i s . Thông th ườ ố c. N u có nhi u l p d u ngo c thì tính theo th t ngo c thì mình tính tr t ứ ự ừ ề ớ trong bài trên ta tính xem PersonAge >= 25 xem là TRUE hay FALSE, r i tính xem ồ

c khi tính k t qu t ng h p, d a vào cái TRUE table cho ướ ả ổ ự ế ợ >= 30000 xem là TRUE hay FALSE, tr OR.

ề ữ AND (Và) thì ch khi nào c hai Expression đ u ả ỉ i b ng ch Khi hai Logical Expression đ là TRUE, Logical Expression t ng h p m i là TRUE. Cái TRUE Table cho AND nh sau: c ráp l ợ ạ ằ ớ ượ ổ ư

A

B

A AND B

FALSE FALSE FALSE

FALSE TRUE

FALSE

TRUE

FALSE FALSE

TRUE

TRUE

TRUE

If (StudentAge >= 18) And (ParentIncome >= 100000) Then

EnrollStudentAtPrivateUniversity

End If

ế ổ ở ẹ ế ọ ở ộ Trong thí d d ụ ướ đăng ký h c sinh ọ i đây n u h c sinh 18 tu i tr lên và cha m ki m 100 ngàn tr lên m t năm thì m t đ i h c t : ở ộ ạ ọ ư

If ((StudentAge >= 18) And (ParentIncome >= 100000)) Or (StudentIQ > 160) Then

EnrollStudentAtPrivateUniversity

End If

ụ ướ ể ậ ư ế ọ ộ ổ ở ẹ ế ẫ ộ ọ M t Logical Expression có th t p h p c OR l n AND nh trong thí d d i đây n u h c sinh 18 ơ tu i tr lên và cha m ki m 100 ngàn tr lên m t năm HAY h c sinh có Intelligent Quotient cao h n 160 thì đăng ký h c sinh : ợ ả ở m t đ i h c t ở ộ ạ ọ ư ọ

ằ ấ ặ ơ ủ

c, ta tính AND expression tr c khi tính OR expression, nh ng nó t vì theo qui ướ ư ướ ế Hai d u ngo c đ n n m bên ngoài c a: ((StudentAge >= 18 ) And (ParentIncome >= 100000)) không c n thi giúp ta đ c d h n. ầ ọ ễ ơ

Dùng IF....THEN..ELSE statement

If (StudentPassmark > 75) Then

' Part A

EnrollStudentAtPublicSchool

Else

' Part B

EnrollStudentAtPrivateSchool

End If

Hãy xem thí d : ụ

4

ng công, N U KHÔNG thì ph i h c tr ọ ậ ớ ố ể Ế ọ ả ọ ầ ườ ử ử ế ầ ườ ng ể ế StudentPassmark > 75 là TRUE thì x lý ph n A, n u không thì x lý ph n B. Đ ý If (StudentPassmark > 75) then và else. Còn ph n Bầ ữ ằ ồ ữ N u h c sinh đ u v i s đi m trên 75 thì cho h c tr ế . T c là n u t ư ứ ph n A g m nh ng dòng code n m gi a dòng ữ ầ g m nh ng dòng code n m gi a dòng else và end if. ữ ồ Ta có th ráp ch ể ể ằ ữ ELSE v i ch ữ IF đ dùng nh trong thí d sau đây: ư ụ ớ

If (StudentPassmark > 75) Then

EnrollStudentAtPublicSchool

ElseIf (StudentPassmark >= 55) Then

EnrollStudentAtSemipublicSchool

Else

EnrollStudentAtPrivateSchool

End If

<

If (StudentPassmark > 75) Then

EnrollStudentAtPublicSchool

ElseIf (StudentPassmark >= 55) Then

EnrollStudentAtSemipublicSchool

End If

ng công, N U t ậ ế ể ọ ể ả ọ ườ ứ ớ ố ể ế t nh nh , không có tr ườ ể Ế ừ i 55) thì ph i h c tr ườ , ta không có quy t đ nh cho h c trò đ u d ậ ướ 55 đi m đ n 75 đi m thì ế . ng t ư i 55 đi m h c ể ọ ở ọ ng trình tr thành: N u h c sinh đ u v i s đi m trên 75 thì cho h c tr ườ ọ ng bán công, n u không (t c là đi m đ u d cho h c tr ậ ướ ọ N u ng t ế ị ư ỏ ế ở ỉ ầ ELSE trong thí d trên. Ph n ch đâu thì b ph n ụ ỏ ươ ầ ở

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

Ta có th dùng ELSEIF nhi u l n nh sau: ề ầ ư ể

trên xu ng d ầ ượ ừ ướ ế ố c th a mãn ta m i th i, n u m t đi u ki n IF là TRUE thì x lý ph n c a nó r i ồ ỉ ề ề ử ỏ ượ ầ ủ ệ ớ ệ i k đó. T c là n u b n thích màu đ l u màu tím (magenta) thì ch ộ END IF. Ch khi m t đi u ki n IF không đ ộ ạ ử ươ ng ả ộ ỏ ẫ ứ ế t t Execution đi l n l i dòng nh y xu ng ngay d ướ ố m t đi u ki n IF bên d ướ ế ệ trình s display "You're a lucky person", và không h bi t "You're a sad person". ề ế ề ẽ

Dùng SELECT CASE statement

Select Case TheColorYouLike

Case vbRed

MsgBox "You 're a lucky person"

Case vbGreen

MsgBox "You 're a hopeful person"

Case vbBlue

5

Thí d có nhi u ELSEIF nh trên có th đ c vi ể ượ ụ ư ề t l ế ạ i nh sau: ư

MsgBox "You 're a brave person"

Case vbMagenta

MsgBox "You 're a sad person"

Else

MsgBox "You 're an average person"

End Select

ẫ ầ ế ố ễ ọ t n y t ế ầ ươ ơ ề ệ ộ Case đ ượ ả i hay ứ c tho mãn thì nh ng dòng code t ữ ả ệ ủ ượ ử ố c x lý và ti p theo execution s nh y xu ng dòng n m ngay d ẽ ế t code h n là dùng nhi u ELSEIF. Ph n ầ ượ ừ ằ c, không có cũng không Case đó cho đ n dòng ế End i dòng ướ

i cùng ta vi ế End Select, ch không ph i ướ ả End If. Các Expression dùng cho m i tr t ph i đ n gi n nh v y. Đ bi ỗ ườ ng t v cách dùng Select Case, ả ơ ư ậ ấ ế ề t thêm chi ti F1. Cách vi ng đ i d đ c và ít nh m l n khi vi ELSE trong Select Case statement thì optional (nhi m ý), t c là có cũng đ sao. H khi đi u ki n c a m t ề ể k d Else đ ế ướ Select. t Nh là d ớ h p ợ Case không nh t thi ế b n highlight ch ạ ể ế ữ Case (doubleclick ch Case) r i b m nút ớ ả ữ ồ ấ

Dùng FOR statement

ậ ề ề ể ướ ủ ạ ư ậ ư ầ

ế ầ ầ ề ầ ậ ạ ế ậ ộ c th a mãn. ố ữ ấ ứ ỏ ươ ể ố ổ i đây: Trong l p trình, nói v Flow Control (đi u khi n h ng đi c a execution) ta dùng hai lo i statement Iterative statements (l p đi, chính: Branch statements nh IF..THEN..ELSE (k c Select Case) và ể ả i) nh FOR và WHILE LOOP (Vòng). Ta s nói đ n WHILE Loop trong ph n k ti p. Trong l p l ậ ạ ẽ ế ế khi Branch statement cho phép ta execute trong nhánh n y hay nhánh kia tùy theo value c a Logical ủ Expression thì Iterative statement cho ta execute m t ph n code l p đi, l p l i nhi u l n cho đ n khi m t đi u ki n đ ệ ượ ề ộ d ta vi Gi t m t ch ế ơ ộ ả ụ (coi ch ng l n quá). Cái form c a ch ớ ừ ng trình đ n gi n đ tính t ng s các con s gi a b t c hai con s nào ố ư ướ ả ng trình gi ng nh d ố ươ ủ

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

6

ả ệ ế ấ Sau khi cho hai con s ố From (T )ừ và To (Cho đ n)ế ta click nút Calculate và th y k t qu hi n ra trong Textbox txtTotal. Cái Sub tính t ng s đ i đây: t ra d c li ố ượ ướ ệ ổ

FOR loop b t đ u t dòng ụ ứ ở ấ dòng ằ ắ ầ ừ ằ ữ ế i ồ ẽ ượ ắ ầ ủ ồ For i = FromNo To ToNo và ch m d t ẽ c tăng lên 1, r i execution s b t đ u l ẽ ắ ầ ạ ở ầ ầ ứ ấ ẽ ầ ầ

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

ơ c display trong Textbox txtTotal, sau khi đ ả c converted t ứ ả ầ ế ượ ượ ừ ớ ố ẳ ừ ế Trong thí d trên, Next. Khi execution b t đ u Total b ng 0, i b ng FromNo. Execution s đi qua h t nh ng dòng trong FOR loop r i value c a i s đ đ u loop. Trong thí d n y vì ụ ầ FromNo=4 và ToNo=6 nên execution s đi qua cái FOR loop 3 l n. L n th nh t i=4, l n th nhì ứ i=5 ,và l n th ba thì i=6. Sau đó, khi i=7 thì nó l n h n ToNo (=6) nên execution nh y ra kh i FOR ỏ ớ loop. K t qu là Total=15 và đ internal number ra text string v i Function CStr. 4 đ n 16 ta có th làm cho i tăng value lên 2 (thay vì 1) N u ta ch mu n c ng nh ng s ch n t ể ữ STEP trong FOR statement nh sau: m i khi đ n cu i loop. T c là i=4,6,8 .v.v..Ta s thêm ch ố ộ ố ữ ứ ế ỗ ỉ ế ư ẽ

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

ẽ ằ ụ ể ố ư Total s b ng 4+6+8+10+12+14+16= 70. Trong thí d trên ta cũng có th dùng STEP s âm nh sau:

ợ ứ ấ ắ ầ ế ầ ầ ủ ỏ ơ ố ố ớ ị ầ ị ả ố ế ế ầ ị ng h p n y FOR loop b t đ u v i i=16. Khi đ n cu i loop l n th nh t value c a i b Trong tr ườ b t 2 và tr thành 14. Sau đó i b gi m giá tr d n d n đ n 4. K đó i=2 thì nh h n s cu i cùng ở ớ (=4) nên execution nh y ra kh i FOR loop. ả ỏ

d ta mu n l y ra t t c nh ng blank space trong m t text string. Ta bi t con s characters ả ụ ố ấ ấ ả ữ ế ộ ố ể ề ằ ộ Gi trong m t text string, còn g i là chi u dài c a text string có th tính b ng cách dùng Function ủ Len(TString). Và đ nói đ n character th i trong m t Text string ta dùng Mid Function. ọ ế ứ ể ộ

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

TMess = TMess & Mid(txtOriginalString.Text, i, 1)

End If

Next

txtResultString.Text = TMess ' Disaplay TMess by assigning it to txtResultString.text

7

Khi User click button Remove Blank Spaces ch ng trình s execute Sub d i đây: ươ ẽ ướ

End Sub

ng, ta dùng FOR loop khi bi ẽ ườ ỉ ấ ị ữ ề ể ả ộ ộ ố ầ ả ố ế ớ Thông th t tr ế ướ Nh ng th nh tho ng, khi m t đi u ki n đ ư ỏ ệ ượ kh i FOR loop, ch không đ i cho đ n đ s l n đi qua loop. Thí d nh ta mu n bi ế ủ ố ầ ỏ bao nhiêu s k ti p t c t ng s v a l n h n hay b ng 76. 1 tr lên đ đ c execution s đi qua loop m t s l n nh t đ nh. ừ c th a mãn ta có th ép execution nh y ra gi a ch ng ả ộ t ph i c ng ụ ư ằ ố ế ế ừ ể ượ ổ ố ừ ớ ợ ở ơ

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

Next

txtActualTotal.Text = CStr(Total) ' Display the Actual Total

txtUptoNumber.Text = CStr(i) ' Display the highest number

End Sub

Khi User click button Work Out, Sub d i đây s đ c x lý: ướ ẽ ượ ử

Dùng DO WHILE Loop statement

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

8

t ch c là execution s đi qua loop bao nhiêu l n thì t t nh t là dùng DO WHILE ắ ế ẽ ầ ấ ớ ớ lo initialisation (t c là m i ứ ự ầ lo tăng value c a parameter i. N u Logical Expression là True thì ế ủ ằ ữ Khi ta không bi ố Loop statement. Khàc v i FOR Loop, trong DO WHILE Loop ta ph i t ả ự vô đ u i b ng bao nhiêu) và t execute nh ng dòng code t Thí d m i v a qua có th vi i b ng cách dùng DO WHILE Loop nh sau: ừ DO WHILE cho đ n ế Loop. t l ể ế ạ ằ ụ ớ ừ ư

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

d ta có các ế ụ ả ụ bánh mì th t v i giá nh sau: ị ớ ỏ ơ ứ ể ỏ ư ứ ề ổ

Roast Beef 55c

TRong khi Total hãy còn nh h n WantedTotal thì ta ti p t c đi qua While Loop. Gi hàng text ch a giá ti n các th có th b vào Chicken Roll 45c

Tomato Sauce 5c Bây gi ế ph i l n l n qua trái cho đ n khi tìm đ

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

nh ng hàng Text string nh trên. Ta s đi t bên ta mu n vi ố ể ấ ư ẽ ừ ờ ả ầ ầ t code đ l y ra giá ti n t ề ừ ữ c m t blank space. ộ ượ ế

Dùng Function

ỉ ố ố ư ộ ạ ở ỗ ả ch Function cho ta m t k t qu , t m t variable bên trái d u ộ ơ ớ ế ấ =, đ ượ ộ ế c assigned hai ộ ả ủ ụ ư ể ạ ỏ ữ ở

Sub ProcessString (ByVal StringA, ConditionA, ConditionB)

ượ ư ộ c executed, ta có t c nh ng parameter ta i, khi ta g i m t Sub, t ọ ấ ả ữ ả ư ộ c l ượ ạ ố ộ ề ụ ổ ừ ề c đ a cho Sub nên sau khi execute ProcessString, StringA không h ượ ư ủ Function là m t d ng subroutine gi ng gi ng nh Sub. Ch khác cho nên cách dùng Function h i khác v i Sub. Ta vi k t qu c a m t Function. Thí d nh ta dùng Trim Function đ lo i b nh ng blank space ế đ u c a text string TString: ầ ủ ResultString = Trim(TString) Ta đ a cho Function Trim m t text string called TString. Sau khi Function Trim đ k t qu nh ng TString không h thay đ i. Ng ổ ế đ a cho Sub đ u có th thay đ i tr khi ta tuyên b m t parameter nào đó là ByVal. Trong thí d ể ề ư sau, m t copy c a StringA đ ộ b thay đ i. ị ổ

Public Sub và Function

9

c m t Sub hay Function, ta cho phép code n m ữ ằ ở ướ ộ ể ọ ụ ộ Khi ta dùng ch Public (thay vì Private) phía tr m t Form hay Basic Module khác có th g i (hay dùng) Sub hay Function đó. Thí d trong Form2 ta có đ nh nghĩa DisplayData là: ị

Public Sub DisplayData

. . . .

End Sub

ư

10

Trong Form1, ta g i DisplayDta nh sau: ọ Form2.DisplayData