giáo trình VB

36
II. Kiểu dữ liệu II.1. Khái niệm Kiểu dữ liệu là một tập hợp các giá trị mà một biến của kiểu có thể nhận và một tập hợp các phép toán có thể áp dụng trên các giá trị đó. Trang 19 Visual Basic II.2. Các kiểu dữ liệu cơ sở trong Visual Basic Kiểu dữ liệu Mô tả Boolean Gồm 2 giá trị: TRUE & FALSE. Byte Các giá trị số nguyên từ 0 – 255 Integer Các giá trị số nguyên từ -32768 – 32767 Long Các giá trị số nguyên từ -2147483648 – 2147483647. Kiểu dữ liệu này thường được gọi là số nguyên dài. Single Các giá trị số thực từ -3.402823E+38 – 3.402823E+38. Kiểu dữ liệu này còn được gọi là độ chính xác đơn. Double Các giá trị số thực từ -1.79769313486232E+308 - 1.79769313486232E+308. Kiểu dữ liệu này được gọi là độ chính xác kép. Currency Dữ liệu tiền tệ chứa các giá trị số từ -922.337.203.685.477,5808 - 922.337.203.685.477,5807. String Chuỗi dữ liệu từ 0 đến 65.500 ký tự hay ký số, thậm chí là các giá trị đặc biệt như ^ %@. Giá trị kiểu chuỗi được đặt giữa 2 dấu ngoặc kép (“”). Date Dữ liệu kiểu ngày tháng, giá trị được đặt giữa cặp dấu ##. Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel. Variant Chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng. III. Hằng số III.1. Khái niệm Hằng số (Constant) là giá trị dữ liệu không thay đổi. III.2. Khai báo hằng [Public|Private] Const <tên hằng> [As <kiểu dữ liệu>] = <biểu thức> Trong đó, tên hằng được đặt giống theo quy tắc đặt tên của điều khiển. Ví dụ: Const g = 9.8 Const Num As Integer = 4*5 Ta có thể dùng cửa sổ Object Browser để xem danh sách các hằng có sẵn của VB và VBA (Visual Basic for Application). Trường hợp trùng tên hằng trong những thư viện khác nhau, ta có thể chỉ rõ tham chiếu hằng. Trang 20 Visual Basic [<Libname>.][<tên mô-đun>.] <tên hằng> III) Biến

Transcript of giáo trình VB

II Kiểu dữ liệuII1 Khaacutei niệmKiểu dữ liệu lagrave một tập hợp caacutec giaacute trị magrave một biến của kiểu coacute thể nhận vagrave một tập hợp caacutec pheacutep toaacuten coacute thể aacutep dụng trecircn caacutec giaacute trị đoacuteTrang 19Visual BasicII2 Caacutec kiểu dữ liệu cơ sở trong Visual BasicKiểu dữ liệuMocirc tảBooleanGồm 2 giaacute trị TRUE amp FALSEByteCaacutec giaacute trị số nguyecircn từ 0 ndash 255IntegerCaacutec giaacute trị số nguyecircn từ -32768 ndash 32767LongCaacutec giaacute trị số nguyecircn từ -2147483648 ndash 2147483647 Kiểu dữ liệu nagravey thường được gọi lagrave số nguyecircn dagraveiSingleCaacutec giaacute trị số thực từ -3402823E+38 ndash 3402823E+38 Kiểu dữ liệu nagravey cograven được gọi lagrave độ chiacutenh xaacutec đơnDoubleCaacutec giaacute trị số thực từ -179769313486232E+308 - 179769313486232E+308 Kiểu dữ liệu nagravey được gọi lagrave độ chiacutenh xaacutec keacutepCurrencyDữ liệu tiền tệ chứa caacutec giaacute trị số từ -9223372036854775808 - 9223372036854775807StringChuỗi dữ liệu từ 0 đến 65500 kyacute tự hay kyacute số thậm chiacute lagrave caacutec giaacute trị đặc biệt như ^ Giaacute trị kiểu chuỗi được đặt giữa 2 dấu ngoặc keacutep (ldquordquo)DateDữ liệu kiểu ngagravey thaacuteng giaacute trị được đặt giữa cặp dấu Việc định dạng hiển thị tugravey thuộc vagraveo việc thiết lập trong Control PanelVariantChứa mọi giaacute trị của caacutec kiểu dữ liệu khaacutec kể cả mảngIII Hằng sốIII1 Khaacutei niệmHằng số (Constant) lagrave giaacute trị dữ liệu khocircng thay đổiIII2 Khai baacuteo hằng[Public|Private] Const lttecircn hằnggt [As ltkiểu dữ liệugt] = ltbiểu thứcgtTrong đoacute tecircn hằng được đặt giống theo quy tắc đặt tecircn của điều khiểnViacute dụConst g = 98Const Num As Integer = 45Ta coacute thể dugraveng cửa sổ Object Browser để xem danh saacutech caacutec hằng coacute sẵn của VB vagrave VBA (Visual Basic for Application)Trường hợp trugraveng tecircn hằng trong những thư viện khaacutec nhau ta coacute thể chỉ rotilde tham chiếu hằngTrang 20Visual Basic[ltLibnamegt][lttecircn mocirc-đungt] lttecircn hằnggtIII) BiếnIII1 Khaacutei niệmBiến (Variable) lagrave vugraveng lưu trữ được đặt tecircn để chứa dữ liệu tạm thời trong quaacute trigravenh tiacutenh toaacuten so saacutenh vagrave caacutec cocircng việc khaacutecBiến coacute 2 đăc điểmo Mỗi biến coacute một tecircno Mỗi biến coacute thể chứa duy nhất một loại dữ liệuIII2 Khai baacuteo[Public|Private|Static|Dim] lttecircn biếngt [ As ltkiểu dữ liệugt ]Trong đoacute tecircn biến lagrave một tecircn được đặt giống quy tắc đặt tecircn điều khiển Nếu cần khai baacuteo nhiều biến trecircn một dograveng thigrave mỗi khai baacuteo caacutech nhau dấu phẩy ()Nếu khai baacuteo biến khocircng xaacutec định kiểu dữ liệu thigrave biến đoacute coacute kiểu Variant

Khai baacuteo ngầm Đacircy lagrave higravenh thức khocircng cần phải khai baacuteo một biến trước khi sử dụng Caacutech dugraveng nagravey coacute vẻ thuận tiện nhưng sẽ gacircy một số sai soacutet chẳng hạn khi ta đaacutenh nhầm tecircn biến VB sẽ hiểu đoacute lagrave một biến mới dẫn đến kết quả chương trigravenh sai magrave rất khoacute phaacutet hiệnViacute dụDim Num As Long a As SingleDim Age As IntegerKhai baacuteo tường minh Để traacutenh rắc rối như đatilde necircu ở trecircn ta necircn quy định rằng VB sẽ baacuteo lỗi khi gặp biến chưa được khai baacuteo bằng dograveng lệnhOption Explicit trong phần Declaration (khai baacuteo) của mocirc-đunOption Explicit chỉ coacute taacutec dụng trecircn từng mocirc-đun do đoacute ta phải đặt dograveng lệnh nagravey trong từng mocirc-đun của biểu mẫu mocirc-đun lớp hay mocirc-đun chuẩnIV Biểu thứcIV1 Khaacutei niệmToaacuten tử hay pheacutep toaacuten (Operator) lagrave từ hay kyacute hiệu nhằm thực hiện pheacutep tiacutenh vagrave xử lyacute dữ liệuToaacuten hạng lagrave giaacute trị dữ liệu (biến hằnghellip)Biểu thức lagrave tập hợp caacutec toaacuten hạng vagrave caacutec toaacuten tử kết hợp lại với nhau theo quy tắc nhất định để tiacutenh toaacuten ra một giaacute trị nagraveo đoacuteIV2 Caacutec loại pheacutep toaacutena Caacutec pheacutep toaacuten số học Thao taacutec trecircn caacutec giaacute trị coacute kiểu dữ liệu sốTrang 21Visual BasicPheacutep toaacutenYacute nghĩaKiểu của đối sốKiểu của kết quả-Pheacutep lấy số đốiKiểu số (Integer Singlehellip)Như kiểu đối số+Pheacutep cộng hai sốKiểu số (Integer Singlehellip)Như kiểu đối số-Pheacutep trừ hai sốKiểu số (Integer Singlehellip)Như kiểu đối sốPheacutep nhacircn hai sốKiểu số (Integer Singlehellip)Như kiểu đối sốPheacutep chia hai sốKiểu số (Integer Singlehellip)Single hay DoublePheacutep chia lấy phần nguyecircnInteger LongInteger LongModPheacutep chia lấy phần dưInteger LongInteger Long^Tiacutenh lũy thừaKiểu số (Integer Singlehellip)Như kiểu đối sốb Caacutec pheacutep toaacuten quan hệĐacircy lagrave caacutec pheacutep toaacuten magrave giaacute trị trả về của chuacuteng lagrave một giaacute trị kiểu Boolean (TRUE hay FALSE)Pheacutep toaacutenYacute nghĩa

=So saacutenh bằng nhaultgtSo saacutenh khaacutec nhaugtSo saacutenh lớn hơnltSo saacutenh nhỏ hơngt=So saacutenh lớn hơn hoặc bằnglt=So saacutenh nhỏ hơn hoặc bằngc Caacutec pheacutep toaacuten Logic lagrave caacutec pheacutep toaacuten taacutec động trecircn kiểu Boolean vagrave cho kết quả lagrave kiểu Boolean Caacutec pheacutep toaacuten nagravey bao gồm AND (vagrave) OR (hoặc) NOT (phủ định) Sau đacircy lagrave bảng giaacute trị của caacutec pheacutep toaacutenXYX AND YX OR YNOT XTRUETRUETRUETRUEFALSETRUEFALSEFALSETRUEFALSEFALSETRUEFALSETRUETRUEFALSEFALSEFALSEFALSETRUEV Cacircu lệnhMột cacircu lệnh (statement) xaacutec định một cocircng việc magrave chương trigravenh phải thực hiện để xử lyacute dữ liệu đatilde được mocirc tả vagrave khai baacuteo Caacutec cacircu lệnh được ngăn caacutech với nhau bởi kyacute tự xuống dograveng Kyacute tự xuống dograveng baacuteo hiệu kết thuacutec một cacircu lệnhV1 Lệnh gaacutenCuacute phaacutepltTecircn biếngt = ltBiểu thứcgtViacute dụGiả sử ta coacute khai baacuteo sauDim TodayTemp As Single MinAge As IntegerDim Sales As Single NewSales As Single FullName As StringCaacutec lệnh sau gaacuten giaacute trị cho caacutec biến trecircnTrang 22Visual BasicTodayTemp = 305MinAge = 18Sales = 200000NewSales = Sales 12Giả sử người dugraveng cần nhập họ vagrave tecircn vagraveo ocirc nhập liệu TextBox coacute thuộc tiacutenh Name lagrave txtName cacircu lệnh dưới đacircy sẽ lưu giaacute trị của ocirc nhập liệu vagraveo trong biến FullNameFullName = txtNameText

Lưu yacute Kiểu dữ liệu của biểu thức (vế phải của lệnh gaacuten) phải phugrave hợp với biến ta cần gaacuten trịV2 Lệnh rẽ nhaacutenh Ifo Một dograveng lệnhIf ltđiều kiệngt Then ltdograveng lệnhgto Nhiều dograveng lệnhIf ltđiều kiệngt ThenCaacutec dograveng lệnhEnd IfLưu đồ cuacute phaacutepTrong đoacute ltđiều kiệngt biểu thức magrave kết quả trả về kiểu BooleanCaacutec dograveng lệnhĐKĐuacutengSaiYacute nghĩa cacircu lệnh Caacutec dograveng lệnh hay dograveng lệnh sẽ được thi hagravenh nếu như điều kiện lagrave đuacuteng Cograven nếu như điều kiện lagrave sai thigrave cacircu lệnh tiếp theo sau cấu truacutec If Then được thi hagravenho Dạng đầy đủ If Then ElseIf ltđiều kiện 1gt Then[Khối lệnh 1]ElseIf ltđiều kiện 2gt Then[Khối lệnh 2][Else[Khối lệnh n]]End IfTrang 23Visual BasicVB sẽ kiểm tra caacutec điều kiện nếu điều kiện nagraveo đuacuteng thigrave khối lệnh tương ứng sẽ được thi hagravenh Ngược lại nếu khocircng coacute điều kiện nagraveo đuacuteng thigrave khối lệnh sau từ khoacutea Else sẽ được thi hagravenhViacute dụIf (TheColorYouLike = vbRed) ThenMsgBox You are a lucky personElseIf (TheColorYouLike = vbGreen) ThenMsgBox You are a hopeful personElseIf (TheColorYouLike = vbBlue) ThenMsgBox You are a brave personElseIf (TheColorYouLike = vbMagenta) ThenMsgBox You are a sad personElseMsgBox You are an average personEnd IfV3 Lệnh lựa chọn Select CaseTrong trường hợp coacute quaacute nhiều caacutec điều kiện cần phải kiểm tra nếu ta dugraveng cấu truacutec rẽ nhaacutenh IfhellipThen thigrave đoạn lệnh khocircng được trong saacuteng khoacute kiểm tra sửa đổi khi coacute sai soacutet Ngược lại với cấu truacutec SelecthellipCase biểu thức điều kiện sẽ được tiacutenh toaacuten một lần vagraveo đầu cấu truacutec sau đoacute VB sẽ so saacutenh kết quả với từng trường hợp (Case) Nếu bằng noacute thi hagravenh khối lệnh trong trường hợp (Case) đoacuteSelect Case ltbiểu thức kiểm tragtCase ltDanh saacutech kết quả biểu thức 1gt[Khối lệnh 1]Case ltDanh saacutech kết quả biểu thức 2gt[Khối lệnh 2][Case Else[Khối lệnh n]]End SelectMỗi danh saacutech kết quả biểu thức sẽ chứa một hoặc nhiều giaacute trị Trong trường hợp coacute nhiều giaacute trị thigrave mỗi giaacute trị caacutech nhau bởi dấu phẩy () Nếu coacute nhiều Case cugraveng thỏa điều kiện thigrave khối lệnh của Case đầu tiecircn sẽ được thực hiệnViacute dụ của lệnh rẽ nhaacutenh IfhellipThen ở trecircn coacute thể viết như sauSelect Case TheColorYouLike

Case vbRedMsgBox You are a lucky personCase vbGreenMsgBox You are a hopeful personCase vbBlueMsgBox You are a brave personCase vbMagentaMsgBox You are a sad personCase Else Trang 24Visual BasicMsgBox You are an average personEnd SelectToaacuten tử Is amp ToToaacuten tử Is Được dugraveng để so saacutenh ltBiểu thức kiểm tragt với một biểu thức nagraveo đoacuteToaacuten tử To Dugraveng để xaacutec lập miền giaacute trị của ltBiểu thức kiểm tragtViacute dụSelect Case TuoiCase Is lt18MsgBox ldquoVi thanh nienrdquoCase 18 To 30MsgBox ldquoBan da truong thanh lo lap than dirdquoCase 31 To 60MsgBox ldquoBan dang o lua tuoi trung nienrdquoCase ElseMsgBox ldquoBan da lon tuoi nghi huu duoc roi dayrdquoEnd SelectLưu yacute Trong viacute dụ trecircn khocircng thể viết Case Tuoi lt 18V4 Cấu truacutec lặpCaacutec cấu truacutec lặp cho pheacutep thi hagravenh một khối lệnh nagraveo đoacute nhiều lầna Lặp khocircng biết trước số lần lặpDo Loop Đacircy lagrave cấu truacutec lặp khocircng xaacutec định trước số lần lặp trong đoacute số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải coacute kết quả lagrave True hoặc False Cấu truacutec nagravey coacute 4 kiểuKiểu 1Do While ltđiều kiệngtltkhối lệnhgt ĐkiệnLoopĐuacuteng SaiKhối lệnhKhối lệnh sẽ được thi hagravenh đến khi nagraveo điều kiện khocircng cograven đuacuteng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hagravenh khối lệnh do đoacute coacute thể khối lệnh sẽ khocircng được thực hiện một lần nagraveo cảKiểu 2Doltkhối lệnhgtLoop While ltđiều kiệngtTrang 25Visual BasicKhối lệnh sẽ được thực hiện sau đoacute biểu thức điều kiện được kiểm tra nếu điều kiện cograven đuacuteng thigrave khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau do đoacute khối lệnh sẽ được thực hiện iacutet nhất một lầnKiểu 3Do Until ltđiều kiệngtltkhối lệnhgtLoopCũng tương tự như cấu truacutec Do While Loop nhưng khaacutec biệt ở chỗ lagrave khối lệnh sẽ được thi hagravenh khi điều kiện cograven saiKiểu 4Doltkhối lệnhgtLoop Until ltđiều kiệngtKhối lệnh được thi hagravenh trong khi điều kiện cograven sai vagrave coacute iacutet nhất lagrave một lần lặp

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Khai baacuteo ngầm Đacircy lagrave higravenh thức khocircng cần phải khai baacuteo một biến trước khi sử dụng Caacutech dugraveng nagravey coacute vẻ thuận tiện nhưng sẽ gacircy một số sai soacutet chẳng hạn khi ta đaacutenh nhầm tecircn biến VB sẽ hiểu đoacute lagrave một biến mới dẫn đến kết quả chương trigravenh sai magrave rất khoacute phaacutet hiệnViacute dụDim Num As Long a As SingleDim Age As IntegerKhai baacuteo tường minh Để traacutenh rắc rối như đatilde necircu ở trecircn ta necircn quy định rằng VB sẽ baacuteo lỗi khi gặp biến chưa được khai baacuteo bằng dograveng lệnhOption Explicit trong phần Declaration (khai baacuteo) của mocirc-đunOption Explicit chỉ coacute taacutec dụng trecircn từng mocirc-đun do đoacute ta phải đặt dograveng lệnh nagravey trong từng mocirc-đun của biểu mẫu mocirc-đun lớp hay mocirc-đun chuẩnIV Biểu thứcIV1 Khaacutei niệmToaacuten tử hay pheacutep toaacuten (Operator) lagrave từ hay kyacute hiệu nhằm thực hiện pheacutep tiacutenh vagrave xử lyacute dữ liệuToaacuten hạng lagrave giaacute trị dữ liệu (biến hằnghellip)Biểu thức lagrave tập hợp caacutec toaacuten hạng vagrave caacutec toaacuten tử kết hợp lại với nhau theo quy tắc nhất định để tiacutenh toaacuten ra một giaacute trị nagraveo đoacuteIV2 Caacutec loại pheacutep toaacutena Caacutec pheacutep toaacuten số học Thao taacutec trecircn caacutec giaacute trị coacute kiểu dữ liệu sốTrang 21Visual BasicPheacutep toaacutenYacute nghĩaKiểu của đối sốKiểu của kết quả-Pheacutep lấy số đốiKiểu số (Integer Singlehellip)Như kiểu đối số+Pheacutep cộng hai sốKiểu số (Integer Singlehellip)Như kiểu đối số-Pheacutep trừ hai sốKiểu số (Integer Singlehellip)Như kiểu đối sốPheacutep nhacircn hai sốKiểu số (Integer Singlehellip)Như kiểu đối sốPheacutep chia hai sốKiểu số (Integer Singlehellip)Single hay DoublePheacutep chia lấy phần nguyecircnInteger LongInteger LongModPheacutep chia lấy phần dưInteger LongInteger Long^Tiacutenh lũy thừaKiểu số (Integer Singlehellip)Như kiểu đối sốb Caacutec pheacutep toaacuten quan hệĐacircy lagrave caacutec pheacutep toaacuten magrave giaacute trị trả về của chuacuteng lagrave một giaacute trị kiểu Boolean (TRUE hay FALSE)Pheacutep toaacutenYacute nghĩa

=So saacutenh bằng nhaultgtSo saacutenh khaacutec nhaugtSo saacutenh lớn hơnltSo saacutenh nhỏ hơngt=So saacutenh lớn hơn hoặc bằnglt=So saacutenh nhỏ hơn hoặc bằngc Caacutec pheacutep toaacuten Logic lagrave caacutec pheacutep toaacuten taacutec động trecircn kiểu Boolean vagrave cho kết quả lagrave kiểu Boolean Caacutec pheacutep toaacuten nagravey bao gồm AND (vagrave) OR (hoặc) NOT (phủ định) Sau đacircy lagrave bảng giaacute trị của caacutec pheacutep toaacutenXYX AND YX OR YNOT XTRUETRUETRUETRUEFALSETRUEFALSEFALSETRUEFALSEFALSETRUEFALSETRUETRUEFALSEFALSEFALSEFALSETRUEV Cacircu lệnhMột cacircu lệnh (statement) xaacutec định một cocircng việc magrave chương trigravenh phải thực hiện để xử lyacute dữ liệu đatilde được mocirc tả vagrave khai baacuteo Caacutec cacircu lệnh được ngăn caacutech với nhau bởi kyacute tự xuống dograveng Kyacute tự xuống dograveng baacuteo hiệu kết thuacutec một cacircu lệnhV1 Lệnh gaacutenCuacute phaacutepltTecircn biếngt = ltBiểu thứcgtViacute dụGiả sử ta coacute khai baacuteo sauDim TodayTemp As Single MinAge As IntegerDim Sales As Single NewSales As Single FullName As StringCaacutec lệnh sau gaacuten giaacute trị cho caacutec biến trecircnTrang 22Visual BasicTodayTemp = 305MinAge = 18Sales = 200000NewSales = Sales 12Giả sử người dugraveng cần nhập họ vagrave tecircn vagraveo ocirc nhập liệu TextBox coacute thuộc tiacutenh Name lagrave txtName cacircu lệnh dưới đacircy sẽ lưu giaacute trị của ocirc nhập liệu vagraveo trong biến FullNameFullName = txtNameText

Lưu yacute Kiểu dữ liệu của biểu thức (vế phải của lệnh gaacuten) phải phugrave hợp với biến ta cần gaacuten trịV2 Lệnh rẽ nhaacutenh Ifo Một dograveng lệnhIf ltđiều kiệngt Then ltdograveng lệnhgto Nhiều dograveng lệnhIf ltđiều kiệngt ThenCaacutec dograveng lệnhEnd IfLưu đồ cuacute phaacutepTrong đoacute ltđiều kiệngt biểu thức magrave kết quả trả về kiểu BooleanCaacutec dograveng lệnhĐKĐuacutengSaiYacute nghĩa cacircu lệnh Caacutec dograveng lệnh hay dograveng lệnh sẽ được thi hagravenh nếu như điều kiện lagrave đuacuteng Cograven nếu như điều kiện lagrave sai thigrave cacircu lệnh tiếp theo sau cấu truacutec If Then được thi hagravenho Dạng đầy đủ If Then ElseIf ltđiều kiện 1gt Then[Khối lệnh 1]ElseIf ltđiều kiện 2gt Then[Khối lệnh 2][Else[Khối lệnh n]]End IfTrang 23Visual BasicVB sẽ kiểm tra caacutec điều kiện nếu điều kiện nagraveo đuacuteng thigrave khối lệnh tương ứng sẽ được thi hagravenh Ngược lại nếu khocircng coacute điều kiện nagraveo đuacuteng thigrave khối lệnh sau từ khoacutea Else sẽ được thi hagravenhViacute dụIf (TheColorYouLike = vbRed) ThenMsgBox You are a lucky personElseIf (TheColorYouLike = vbGreen) ThenMsgBox You are a hopeful personElseIf (TheColorYouLike = vbBlue) ThenMsgBox You are a brave personElseIf (TheColorYouLike = vbMagenta) ThenMsgBox You are a sad personElseMsgBox You are an average personEnd IfV3 Lệnh lựa chọn Select CaseTrong trường hợp coacute quaacute nhiều caacutec điều kiện cần phải kiểm tra nếu ta dugraveng cấu truacutec rẽ nhaacutenh IfhellipThen thigrave đoạn lệnh khocircng được trong saacuteng khoacute kiểm tra sửa đổi khi coacute sai soacutet Ngược lại với cấu truacutec SelecthellipCase biểu thức điều kiện sẽ được tiacutenh toaacuten một lần vagraveo đầu cấu truacutec sau đoacute VB sẽ so saacutenh kết quả với từng trường hợp (Case) Nếu bằng noacute thi hagravenh khối lệnh trong trường hợp (Case) đoacuteSelect Case ltbiểu thức kiểm tragtCase ltDanh saacutech kết quả biểu thức 1gt[Khối lệnh 1]Case ltDanh saacutech kết quả biểu thức 2gt[Khối lệnh 2][Case Else[Khối lệnh n]]End SelectMỗi danh saacutech kết quả biểu thức sẽ chứa một hoặc nhiều giaacute trị Trong trường hợp coacute nhiều giaacute trị thigrave mỗi giaacute trị caacutech nhau bởi dấu phẩy () Nếu coacute nhiều Case cugraveng thỏa điều kiện thigrave khối lệnh của Case đầu tiecircn sẽ được thực hiệnViacute dụ của lệnh rẽ nhaacutenh IfhellipThen ở trecircn coacute thể viết như sauSelect Case TheColorYouLike

Case vbRedMsgBox You are a lucky personCase vbGreenMsgBox You are a hopeful personCase vbBlueMsgBox You are a brave personCase vbMagentaMsgBox You are a sad personCase Else Trang 24Visual BasicMsgBox You are an average personEnd SelectToaacuten tử Is amp ToToaacuten tử Is Được dugraveng để so saacutenh ltBiểu thức kiểm tragt với một biểu thức nagraveo đoacuteToaacuten tử To Dugraveng để xaacutec lập miền giaacute trị của ltBiểu thức kiểm tragtViacute dụSelect Case TuoiCase Is lt18MsgBox ldquoVi thanh nienrdquoCase 18 To 30MsgBox ldquoBan da truong thanh lo lap than dirdquoCase 31 To 60MsgBox ldquoBan dang o lua tuoi trung nienrdquoCase ElseMsgBox ldquoBan da lon tuoi nghi huu duoc roi dayrdquoEnd SelectLưu yacute Trong viacute dụ trecircn khocircng thể viết Case Tuoi lt 18V4 Cấu truacutec lặpCaacutec cấu truacutec lặp cho pheacutep thi hagravenh một khối lệnh nagraveo đoacute nhiều lầna Lặp khocircng biết trước số lần lặpDo Loop Đacircy lagrave cấu truacutec lặp khocircng xaacutec định trước số lần lặp trong đoacute số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải coacute kết quả lagrave True hoặc False Cấu truacutec nagravey coacute 4 kiểuKiểu 1Do While ltđiều kiệngtltkhối lệnhgt ĐkiệnLoopĐuacuteng SaiKhối lệnhKhối lệnh sẽ được thi hagravenh đến khi nagraveo điều kiện khocircng cograven đuacuteng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hagravenh khối lệnh do đoacute coacute thể khối lệnh sẽ khocircng được thực hiện một lần nagraveo cảKiểu 2Doltkhối lệnhgtLoop While ltđiều kiệngtTrang 25Visual BasicKhối lệnh sẽ được thực hiện sau đoacute biểu thức điều kiện được kiểm tra nếu điều kiện cograven đuacuteng thigrave khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau do đoacute khối lệnh sẽ được thực hiện iacutet nhất một lầnKiểu 3Do Until ltđiều kiệngtltkhối lệnhgtLoopCũng tương tự như cấu truacutec Do While Loop nhưng khaacutec biệt ở chỗ lagrave khối lệnh sẽ được thi hagravenh khi điều kiện cograven saiKiểu 4Doltkhối lệnhgtLoop Until ltđiều kiệngtKhối lệnh được thi hagravenh trong khi điều kiện cograven sai vagrave coacute iacutet nhất lagrave một lần lặp

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

=So saacutenh bằng nhaultgtSo saacutenh khaacutec nhaugtSo saacutenh lớn hơnltSo saacutenh nhỏ hơngt=So saacutenh lớn hơn hoặc bằnglt=So saacutenh nhỏ hơn hoặc bằngc Caacutec pheacutep toaacuten Logic lagrave caacutec pheacutep toaacuten taacutec động trecircn kiểu Boolean vagrave cho kết quả lagrave kiểu Boolean Caacutec pheacutep toaacuten nagravey bao gồm AND (vagrave) OR (hoặc) NOT (phủ định) Sau đacircy lagrave bảng giaacute trị của caacutec pheacutep toaacutenXYX AND YX OR YNOT XTRUETRUETRUETRUEFALSETRUEFALSEFALSETRUEFALSEFALSETRUEFALSETRUETRUEFALSEFALSEFALSEFALSETRUEV Cacircu lệnhMột cacircu lệnh (statement) xaacutec định một cocircng việc magrave chương trigravenh phải thực hiện để xử lyacute dữ liệu đatilde được mocirc tả vagrave khai baacuteo Caacutec cacircu lệnh được ngăn caacutech với nhau bởi kyacute tự xuống dograveng Kyacute tự xuống dograveng baacuteo hiệu kết thuacutec một cacircu lệnhV1 Lệnh gaacutenCuacute phaacutepltTecircn biếngt = ltBiểu thứcgtViacute dụGiả sử ta coacute khai baacuteo sauDim TodayTemp As Single MinAge As IntegerDim Sales As Single NewSales As Single FullName As StringCaacutec lệnh sau gaacuten giaacute trị cho caacutec biến trecircnTrang 22Visual BasicTodayTemp = 305MinAge = 18Sales = 200000NewSales = Sales 12Giả sử người dugraveng cần nhập họ vagrave tecircn vagraveo ocirc nhập liệu TextBox coacute thuộc tiacutenh Name lagrave txtName cacircu lệnh dưới đacircy sẽ lưu giaacute trị của ocirc nhập liệu vagraveo trong biến FullNameFullName = txtNameText

Lưu yacute Kiểu dữ liệu của biểu thức (vế phải của lệnh gaacuten) phải phugrave hợp với biến ta cần gaacuten trịV2 Lệnh rẽ nhaacutenh Ifo Một dograveng lệnhIf ltđiều kiệngt Then ltdograveng lệnhgto Nhiều dograveng lệnhIf ltđiều kiệngt ThenCaacutec dograveng lệnhEnd IfLưu đồ cuacute phaacutepTrong đoacute ltđiều kiệngt biểu thức magrave kết quả trả về kiểu BooleanCaacutec dograveng lệnhĐKĐuacutengSaiYacute nghĩa cacircu lệnh Caacutec dograveng lệnh hay dograveng lệnh sẽ được thi hagravenh nếu như điều kiện lagrave đuacuteng Cograven nếu như điều kiện lagrave sai thigrave cacircu lệnh tiếp theo sau cấu truacutec If Then được thi hagravenho Dạng đầy đủ If Then ElseIf ltđiều kiện 1gt Then[Khối lệnh 1]ElseIf ltđiều kiện 2gt Then[Khối lệnh 2][Else[Khối lệnh n]]End IfTrang 23Visual BasicVB sẽ kiểm tra caacutec điều kiện nếu điều kiện nagraveo đuacuteng thigrave khối lệnh tương ứng sẽ được thi hagravenh Ngược lại nếu khocircng coacute điều kiện nagraveo đuacuteng thigrave khối lệnh sau từ khoacutea Else sẽ được thi hagravenhViacute dụIf (TheColorYouLike = vbRed) ThenMsgBox You are a lucky personElseIf (TheColorYouLike = vbGreen) ThenMsgBox You are a hopeful personElseIf (TheColorYouLike = vbBlue) ThenMsgBox You are a brave personElseIf (TheColorYouLike = vbMagenta) ThenMsgBox You are a sad personElseMsgBox You are an average personEnd IfV3 Lệnh lựa chọn Select CaseTrong trường hợp coacute quaacute nhiều caacutec điều kiện cần phải kiểm tra nếu ta dugraveng cấu truacutec rẽ nhaacutenh IfhellipThen thigrave đoạn lệnh khocircng được trong saacuteng khoacute kiểm tra sửa đổi khi coacute sai soacutet Ngược lại với cấu truacutec SelecthellipCase biểu thức điều kiện sẽ được tiacutenh toaacuten một lần vagraveo đầu cấu truacutec sau đoacute VB sẽ so saacutenh kết quả với từng trường hợp (Case) Nếu bằng noacute thi hagravenh khối lệnh trong trường hợp (Case) đoacuteSelect Case ltbiểu thức kiểm tragtCase ltDanh saacutech kết quả biểu thức 1gt[Khối lệnh 1]Case ltDanh saacutech kết quả biểu thức 2gt[Khối lệnh 2][Case Else[Khối lệnh n]]End SelectMỗi danh saacutech kết quả biểu thức sẽ chứa một hoặc nhiều giaacute trị Trong trường hợp coacute nhiều giaacute trị thigrave mỗi giaacute trị caacutech nhau bởi dấu phẩy () Nếu coacute nhiều Case cugraveng thỏa điều kiện thigrave khối lệnh của Case đầu tiecircn sẽ được thực hiệnViacute dụ của lệnh rẽ nhaacutenh IfhellipThen ở trecircn coacute thể viết như sauSelect Case TheColorYouLike

Case vbRedMsgBox You are a lucky personCase vbGreenMsgBox You are a hopeful personCase vbBlueMsgBox You are a brave personCase vbMagentaMsgBox You are a sad personCase Else Trang 24Visual BasicMsgBox You are an average personEnd SelectToaacuten tử Is amp ToToaacuten tử Is Được dugraveng để so saacutenh ltBiểu thức kiểm tragt với một biểu thức nagraveo đoacuteToaacuten tử To Dugraveng để xaacutec lập miền giaacute trị của ltBiểu thức kiểm tragtViacute dụSelect Case TuoiCase Is lt18MsgBox ldquoVi thanh nienrdquoCase 18 To 30MsgBox ldquoBan da truong thanh lo lap than dirdquoCase 31 To 60MsgBox ldquoBan dang o lua tuoi trung nienrdquoCase ElseMsgBox ldquoBan da lon tuoi nghi huu duoc roi dayrdquoEnd SelectLưu yacute Trong viacute dụ trecircn khocircng thể viết Case Tuoi lt 18V4 Cấu truacutec lặpCaacutec cấu truacutec lặp cho pheacutep thi hagravenh một khối lệnh nagraveo đoacute nhiều lầna Lặp khocircng biết trước số lần lặpDo Loop Đacircy lagrave cấu truacutec lặp khocircng xaacutec định trước số lần lặp trong đoacute số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải coacute kết quả lagrave True hoặc False Cấu truacutec nagravey coacute 4 kiểuKiểu 1Do While ltđiều kiệngtltkhối lệnhgt ĐkiệnLoopĐuacuteng SaiKhối lệnhKhối lệnh sẽ được thi hagravenh đến khi nagraveo điều kiện khocircng cograven đuacuteng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hagravenh khối lệnh do đoacute coacute thể khối lệnh sẽ khocircng được thực hiện một lần nagraveo cảKiểu 2Doltkhối lệnhgtLoop While ltđiều kiệngtTrang 25Visual BasicKhối lệnh sẽ được thực hiện sau đoacute biểu thức điều kiện được kiểm tra nếu điều kiện cograven đuacuteng thigrave khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau do đoacute khối lệnh sẽ được thực hiện iacutet nhất một lầnKiểu 3Do Until ltđiều kiệngtltkhối lệnhgtLoopCũng tương tự như cấu truacutec Do While Loop nhưng khaacutec biệt ở chỗ lagrave khối lệnh sẽ được thi hagravenh khi điều kiện cograven saiKiểu 4Doltkhối lệnhgtLoop Until ltđiều kiệngtKhối lệnh được thi hagravenh trong khi điều kiện cograven sai vagrave coacute iacutet nhất lagrave một lần lặp

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Lưu yacute Kiểu dữ liệu của biểu thức (vế phải của lệnh gaacuten) phải phugrave hợp với biến ta cần gaacuten trịV2 Lệnh rẽ nhaacutenh Ifo Một dograveng lệnhIf ltđiều kiệngt Then ltdograveng lệnhgto Nhiều dograveng lệnhIf ltđiều kiệngt ThenCaacutec dograveng lệnhEnd IfLưu đồ cuacute phaacutepTrong đoacute ltđiều kiệngt biểu thức magrave kết quả trả về kiểu BooleanCaacutec dograveng lệnhĐKĐuacutengSaiYacute nghĩa cacircu lệnh Caacutec dograveng lệnh hay dograveng lệnh sẽ được thi hagravenh nếu như điều kiện lagrave đuacuteng Cograven nếu như điều kiện lagrave sai thigrave cacircu lệnh tiếp theo sau cấu truacutec If Then được thi hagravenho Dạng đầy đủ If Then ElseIf ltđiều kiện 1gt Then[Khối lệnh 1]ElseIf ltđiều kiện 2gt Then[Khối lệnh 2][Else[Khối lệnh n]]End IfTrang 23Visual BasicVB sẽ kiểm tra caacutec điều kiện nếu điều kiện nagraveo đuacuteng thigrave khối lệnh tương ứng sẽ được thi hagravenh Ngược lại nếu khocircng coacute điều kiện nagraveo đuacuteng thigrave khối lệnh sau từ khoacutea Else sẽ được thi hagravenhViacute dụIf (TheColorYouLike = vbRed) ThenMsgBox You are a lucky personElseIf (TheColorYouLike = vbGreen) ThenMsgBox You are a hopeful personElseIf (TheColorYouLike = vbBlue) ThenMsgBox You are a brave personElseIf (TheColorYouLike = vbMagenta) ThenMsgBox You are a sad personElseMsgBox You are an average personEnd IfV3 Lệnh lựa chọn Select CaseTrong trường hợp coacute quaacute nhiều caacutec điều kiện cần phải kiểm tra nếu ta dugraveng cấu truacutec rẽ nhaacutenh IfhellipThen thigrave đoạn lệnh khocircng được trong saacuteng khoacute kiểm tra sửa đổi khi coacute sai soacutet Ngược lại với cấu truacutec SelecthellipCase biểu thức điều kiện sẽ được tiacutenh toaacuten một lần vagraveo đầu cấu truacutec sau đoacute VB sẽ so saacutenh kết quả với từng trường hợp (Case) Nếu bằng noacute thi hagravenh khối lệnh trong trường hợp (Case) đoacuteSelect Case ltbiểu thức kiểm tragtCase ltDanh saacutech kết quả biểu thức 1gt[Khối lệnh 1]Case ltDanh saacutech kết quả biểu thức 2gt[Khối lệnh 2][Case Else[Khối lệnh n]]End SelectMỗi danh saacutech kết quả biểu thức sẽ chứa một hoặc nhiều giaacute trị Trong trường hợp coacute nhiều giaacute trị thigrave mỗi giaacute trị caacutech nhau bởi dấu phẩy () Nếu coacute nhiều Case cugraveng thỏa điều kiện thigrave khối lệnh của Case đầu tiecircn sẽ được thực hiệnViacute dụ của lệnh rẽ nhaacutenh IfhellipThen ở trecircn coacute thể viết như sauSelect Case TheColorYouLike

Case vbRedMsgBox You are a lucky personCase vbGreenMsgBox You are a hopeful personCase vbBlueMsgBox You are a brave personCase vbMagentaMsgBox You are a sad personCase Else Trang 24Visual BasicMsgBox You are an average personEnd SelectToaacuten tử Is amp ToToaacuten tử Is Được dugraveng để so saacutenh ltBiểu thức kiểm tragt với một biểu thức nagraveo đoacuteToaacuten tử To Dugraveng để xaacutec lập miền giaacute trị của ltBiểu thức kiểm tragtViacute dụSelect Case TuoiCase Is lt18MsgBox ldquoVi thanh nienrdquoCase 18 To 30MsgBox ldquoBan da truong thanh lo lap than dirdquoCase 31 To 60MsgBox ldquoBan dang o lua tuoi trung nienrdquoCase ElseMsgBox ldquoBan da lon tuoi nghi huu duoc roi dayrdquoEnd SelectLưu yacute Trong viacute dụ trecircn khocircng thể viết Case Tuoi lt 18V4 Cấu truacutec lặpCaacutec cấu truacutec lặp cho pheacutep thi hagravenh một khối lệnh nagraveo đoacute nhiều lầna Lặp khocircng biết trước số lần lặpDo Loop Đacircy lagrave cấu truacutec lặp khocircng xaacutec định trước số lần lặp trong đoacute số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải coacute kết quả lagrave True hoặc False Cấu truacutec nagravey coacute 4 kiểuKiểu 1Do While ltđiều kiệngtltkhối lệnhgt ĐkiệnLoopĐuacuteng SaiKhối lệnhKhối lệnh sẽ được thi hagravenh đến khi nagraveo điều kiện khocircng cograven đuacuteng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hagravenh khối lệnh do đoacute coacute thể khối lệnh sẽ khocircng được thực hiện một lần nagraveo cảKiểu 2Doltkhối lệnhgtLoop While ltđiều kiệngtTrang 25Visual BasicKhối lệnh sẽ được thực hiện sau đoacute biểu thức điều kiện được kiểm tra nếu điều kiện cograven đuacuteng thigrave khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau do đoacute khối lệnh sẽ được thực hiện iacutet nhất một lầnKiểu 3Do Until ltđiều kiệngtltkhối lệnhgtLoopCũng tương tự như cấu truacutec Do While Loop nhưng khaacutec biệt ở chỗ lagrave khối lệnh sẽ được thi hagravenh khi điều kiện cograven saiKiểu 4Doltkhối lệnhgtLoop Until ltđiều kiệngtKhối lệnh được thi hagravenh trong khi điều kiện cograven sai vagrave coacute iacutet nhất lagrave một lần lặp

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Case vbRedMsgBox You are a lucky personCase vbGreenMsgBox You are a hopeful personCase vbBlueMsgBox You are a brave personCase vbMagentaMsgBox You are a sad personCase Else Trang 24Visual BasicMsgBox You are an average personEnd SelectToaacuten tử Is amp ToToaacuten tử Is Được dugraveng để so saacutenh ltBiểu thức kiểm tragt với một biểu thức nagraveo đoacuteToaacuten tử To Dugraveng để xaacutec lập miền giaacute trị của ltBiểu thức kiểm tragtViacute dụSelect Case TuoiCase Is lt18MsgBox ldquoVi thanh nienrdquoCase 18 To 30MsgBox ldquoBan da truong thanh lo lap than dirdquoCase 31 To 60MsgBox ldquoBan dang o lua tuoi trung nienrdquoCase ElseMsgBox ldquoBan da lon tuoi nghi huu duoc roi dayrdquoEnd SelectLưu yacute Trong viacute dụ trecircn khocircng thể viết Case Tuoi lt 18V4 Cấu truacutec lặpCaacutec cấu truacutec lặp cho pheacutep thi hagravenh một khối lệnh nagraveo đoacute nhiều lầna Lặp khocircng biết trước số lần lặpDo Loop Đacircy lagrave cấu truacutec lặp khocircng xaacutec định trước số lần lặp trong đoacute số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải coacute kết quả lagrave True hoặc False Cấu truacutec nagravey coacute 4 kiểuKiểu 1Do While ltđiều kiệngtltkhối lệnhgt ĐkiệnLoopĐuacuteng SaiKhối lệnhKhối lệnh sẽ được thi hagravenh đến khi nagraveo điều kiện khocircng cograven đuacuteng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hagravenh khối lệnh do đoacute coacute thể khối lệnh sẽ khocircng được thực hiện một lần nagraveo cảKiểu 2Doltkhối lệnhgtLoop While ltđiều kiệngtTrang 25Visual BasicKhối lệnh sẽ được thực hiện sau đoacute biểu thức điều kiện được kiểm tra nếu điều kiện cograven đuacuteng thigrave khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau do đoacute khối lệnh sẽ được thực hiện iacutet nhất một lầnKiểu 3Do Until ltđiều kiệngtltkhối lệnhgtLoopCũng tương tự như cấu truacutec Do While Loop nhưng khaacutec biệt ở chỗ lagrave khối lệnh sẽ được thi hagravenh khi điều kiện cograven saiKiểu 4Doltkhối lệnhgtLoop Until ltđiều kiệngtKhối lệnh được thi hagravenh trong khi điều kiện cograven sai vagrave coacute iacutet nhất lagrave một lần lặp

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Viacute dụ Đoạn lệnh dưới đacircy cho pheacutep kiểm tra một số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngDim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i = 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp ldquo la so nguyen tordquoElseMsgBox Str(N) amp ldquo khong la so nguyen tordquoEnd IfTrong đoacute hagravem Sqr hagravem tiacutenh căn bậc hai của một sốb Lặp biết trước số lần lặp1048633 For NextĐacircy lagrave cấu truacutec biết trước số lần lặp ta dugraveng biến đếm tăng dần hoặc giảm dần để xaacutec định số lần lặpFor ltbiến đếmgt = ltđiểm đầugt To ltđiểm cuốigt [Step ltbước nhảygt][khối lệnh]NextBiến đếm điểm đầu điểm cuối bước nhảy lagrave những giaacute trị số (Integer Singlehellip) Bước nhảy coacute thể lagrave acircm hoặc dương Nếu bước nhảy lagrave số acircm thigrave điểm đầu phải lớn hơn điểm cuối nếu khocircng khối lệnh sẽ khocircng được thi hagravenhKhi Step khocircng được chỉ ra VB sẽ dugraveng bước nhảy mặc định lagrave mộtViacute dụ Đoạn lệnh sau đacircy sẽ hiển thị caacutec kiểu chữ hiện coacute của maacutey bạnPrivate Sub Form_Click( )Dim i As Integer Trang 26Visual BasicFor i = 0 To ScreenFontCountMsgBox ScreenFonts(I)NextEnd SubViacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Sự kiện Command1_Click được xử lyacutePrivate Sub Command1_Click()Dim i As Integer n As Integer Kq As Longn = Val(txtNumText)Kq = 1For i = 1 To nKq = Kq iNextlblEnd SubKQCaption = Str(Kq)o Lưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dưới1048633 For Each NextTương tự vograveng lặp For Next nhưng noacute lặp khối lệnh theo số phần tử của một tập caacutec đối tượng hay một mảng thay vigrave theo số lần lặp xaacutec định Vograveng lặp nagravey tiện lợi khi ta khocircng biết chiacutenh xaacutec bao nhiecircu phần tử trong tập hợpFor Each ltphần tửgt In ltnhoacutemgtltkhối lệnhgtNext ltphần tửgtLưu yacute- Phần tử trong tập hợp chỉ coacute thể lagrave biến Variant biến Object hoặc một đối tượng trong Object Browser- Phần tử trong mảng chỉ coacute thể lagrave biến VariantTrang 27Visual Basic- Khocircng dugraveng For Each Next với mảng chứa kiểu tự định nghĩa vigrave Variant khocircng chứa kiểu tự định nghĩa

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

VI Chương trigravenh conVI1 Khaacutei niệmTrong những chương trigravenh lớn coacute thể coacute những đoạn chương trigravenh viết lặp đi lặp lại nhiều lần để traacutenh rườm ragrave vagrave mất thời gian khi viết chương trigravenh người ta thường phacircn chia chương trigravenh thagravenh nhiều module mỗi module giải quyết một cocircng việc nagraveo đoacute Caacutec module như vậy gọi lagrave caacutec chương trigravenh conMột tiện lợi khaacutec của việc sử dụng chương trigravenh con lagrave ta coacute thể dễ dagraveng kiểm tra xaacutec định tiacutenh đuacuteng đắn của noacute trước khi raacutep nối vagraveo chương trigravenh chiacutenh vagrave do đoacute việc xaacutec định sai soacutet để tiến hagravenh hiệu điacutenh trong chương trigravenh chiacutenh sẽ thuận lợi hơnTrong Visual Basic chương trigravenh con coacute hai dạng lagrave hagravem (Function) vagrave thủ tục (Sub)Hagravem khaacutec thủ tục ở chỗ hagravem trả về cho lệnh gọi một giaacute trị thocircng qua tecircn của noacute cograven thủ tục thigrave khocircng Do vậy ta chỉ dugraveng hagravem khi vagrave chỉ khi thoả matilden đồng thời caacutec yecircu cầu sau đacircyo Ta muốn nhận lại một kết quả (chỉ một magrave thocirci) khi gọi chương trigravenh cono Ta cần dugraveng tecircn chương trigravenh con (coacute chứa kết quả) để viết trong caacutec biểu thứcNếu khocircng thỏa matilden hai điều kiện ấy thigrave dugraveng thủ tụcVI2 Thủ tụca Khaacutei niệmThủ tục lagrave một chương trigravenh con thực hiện một hay một số taacutec vụ nagraveo đoacute Thủ tục coacute thể coacute hay khocircng coacute tham sốb Khai baacuteo thủ tục[Private | Public] [Static] Sub lttecircn thủ tụcgt [(lttham sốgt[As ltKiểu tham sốgt])]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd SubTrong đoacute- ltTecircn thủ tụcgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu VariantĐể gọi thủ tục để thực thi ta coacute 2 caacutecho ltTecircn thủ tụcgt [ltCaacutec tham số thực tếgt]o Call ltTecircn thủ tụcgt ([ltCaacutec tham số thực tếgt])Trang 28Visual BasicViacute dụ Thiết kế chương trigravenh kiểm tra xem số nguyecircn N coacute phải lagrave số nguyecircn tố hay khocircngo Bước 1 Thiết kế chương trigravenh coacute giao diệnTextBoxNametxtNumo Bước 2 Viết thủ tục KtraNgTo trong phần matilde lệnh của FormSub KTraNgTo(N As Integer)Dim i As Integeri = 2Do While (i lt= Sqr(N)) And (N Mod i ltgt 0)i = i + 1LoopIf (i gt Sqr(N)) And (N ltgt 1) ThenMsgBox Str(N) amp la so nguyen toElseMsgBox Str(N) amp khong la so nguyen toEnd IfEnd Subo Bước 3 Xử lyacute sự kiện Command1_Click trong thủ tục xử lyacute sự kiện nagravey ta coacute gọi thủ tục KtraNgTo như sauPrivate Sub Command1_Click()KTraNgTo Val(txtNumText)lsquo Call KtraNgTo(Val(txtNumText))End Subo Bước 4 Lưu dự aacuten vagrave chạy chương trigravenh Ta được kết quả sauTrong viacute dụ trecircn thay vigrave gọi thủ tục bằng lời gọiKTraNgTo Val(txtNumText)Ta coacute thể sử dụng caacutech khaacutecCall KtraNgTo(Val(txtNumText)) Trang 29Visual BasicVI3 Hagravem

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

a Khaacutei niệmHagravem (Function) lagrave một chương trigravenh con coacute nhiệm vụ tiacutenh toaacuten vagrave cho ta một kết quả Kết quả nagravey được trả về trong tecircn hagravem cho lời gọi noacuteb Khai baacuteo hagravem[Private | Public | Static] Function ltTecircn hagravemgt [(lttham sốgt[As ltKiểu tham sốgt])] _[As ltKIỂU DỮ LIỆUgt]ltCaacutec dograveng lệnhgt hay ltCaacutec khai baacuteogtEnd FunctionTrong đoacute- ltTecircn hagravemgt Đacircy lagrave một tecircn được đặt giống quy tắc tecircn biến hằnghellip- lttham sốgt[ ltKiểu tham sốgt] coacute thể coacute hay khocircng Nếu coacute nhiều tham số thigrave mỗi tham số phacircn caacutech nhau dấu phẩy Nếu khocircng xaacutec định kiểu tham số thigrave tham số coacute kiểu Variant- ltKIỂU DỮ LIỆUgt Kết quả trả về của hagravem trong trường hợp khocircng khai baacuteo As ltkiểu dữ liệugt mặc định VB hiểu kiểu trả về kiểu VariantKhi gọi hagravem để thực thi ta nhận được một kết quả Cần chuacute yacute khi gọi hagravem thực thi ta nhận được một kết quả coacute kiểu chiacutenh lagrave kiểu trả về của hagravem (hay lagrave kiểu Variant nếu ta khocircng chỉ rotilde kiểu trả về trong định nghĩa hagravem) Do đoacute lời gọi hagravem phải lagrave thagravenh phần của một biểu thứcCuacute phaacutep gọi hagravem thực thi ltTecircn hagravemgt[(tham số)]Viacute dụ Tiacutenh No Bước 1 Thiết kế chương trigravenh coacute giao diệnLabel Name lblKQTextBoxNametxtNumo Bước 2 Thecircm một hagravem vagraveo cửa sổ matilde lệnh của FormFunction Giaithua(N As Integer) As LongDim i As Integer Kq As LongKq = 1For i = 1 To nKq = Kq iNextGiaithua = KqEnd FunctionPrivate Sub Command1_Click()Trang 30Visual BasicDim n As Integern = Val(txtNumText)lblKQCaption = Str(Giaithua(n))End SubLưu dự aacuten vagrave chạy chương trigravenh ta được kết quả như higravenh dướiLưu yacute Do khi gọi hagravem ta nhận được một kết quả necircn becircn trong phần định nghĩa hagravem trước khi kết thuacutec ta phải gaacuten kết quả trả về của hagravem thocircng qua tecircn hagravem (trong viacute dụ trecircn lagrave dograveng lệnh Giaithua = Kq)VII Truy xuất dữ liệu trong Visual BasicVII1 Caacutec khaacutei niệmo Module- Một ứng dụng đơn giản coacute thể chỉ coacute một biểu mẫu luacutec đoacute tất cả matilde lệnh của ứng dụng đoacute được đặt trong cửa sổ matilde lệnh của biểu mẫu đoacute (gọi lagrave Form Module) Khi ứng dụng được phaacutet triển lớn lecircn chuacuteng ta coacute thể coacute thecircm một số biểu mẫu nữa vagrave luacutec nagravey khả năng lặp đi lặp lại nhiều lần của một đoạn matilde lệnh trong nhiều biểu mẫu khaacutec nhau lagrave rất lớn- Để traacutenh việc lặp đi lặp lại trecircn ta tạo ra một Module riecircng rẽ chứa caacutec chương trigravenh con được dugraveng chung Visual Basic cho pheacutep 3 loại ModuleModule biểu mẫu (Form module) đi kegravem với mỗi một biểu mẫu lagrave một module của biểu mẫu đoacute để chứa matilde lệnh của biểu mẫu nagravey Với mỗi điều khiển trecircn biểu mẫu module biểu mẫu chứa caacutec chương trigravenh con vagrave chuacuteng sẵn sagraveng được thực thi để đaacutep ứng lại caacutec sự kiện magrave người sử dụng ứng dụng taacutec động trecircn điều khiển Module biểu mẫu được lưu trong maacutey tiacutenh dưới dạng caacutec tập tin coacute đuocirci lagrave frmModule chuẩn (Standard module) Matilde lệnh khocircng thuộc về bất cứ một biểu mẫu hay một điều khiển nagraveo sẽ được đặt trong một module đặc biệt gọi lagrave module chuẩn (được lưu với đuocirci bas) Caacutec chương trigravenh con được lặp đi lặp lại để đaacutep ứng caacutec sự kiện khaacutec nhau của caacutec điều khiển khaacutec nhau thường được đặt trong module chuẩnModule lớp (Class module) được sử dụng để tạo caacutec điều khiển được gọi thực thi trong một ứng dụng

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

cụ thể Một module chuẩn chỉ chứa matilde lệnh nhưng module lớp chứa cả matilde lệnh vagrave dữ liệu chuacuteng coacute thể được coi lagrave caacutec điều khiển do người lập trigravenh tạo ra (được lưu với đuocirci cls)Trang 31Visual Basico Phạm vi (scope) xaacutec định số lượng chương trigravenh coacute thể truy xuất một biến Một biến sẽ thuộc một trong 3 loại phạm viPhạm vi biến cục bộPhạm vi biến modulePhạm vi biến toagraven cụcVII2 Biến toagraven cụco Khaacutei niệm Biến toagraven cục lagrave biến coacute phạm vi hoạt động trong toagraven bộ ứng dụngo Khai baacuteoGlobal ltTecircn biếngt [As ltKiểu dữ liệugt]VII3 Biến cục bộo Khaacutei niệm Biến cục bộ lagrave biến chỉ coacute hiệu lực trong những chương trigravenh magrave chuacuteng được định nghĩao Khai baacuteoDim ltTecircn biếngt [As ltKiểu dữ liệugt]o Lưu yacuteBiến cục bộ được định nghĩa bằng từ khoacutea Dim sẽ kết thuacutec ngay khi việc thi hagravenh thủ tục kết thuacutecVII4 Biến Moduleo Khaacutei niệm Biến Module lagrave biến được định nghĩa trong phần khai baacuteo (General|Declaration) của Module vagrave mặc nhiecircn phạm vi hoạt động của noacute lagrave toagraven bộ Module ấyo Khai baacuteo- Biến Module được khai baacuteo bằng từ khoacutea Dim hay Private amp đặt trong phần khai baacuteo của ModuleViacute dụPrivate Num As Integer- Tuy nhiecircn caacutec biến Module nagravey coacute thể được sử dụng bởi caacutec chương trigravenh con trong caacutec Module khaacutec Muốn thế chuacuteng phải được khai baacuteo lagrave Public trong phacircn Khai baacuteo (General|Declaration) của ModuleViacute dụPublic Num As IntegerLưu yacute Khocircng thể khai baacuteo biến với từ khoacutea lagrave Public trong chương trigravenh conVII5 Truyền tham số cho chương trigravenh cono Khaacutei niệmMột chương trigravenh con đocirci luacutec cần thecircm một vagravei thocircng tin về trạng thaacutei của đoạn matilde lệnh magrave noacute định nghĩa để thực thi Những thocircng tin nagravey lagrave caacutec biến được truyền vagraveo khi gọi chương trigravenh con caacutec biến nagravey gọi lagrave tham số của chương trigravenh conTrang 32Visual BasicCoacute hai caacutech để truyền tham số cho chương trigravenh con Truyền bằng giaacute trị amp truyền bằng địa chỉo Truyền tham số bằng giaacute trịVới caacutech truyền tham số theo caacutech nagravey mỗi khi một tham số được truyền vagraveo một bản sao của biến đoacute được tạo ra Nếu chương trigravenh con coacute thay đổi giaacute trị những thay đổi nagravey chỉ taacutec động lecircn bản sao của biến Trong VB từ khoacutea ByVal được dugraveng để xaacutec định tham số được truyền bằng giaacute trịViacute dụSub Twice (ByVal Num As Integer)Num = Num 2Print NumEnd SubPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn484o Truyền tham số bằng địa chỉTruyền tham số theo địa chỉ cho pheacutep chương trigravenh con truy cập vagraveo giaacute trị gốc của biến trong bộ nhớ

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Vigrave thế giaacute trị của biến coacute thể sẽ bị thay đổi bởi đoạn matilde lệnh trong chương trigravenh con Mặc nhiecircn trong VB6 caacutec tham số được truyền theo địa chỉ tuy nhiecircn ta coacute thể chỉ định một caacutech tường minh nhờ vagraveo từ khoacutea ByRefViacute dụSub Twice (Num As Integer)Num = Num 2Print End SubNumPrivate Sub Form_Click()Dim A As IntegerA = 4Print ATwice APrint AEnd SubKết quả thực hiện của đoạn chương trigravenh trecircn48Trang 33Visual Basic8VIII Bẫy lỗi trong Visual BasicCaacutec thao taacutec bẫy caacutec lỗi thực thi của chương trigravenh lagrave cần thiết đối với caacutec ngocircn ngữ lập trigravenh Người lập trigravenh khoacute kiểm soaacutet hết caacutec tigravenh huống coacute thể gacircy ra lỗi Chẳng hạn người ta khoacute coacute thể kiểm tra chặt chẽ việc người dugraveng đang cheacutep dữ liệu từ đĩa mềm (hay CD) khi chuacuteng khocircng coacute trong ổ đĩa Nếu coacute caacutec thao taacutec bẫy lỗi ở đacircy thigrave tiện cho người lập trigravenh rất nhiềuVisual Basic cũng cung cấp cho ta một số cấu truacutec để bẫy caacutec lỗi đang thực thiCuacute phaacutepDạng 1On Error GoTo ltTecircn nhatildengtltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtltTecircn nhatildengtltCaacutec cacircu lệnh xử lyacute lỗigtYacute nghĩa- ltTecircn nhatildengt lagrave một tecircn được đặt theo quy tắc của một danh biểu- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động nhảy đến đoạn chương trigravenh định nghĩa becircn dưới ltTecircn nhatildengt để thực thiDạng 2On Error Resume NextltCaacutec cacircu lệnh coacute thể gacircy ra lỗigtYacute nghĩa- Nếu một lệnh trong ltCaacutec cacircu lệnh coacute thể gacircy ra lỗigt thigrave khi chương trigravenh thực thi đến cacircu lệnh đoacute chương trigravenh sẽ tự động bỏ qua cacircu lệnh bị lỗi vagrave thực thi cacircu lệnh kế tiếpTrang 34Visual BasicCHƯƠNG 4 CAacuteC KIỂU DỮ LIỆU COacute CẤU TRUacuteCMục tiecircuChương nagravey giới thiệu về caacutec cấu truacutec dữ liệu trong VB Việc nắm bắt được caacutec vấn đề nagravey giuacutep cho việc tổ chức dữ liệu khi viết chương trigravenh VB được hợp lyacute hơnHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng kiểu dữ liệu chuỗi- Sử dụng kiểu ngagravey thaacuteng- Kiểu động (Variant)- Kiểu mảngKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VBTagravei liệu tham khảohttpwwwvovisoftcomVisualBasicVB6Chapter5htmhttpwwwvovisoftcomVisualBasicVB6Chapter6htmTrang 35Visual Basic

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

I Kiểu chuỗi kyacute tự (String)I1 Khai baacuteoCoacute hai đặc tả chuỗi kyacute tự theo cuacute phaacutep như sau- String ltChiều dagraveigt Chỉ ra một chuỗi kyacute tự coacute độ dagravei cố định lagrave bao nhiecircu kyacute tự Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei ngắn hơn độ dagravei khai baacuteo thigrave độ dagravei của chuỗi thigrave một số khoảng trắng được thecircm vagraveo cho đủ độ dagravei thực Trong trường hợp giaacute trị thực của chuỗi coacute độ dagravei lớn hơn độ dagravei khai baacuteo thigrave sẽ cắt bớt caacutec kyacute tự dư thừa becircn phải Một chuỗi khocircng coacute kyacute tự nagraveo (độ dagravei bằng 0) gọi lagrave chuỗi rỗng- String Khi khocircng chỉ ra chiều dagravei tối đa của chuỗi thigrave mặc nhiecircn chuỗi coacute chiều dagravei tối đa lagrave 65500 kyacute tựViacute dụDim Name As String 30 Class As String 10Dim A As StringI2 Caacutec hagravem xử lyacute chuỗio Gheacutep chuỗi cho pheacutep gheacutep 2 hay nhiều chuỗi lại với nhau nhờ pheacutep toaacuten ampViacute dụDim FirstWordAs String SecondWord As StringDim Greeting As StringFirstWord = HelloSecondWord = WorldGreeting = FirstWord amp SecondWord Greeting bacircy giờ lagrave HelloWorldo Len trả về chiều dagravei một chuỗi được chỉ địnhViacute dụting Gree= Hi John Dim iLen As IntegeriLen = Len(Greeting) iLen bacircy giờ bằng 8o Left Triacutech chuỗi con từ phần đầu chuỗi gốc Left (String [length])o Right Triacutech chuỗi con từ phần đuocirci chuỗi gốc Right (String [length])o Mid Triacutech chuỗi con từ giữa chuỗi gốcMid(String Start As Long [length])Viacute dụ 1Dim Today As String StrDay As String StrMonth As StringDim StrYear As String StrMonthYear As StringToday = 24052001 Lấy ra 2 kyacute tự từ becircn traacutei của chuỗi Today StrDay = Left(Today2) StrDay bacircy giờ bằng 24 Lấy ra 4 kyacute tự từ becircn phải của String Today StrYear = Right(Today4) StrYear bacircy giờ bằng 2001 Lấy ra 2 characters bắt đầu từ kyacute tự thứ tư của chuỗilsquo Today kyacute tự đầu tiecircn từ becircn traacutei lagrave thứ nhất StrMonth = Mid(Today42) StrMonth bacircy giờ bằng 05 Trang 36Visual Basic Lấy ra phần cograven lại bắt đầu từ kyacute tự 4 của chuỗi Today StrMonthYear = Mid(Today4) StrMonthYear bằng ldquo052001Viacute dụ 2Today = 24052001 Thay thế character thứ 3 của Today bằng -Mid(Today31) = - Thay thế 2 kyacute tự bắt đầu từ kyacute tự 4 của Today bằng 10Mid(Today42) = 10 Thay thế character thứ 6 của Today bằng -Mid(Today61) = - Today bacircy giờ bằng 24-10-2001o InStr Tigravem chuỗi con trong chuỗi gốc Nếu hagravem InStr trả về 0 nghĩa lagrave khocircng tigravem thấyCuacute phaacutep InStr([start] string1 string2 [ compare])Trong đoacute- Start Xaacutec định vị triacute trong chuỗi bắt đầu việc tigravem kiếm Nếu giaacute trị lagrave Null thigrave sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare coacute đặc tả thigrave bắt buộc phải khai baacuteo tham số Start- String1 Biểu thức chuỗi để so saacutenh- String2 Chuỗi cần tigravem- Compare Xaacutec định kiểu so saacutenh chuỗiGiaacute trị vbTextCompare vbBinaryCompareViacute dụ 1Dim myString As String Position As Integer

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

myString = The rain in Spain mainlyPosition = Instr(myString) Position sẽ lagrave 5Nếu trong myString khocircng coacute dấu thigrave Position sẽ bằng 0Viacute dụ 2Dim KeyValuePair As String Key As StringDim Value As StringKeyValuePair = BeatlesSong=YesterdayPos = Instr(KeyValuePair =)Key = Left(KeyValuePair Pos-1)Value = Mid(KeyValuePair Pos+1)o Replace tigravem vagrave thay thế chuỗiCuacute phaacutepReplace(Expression find replace[ start[ count[ compare]]])Trong đoacute- Expression Biểu thức chuỗi chứa chuỗi cần thay thế- findChuỗi cần tigravem- replace Chuỗi thay thế chuỗi tigravem được- start Tương tự như hagravem InStr- count Xaacutec định số lần thay thế Mặc định lagrave 1- compare Tương tự như hagravem InStrTrang 37o LTrim (RTrim) cắt tất cả caacutec khoảng trắng becircn traacutei (becircn phải của chuỗi)Cuacute phaacutep LTrim(string)RTrim(string)Visual Basico UCase đổi chuỗi sang chuỗi gồm caacutec kyacute tự lagrave chữ hoaCuacute phaacutep UCase(string)o Asc cho matilde Ascii của một kyacute tựo Chr trả về kyacute tự ứng với matilde Ascii được chỉ địnhDim ASCIINumberA As Integer CharB As String 1Dim StrFive As String 1ASCIINumberA = Asc(A) ASCIINumberA bacircy giờ bằng 65CharB = Chr(66)StrFive = Chr(Asc(0) + 5) ta coacute digit 5o InstrRev tương tự như InStr nhưng việc tigravem kiếm được tiến hagravenh từ phải sango Val Hagravem đổi chuỗi sang sốo Str Hagravem đổi số sang chuỗiII Kiểu ngagravey thaacuteng (Date)- Lagrave kiểu magrave caacutec biến của noacute chứa giaacute trị ngagravey thaacuteng- Để cho VB biết dữ liệu lagrave kiểu Date ta cần đặt giữa hai dấu (hoặc cặp ldquordquo)Viacute dụDim D As DateD = 010298 lsquo Hay ldquo010298rdquoNếu hiểu theo kiểu người Mỹ đacircy lagrave ngagravey 2 thaacuteng giecircng năm 1998 cograven nếu theo kiểu Anh thigrave đacircy lagrave ngagravey 1 thaacuteng hai năm 1998 Tuy nhiecircn định dạng ngagravey thaacuteng hiển thị phụ thuộc vagraveo quy định của Windows- Hộp thoại higravenh IV1 hiển thị khi ta chọn Regional Setting trong cửa sổ Control Panel của Windows noacute cho pheacutep quy định kiểu ngagravey thaacuteng tugravey thuộc caacutech magrave người dugraveng quy định VB xử lyacute ngagravey thaacuteng theo kiểu Mỹ nhưng nếu maacutey hiển thị theo kiểu Anh thigrave noacute vẫn hiển thị theo kiểu AnhHigravenhIV1Hộpthoạixaacuteclập- Hagravem Now trả về ngagravey giờ hiện tạiViacute dụ Dugraveng hagravem Now amp FormatMsgBox NOW IS amp Format (Now ddd dd-mmm-yyyy hhnnss) sẽ hiển thịNOW IS Tue 05-Oct-2004 161553Trang 38Visual BasicIII Caacutec loại sốo Để chuyển đổi một chuỗi ra số ta coacute caacutec hagravem Val CInt CSng Ngược lại để chuyển đổi từ số sang chuỗi ta dugraveng CStr StrViacute dụ

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Dollars = 500ExchangeRatePerDollar = 7000tempValue= Val(Dollars) Val(ExchangeRatePerDollar)VNDong = CStr(tempValue)MsgBox Amount in VN Dong is amp VNDongViacute dụDollars = 5000 ExchangeRatePerDollar = 70000 Dugraveng hagravem CSng để đổi chuỗi ra Single tempValue = CSng(Dollars) CSng(ExchangeRatePerDollar) Dugraveng hagravem Format để coacute caacutec dấu phẩy ở ngagraven vagrave triệulsquo vagrave phải coacute 2 chữ số sau dấu chấm thập phacircn VNDong = Format (tempValue 00) MsgBox Amount in VN Dong is amp VNDongo Round bỏ bớt một số chữ số sau dấu chấm thập phacircnViacute dụRound ( 123456789 4 )chỉ giữ lại 4 con số sau dấu chấm thập phacircn vagrave cho ta 123457IVKiểu ObjectBiến kiểu Object chứa một địa chỉ 4 Byte trỏ đến đối tượng trong ứng dụng hiện hagravenh hoặc caacutec ứng dụng khaacutec Dugraveng lệnh Set để chỉ ra đối tượng cụ thểDim ObjDb As ObjectSet ObjDb = OpenDatabase(dtqdinhthumdb)Khi khai baacuteo biến đối tượng ta necircn chỉ ra tecircn lớp tường minh chẳng hạn như TextBox thay vigrave Control ứng dụng của ta sẽ chạy nhanh hơnTa coacute thể xem danh saacutech caacutec lớp coacute sẵn trong cửa sổ Object BrowserV Kiểu VariantBiến kiểu Variant coacute thể chứa mọi kiểu dữ liệu kể cả kiểu mảng kiểu do người dugraveng định nghĩa nhưng ngoại trừ kiểu chuỗi coacute độ dagravei cố định Biến kiểu Variant coacute thể nhận caacutec giaacute trị đặc biệt như Empty Nothing Error Null Ta coacute thể xaacutec định kiểu dữ liệu của biến Variant bằng caacutec sử dụng hagravem VarType hoặc hagravem TypeNameHagravem VarType dugraveng để kiểm tra kiểu dữ liệuHằngGiaacute trịDiễn giảivbEmpty0Khocircng chứa gigrave cảvbNull1Dữ liệu khocircng hợp lệvbInteger2Dữ liệu kiểu Integer chuẩnTrang 39Visual BasicvbLong3Dữ liệu kiểu Long IntegervbSingle4Dữ liệu kiểu dấu chấm động SinglevbDouble5Dữ liệu kiểu dấu chấm động DoublevbCurrency6Kiểu CurrencyvbDate7Kiểu DatevbString8Kiểu String

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

vbObject9Kiểu ObjectvbError10Coacute một đối tượng lỗivbBoolean11Kiểu giaacute trị Boolean chuẩnvbVariant12Kiểu VariantvbDataObject13Kiểu DAO chuẩn (data access object)vbDecimal14Giaacute trị thuộc hệ thập phacircnvbByte17Kiểu BytevbUserDefinedType36Kiểu do người dugraveng định nghĩavbArray8192Kiểu mảngMột số chuacute yacute khi dugraveng biến kiểu Variant- Nếu muốn thi hagravenh caacutec hagravem toaacuten học Variant phải chứa giaacute trị kiểu số- Nếu muốn nối chuỗi dugraveng toaacuten tử amp thay vigrave toaacuten tử +Giaacute trị Empty- Đacircy lagrave giaacute trị đặc biệt xuất hiện khi một biến chưa được gaacuten trị Ta dugraveng hagravem IsEmpty để kiểm tra giaacute trị Empty- Giaacute trị Empty biến mất khi coacute một giaacute trị bất kỳ được gaacuten cho biến Variant để trở về giaacute trị Empty ta gaacuten từ khoaacute Empty cho biến VariantGiaacute trị Null Biến Variant chứa giaacute trị Null trong trường hợp những ứng dụng cơ sở dữ liệu thể hiện khocircng coacute dữ liệu hoặc dữ liệu khocircng xaacutec địnhGiaacute trị Error Trong một biến kiểu Variant Error lagrave một giaacute trị đặc biệt cho biết đatilde coacute một lỗi đatilde xảy ra becircn trong thủ tụcViacute dụPrivate Sub cmdShowDataTypes_Click()Dim sMess As StringDim vVariant As VariantvVariant = Xin chao StringsMess = VarType(vVariant) amp vbCrLf xuống dograveng amp về đầu dogravengvVariant = 25 IntegersMess = sMess amp VarType(vVariant) amp vbCrLfvVariant = True BooleansMess = sMess amp VarType(vVariant) amp vbCrLfDatevVariant = 112001 trong cặp dấu sMess = sMess amp VarType(vVariant)MsgBox sMessEnd SubKhi chạy chương trigravenh kết quả lagraveTrang 40Visual BasicVI Kiểu MảngVI1 Khaacutei niệm- Mảng lagrave tập hợp caacutec phần tử coacute cugraveng một kiểu- Dugraveng mảng sẽ lagravem cho chương trigravenh đơn giản vagrave gọn hơn vigrave ta coacute thể sử dụng vograveng lặp Mảng sẽ coacute

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

biecircn trecircn vagrave biecircn dưới trong đoacute caacutec thagravenh phần của mảng lagrave liecircn tiếp trong khoảng giữa hai biecircn nagravey- Coacute hai loại biến mảng mảng coacute chiều dagravei cố định vagrave mảng coacute chiều dagravei thay đổi luacutec thi hagravenhVI2 Khai baacuteoo Mảng coacute chiều dagravei cố địnhDim ltTecircn biến mảnggt(ltKiacutech thướcgt) [As ltKiểugt]Luacutec nagravey phần tử đầu tiecircn coacute chỉ số lagrave 0 amp phần tử cuối cugraveng coacute chỉ số lagrave ltKiacutech thướcgtDim ltTecircn biến mảnggt(ltChỉ số đầugt To ltChỉ số cuốigt) [As ltKiểugt]Viacute dụ Khai baacuteo một biến mảng 15 phần tử kiểu IntegerDim Counters(14)As Integer Khai baacuteo một biến mảng 21 phần tử kiểu DoublePublic Sums(20)As Double Khai baacuteo một biến mảng 10 phần tử kiểu chuỗi kyacute tựDim List (1 To 10) As String 12- Hagravem UBound trả về biecircn trecircn của một mảngTrang 41Visual Basic- Hagravem LBound trả về biecircn dưới của một mảngViacute dụUBound(List) sẽ trả về giaacute trị lagrave 10LBound(List) sẽ trả về giaacute trị lagrave 11048633 Lưu yacute ta coacute thể khai baacuteo một mảng nhiều chiều như sauDim Multi3D (3 1 To 10 9) As DoubleKhai baacuteo nagravey tạo ra một mảng 3 chiều với kiacutech thước 4 x 10 x 10o Mảng động- Đacircy lagrave mảng coacute kiacutech thước thay đổi đoacute lagrave một trong những ưu điểm của mảng động vigrave noacute giuacutep ta tiết kiệm tagravei nguyecircn hệ thống Ta coacute thể sử dụng một mảng coacute kiacutech thước lớn trong một thời gian nagraveo đoacute rồi xoaacute bỏ để trả lại vugraveng nhớ cho hệ thống- Khai baacuteo một mảng động bằng caacutech cho noacute một danh saacutech khocircng theo chiều nagraveo cả Cuacute phaacutep Dim ltTecircn mảnggt () [As ltKiểugt]Viacute dụDim DynArray() As IntegerSau đoacute ta coacute thể cấp phaacutet số phần tử thật sự bằng lệnh ReDimReDim ltTecircn mảnggt(N) Trong đoacute N lagrave một biểu thức kiểu IntegerReDim dugraveng để xaacutec định hay thay đổi kiacutech thước của một mảng động Ta coacute thể dugraveng ReDim để thay đổi số phần tử số chiều của một mảng nhiều lần nhưng khocircng thể thay đổi kiểu dữ liệu của mảng ngoại trừ kiểu mảng lagrave kiểu VariantMỗi lần gọi ReDim tất cả caacutec giaacute trị chứa trong mảng sẽ bị mất VB khởi tạo lại giaacute trị cho chuacuteng (Empty đối với mảng Variant 0 cho mảng kiểu số chuỗi rỗng cho mảng chuổi hoặc Nothing cho mảng caacutec đối tượng) Nhưng đocirci khi ta muốn tăng kiacutech cỡ của mảng nhưng khocircng muốn lagravem mất dữ liệu ta dugraveng ReDim đi kegravem với từ khoaacute Preserve Ta xem viacute dụ dưới đacircyReDim Preserve DynArray (UBound(DynArray) +10)Tuy nhiecircn chỉ coacute biecircn trecircn của chiều cuối cugraveng trong mảng được thay đổi khi ta dugraveng Preserve Nếu ta cố tigravenh thay đổi chiều khaacutec hoặc biecircn dưới thigrave VB sẽ baacuteo lỗiVI3 Một số thao taacutec trecircn mảngo Truy xuất từng phần tử trong mảng ltTecircn mảnggt(ltVị triacutegt)o Sao cheacutep mảng Đối với VB6 ta coacute thể gaacuten một mảng cho một mảng khaacutec hoặc kết quả trả về của một hagravem coacute thể lagrave một mảngViacute dụSub ByteCopy (old () As Byte New () As Byte)New = oldEnd SubTuy nhiecircn caacutech nagravey cũng chỉ aacutep dụng được cho mảng khai baacuteo động magrave thocirci Khi gaacuten biến coacute một số quy luật magrave ta cần lưu yacute Đoacute lagrave quy luật về kiểu dữ liệu vagrave quy luật về kiacutech thước vagrave số chiều của mảngTrang 42Visual BasicLỗi khi gaacuten mảng coacute thể xảy ra luacutec biecircn dịch hoặc khi thi hagravenh Ta coacute thể thecircm bẫy lỗi để đảm bảo rằng hai mảng lagrave tương thiacutech trước khi gaacuteno Mảng lagrave kết quả trả về của hagravem Chẳng hạn nhưPublic Function ArrayFunction (b As Byte) As Byte()

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Dim 2) As Byte

0) = b

1) = b + 2

2) = b + bArrayFunction = xEnd FunctionKhi gọi hagravem trả về mảng biến giữ giaacute trị trả về phải lagrave một mảng vagrave coacute kiểu như kiểu của hagravem nếu khocircng noacute sẽ baacuteo lỗi khocircng tương thiacutech kiểuVII Kiểu do người dugraveng định nghĩa - Kiểu mẩu tinCuacute phaacutepType lttecircn kiểugtltTecircn trường 1gt ltKiểu trường 1gtltTecircn trường 2gt ltKiểu trường 2gtltTecircn trường ngt ltKiểu trường ngtEnd TypeViacute dụType TEmployeeFullname As StringSalary As SingleAge As IntegerEnd TypeChuacuteng ta vừa định nghĩa một kiểu dữ liệu mới coacute tecircn lagrave TEmployee Kiểu nagravey coacute neacutet tương tự như một lớp Về mặt chức năng cả hai lagrave như nhau nhưng một lớp coacute thể chứa trong DLL vagrave sẵn sagraveng cho việc dugraveng chung với caacutec ứng dụng khaacutec trong khi đoacute kiểu dữ liệu do người dugraveng định nghĩa phải được khai baacuteo lại trong từng dự aacuten Do vậy kiểu lớp coacute nhiều mặt tiện lợi hơnCaacutech truy xuất từng trường của kiểu mẩu tinltTecircn biến mẩu tingtltTecircn trườnggtViacute dụ Giả sử ta coacute khai baacuteo biến sauDim e As TEmployeeTa coacute thể gaacuteneFullname = ldquoNguyen Van AnrdquoeSalary = 30000000eAge = 26Cacircu lệnh With- Được sử dụng để viết gọn hơn khi thao taacutec với dữ liệu kiểu mẩu tin- Cuacute phaacutepWith ltTecircn biến mẩu tingt Trang 43Visual Basic[ Truy xuất đến từng trường của mẩu tin theo dạngltTecircn trườnggt]End WithViacute dụ Dim e As TEmployeeTa coacute thể gaacutenWith eFullname = ldquoNguyen Van AnrdquoSalary = 30000000Age = 26End With Trang 44Visual BasicCHƯƠNG 5 THIẾT KẾ BIỂU MẪU DUgraveNG CAacuteC ĐIỀU KHIỂNMục tiecircuChương nagravey giới thiệu về caacutec điều khiển dugraveng trong việc tạo giao diện cho caacutec ứng dụng chạy trecircn Windows Việc nắm bắt được caacutec vấn đề nagravey lagravem cho cocircng việc tạo giao diện cho ứng dụng được nhanh choacutengHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng caacutec điều khiển hộp danh saacutech hộp lựa chọn để lưu caacutec danh saacutech- Sử dụng caacutec điều khiển hộp đaacutenh dấu nuacutet lựa chọn để nhậnhiển thị dữ liệu dạng YesNo

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

- Sử dụng caacutec điều khiển hộp higravenh ảnh điều khiển ảnh để hiển thị ảnh- Sử dụng điều khiển thanh cuộn để nhậnhiển thị dữ liệu số- Sử dụng điều khiển thời gian để đaacutep ứng sự trocirci đi của thời gian- Một số điều khiển khaacutecKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chưong 3 trang 29 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 45Visual BasicI Phacircn loại điều khiểnCoacute 3 nhoacutem điều khiển trong Visual BasicCaacutec điều khiển nội tại (Intrinsic control) Caacutec điều khiển nội tại luocircn chứa sẵn trong hộp cocircng cụ (nhatilden khung nuacutet lệnh khung ảnh) Ta khocircng thể gỡ bỏ caacutec điều khiển nội tại ra khỏi hộp cocircng cụCaacutec điều khiển ActiveX tồn tại trong caacutec tập tin độc lập coacute phần mở rộng OCX Đoacute lagrave caacutec điều khiển coacute thể coacute trong mọi phiecircn bản của VB hoặc lagrave caacutec điều khiển chỉ hiện diện trong ấn bản Professional vagrave Enterprise Mặt khaacutec cograven coacute rất nhiều điều khiển ActiveX do nhagrave cung cấp thứ ba cung cấpCaacutec đối tượng chegraven được (Insertable Object) Caacutec đối tượng nagravey coacute thể lagrave Microsoft Equation 30 hoặc bảng tiacutenh (Worksheet) của Microsoft Excel Một vagravei đối tượng kiểu nagravey cho pheacutep ta lập trigravenh với caacutec đối tượng sinh ra từ caacutec ứng dụng khaacutec ngay trong ứng dụng VBII Sử dụng caacutec điều khiểnII1 Điều khiển danh saacutech caacutec lựa chọn (List Box)II11 Khaacutei niệmĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcBiểu tượng (Shortcut) trecircn hộp cocircng cụĐiều khiển nagravey hiển thị một danh saacutech caacutec đề mục magrave ở đoacute người dugraveng coacute thể chọn lựa một hoặc nhiều đề mụcTrang 46Visual BasicList Box giới thiệu với người dugraveng một danh saacutech caacutec lựa chọn Một caacutech mặc định caacutec lựa chọn hiển thị theo chiều dọc trecircn một cột vagrave bạn coacute thể thiết lập lagrave hiển thị theo nhiều cột Nếu số lượng caacutec lựa chọn nhiều vagrave khocircng thể hiển thị hết trong danh saacutech thigrave một thanh trượt sẽ tự động xuất hiện trecircn điều khiển Dưới đacircy lagrave một viacute dụ về danh saacutech caacutec lựa chọn đơn cộtHigravenh V1 Viacute dụ về List BoxII12 Thuộc tiacutenho Name Đacircy lagrave tecircn của danh saacutech lựa chọn được sử dụng như một định danho MultiSelect Thuộc tiacutenh nagravey cho pheacutep List Box coacute được pheacutep coacute nhiều lựa chọn khi thực thi hay khocircngo Sort List Box coacute sắp xếp hay khocircngo Ngoagravei ra cograven coacute một số thuộc tiacutenh thocircng dụng khaacutec như Font Width Heighthellipo ListIndex Vị triacute của phần tử được lựa chọn trong List Boxo Select(ltIndexgt) cho biết phần tử thứ ltIndexgt trong List Box coacute được chọn hay khocircngII13 Phương thứco AddItem Thecircm một phần tử vagraveo List Box Cuacute phaacutepltNamegtAddIem(Item As String [Index])Tham sốDiễn giảiNameTecircn của List BoxItemBiểu thức chuỗi (đề mục) cần thecircm vagraveoIndexXaacutec định vị triacute đề mục mới được chegraven vagraveo giaacute trị 0 xaacutec định cho vị triacute đầu tiecircn Khi khocircng chỉ định rotilde Index thigrave phần tử thecircm vagraveo lagrave mục cuối cugraveng trong List Box mớiSau đacircy lagrave đoạn matilde viacute dụ tạo một List Box coacute tecircn List1 với caacutec đề mục Germany India France vagrave USA vagraveo luacutec biểu mẫu được nạp (Load)Private Sub Form_Load ()Trang 47

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Visual BasicList1AddItem GermanyList1AddItem IndiaList1AddItem FranceList1AddItem USAEnd SubNgười dugraveng cũng coacute thể thecircm vagraveo một đề mục mới một caacutech tự động vagraveo bất kỳ thời điểm nagraveo nhằm đaacutep lại taacutec động từ phiacutea người sử dụng ứng dụng Dưới đacircy lagrave higravenh ảnh minh họa cho List Box tương ứng với đoạn matilde ở trecircnHigravenh V2 List box hiển thị caacutec quốc giaThecircm một đề mục mới tại vị triacute xaacutec định để thực hiện cocircng việc nagravey ta chỉ cần chỉ ra vị triacute cần xen đề mục mới vagraveoViacute dụ List1AddItem Japan 0Thecircm mới đề mục tại thời điểm thiết kế Sử dụng thuộc tiacutenh List của điều khiển List Box ta coacute thể thecircm mới caacutec đề mục vagrave dugraveng tổ hợp phiacutem CTRL+ENTER để bắt đầu thecircm vagraveo đề mục mới trecircn dograveng khaacutec Khi đatilde thecircm xong danh saacutech caacutec đề mục ta coacute thể sắp xếp lại caacutec đề mục bằng caacutech sử dụng thuộc tiacutenh Sorted vagrave đặt giaacute trị của thuộc tiacutenh nagravey lagrave TRUEo RemoveItem Xoacutea một phần tử ra khỏi List BoxCuacute phaacutep ltNamegtRemoveItem IndexTham số Name vagrave Index giống như ở trường hợp thecircm vagraveo một đề mụco Clear Xoacutea tất cả caacutec mục trong List Box Cuacute phaacutep ltNamegtClearo Text Nhận giaacute trị từ List Box khi một đề mục được chọn Chẳng hạn đoạn matilde sau đacircy sẽ cho biết dacircn số của Canada khi người dugraveng chọn Canada từ List BoxPrivate Sub List1_Click ()If List1Text = Canada ThenText1Text = Canada has 24 million peopleEnd IfEnd SubTrang 48Visual BasicChouumlnHigravenh V3 Viacute dụ về List Boxo List truy xuất nội dung phần tử bất kỳ trong List BoxThuộc tiacutenh nagravey cho pheacutep truy xuất tất cả caacutec đề mục của điều khiển List Box Thuộc tiacutenh nagravey chứa một mảng vagrave mỗi đề mục lagrave một phần tử của mảng Mỗi đề mục được hiển thị dưới dạng chuỗi để tham chiếu đến một đề mục trong danh saacutech sử dụng cuacute phaacutep saultNamegtList(Index)Viacute dụ Text1Text = List1List(2)II14 Sự kiệno Click amp Double Click Xảy ra khi người sử dụng nhấp chuột (hay nhấp đuacutep) vagraveo List BoxThocircng thường người sử dụng sẽ thiết kế một nuacutet lệnh đi kegravem để nhận về giaacute trị do người dugraveng chọn Khi đoacute cocircng việc thực hiện sau khi nuacutet lệnh được chọn sẽ phụ thuộc vagraveo giaacute trị người dugraveng chọn từ List BoxDouble Click lecircn một đề mục trong danh saacutech cũng coacute kết quả tương tự như việc chọn một đề mục trong danh saacutech rồi ấn lecircn nuacutet lệnh Để thực hiện cocircng việc như trecircn trong sự kiện Double Click của List Box ta sẽ gọi đến sự kiện Click của nuacutet lệnhPrivate Sub List1_DblClick ()Command1_ClickEnd SubHoặc ta coacute thể thiết đặt giaacute trị True cho thuộc tiacutenh Value của nuacutet lệnhPrivate Sub List1_DblClick ()mmand1Value = TrueCoEnd SubTrang 49Visual BasicII2 Điều khiển hộp lựa chọn (Combo Box)Điều khiển Combo Box coacute thể được xem lagrave tiacutech hợp giữa hai điều khiển Text Box vagrave List Box Người dugraveng coacute thể chọn một đề mục bằng caacutech đaacutenh chuỗi văn bản vagraveo Combo Box hoặc chọn một đề mục trong danh saacutechĐiểm khaacutec nhau cơ bản giữa Combo Box vagrave List Box lagrave điều khiển Combo chỉ gợi yacute (hay đề nghị) caacutec lựa chọn trong khi đoacute điều khiển List thigrave giới hạn caacutec đề mục nhập vagraveo tức lagrave người dugraveng chỉ coacute thể

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

chọn những đề mục coacute trong danh saacutech Điều khiển Combo chứa cả ocirc nhập liệu necircn người dugraveng coacute thể đưa vagraveo một đề mục khocircng coacute sẵn trong danh saacutechBiểu tượng short cut trecircn hộp cocircng cụCaacutec dạng của điều khiển Combo Box Coacute tất cả 3 dạng của điều khiển Combo Box Ta coacute thể chọn dạng của Combo tại thời điểm thiết kế bằng caacutech dugraveng giaacute trị hoặc hằng chuỗi của VBKiểuGiaacute trịHằngDrop-down Combo Box0VbComboDropDownSimple Combo Box1VbComboSimpleDrop-down List Box2vbComboDropDownListSimple combo boxDrop-down list boxDrop-down combo boxHigravenh V4 Caacutec dạng combo box- Drop-down Combo Box Đacircy lagrave dạng mặc nhiecircn của Combo Người dugraveng coacute thể nhập vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Simple Combo Box Ta coacute thể hiển thị nhiều đề mục cugraveng một luacutec Để hiển thị tất cả caacutec đề mục bạn cần thiết kế Combo đủ lớn Một thanh trượt sẽ xuất hiện khi cograven đề mục chưa được hiển thị hết Ở dạng nagravey người dugraveng vẫn coacute thể nhập một chuỗi vagraveo trực tiếp hoặc chọn từ danh saacutech caacutec đề mục- Drop down List Box Dạng nagravey rất giống như một List box Một điểm khaacutec biệt đoacute lagrave caacutec đề mục sẽ khocircng hiển thị đến khi nagraveo người dugraveng Click lecircn mũi tecircn phiacutea phải của điều khiển Điểm khaacutec biệt với dạng thứ 2 đoacute lagrave người dugraveng khocircng thể nhập vagraveo trực tiếp một chuỗi khocircng coacute trong danh saacutechCaacutec thuộc tiacutenh cũng như caacutec phương thức aacutep dụng trecircn Combo Box giống như trecircn List Box Trang 50Visual BasicII3 Điều khiển hộp đaacutenh dấu (Check Box)II31 Khaacutei niệmĐacircy lagrave điều khiển hiển thị dấu 1048633 nếu như được chọn vagrave dấu 1048633 bị xoaacute nếu như khocircng chọn Dugraveng điều khiển Check Box để nhận thocircng tin từ người dugraveng theo dạng YesNo hoặc TrueFalse Ta cũng coacute thể dugraveng nhiều điều khiển trong một nhoacutem để hiển thị nhiều khả năng lựa chọn trong khi chỉ coacute một được chọn Khi Check Box được chọn noacute coacute giaacute trị 1 vagrave ngược lại coacute giaacute trị 0Biểu tượng shortcut trecircn hộp cocircng cụII32 Thuộc tiacutenho Name thuộc tiacutenh tecircno Value Giaacute trị hiện thời trecircn Check Box Coacute thể nhận caacutec giaacute trị vbChecked vbUnchecked vbGrayedII33 Sự kiệno Click Xảy ra khi người sử dụng nhấp chuột trecircn Check BoxII34 Viacute dụThiết kế chương trigravenh coacute giao diệnHigravenh V5 Viacute dụ về Check BoxHigravenh V5 lagrave higravenh minh họa caacutech dugraveng Check Box để hiển thị chuỗi dưới dạng tocirc đậm vagrave nghiecircngPrivate Sub chkBold_Click ()If ChkBoldValue = vbChecked Then If checkedtxtDisplayFontBold = TrueElse If not checkedtxtDisplayFontBold = FalseEnd IfEnd SubPrivate Sub chkItalic_Click ()If ChkItalicValue = vbChecked Then If checkedxtDisplayFontItalic = Truet Else If not checkedTrang 51Visual BasictxtDisplayFontItalic = False

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

End IfEnd SubII4 Điều khiển nuacutet lựa chọn (Option Button)II41 Khaacutei niệmCocircng dụng của điều khiển Option button cũng tương tự như điều khiển Check Box Điểm khaacutec nhau chủ yếu giữa hai loại điều khiển nagravey đoacute lagrave Caacutec Option Button của cugraveng một nhoacutem tại mỗi thời điểm chỉ coacute một điều khiển nhất định được chọnBiểu tượng Shortcut trecircn hộp cocircng cuiumlCaacutech sử dụng Option button cũng tương tự như của Check BoxTạo nhoacutem Option ButtonTất cả caacutec Option button đặt trực tiếp trecircn biểu mẫu (coacute nghĩa lagrave khocircng thuộc vagraveo Frame hoặc Picture Box) sẽ được xem như lagrave một nhoacutem Nếu người dugraveng muốn tạo một nhoacutem caacutec Option button khaacutec thigrave bắt buộc phải đặt chuacuteng becircn trong phạm vi của một Frame hoặc Picture boxHigravenh V6 Nhoacutem caacutec option buttonII42 Thuộc tiacutenho Name thuộc tiacutenh tecircn của điều khiển Option Buttono Value Giaacute trị hiện thời trecircn Option Button Coacute thể nhận caacutec giaacute trị True amp FalseII43 Sự kiệnbull Click Xảy ra khi người sử dụng nhấp chuột trecircn Option ButtonII5 Điều khiển thanh cuộn ngang (HScrollBar)II51 Khaacutei niệmLagrave điều khiển coacute thanh trượt cho pheacutep cuộn ngang vagrave người dugraveng coacute thể sử dụng HScrollBar như một thiết bị nhập hoặc một thiết bị chỉ định cho số lượng hoặc vận tốc Viacute dụ ta thiết kế volume cho một trograve chơi trecircn maacutey tiacutenh hoặc để diễn đạt coacute bao nhiecircu thời gian trocirci qua trong một khoảng định thời nhất địnhTrang 52Visual BasicBiểu tượng Shortcut trecircn hộp cocircng cuiumlKhi người dugraveng sử dụng Scroll Bar như một thiết bị chỉ định số lượng thigrave người dugraveng cần xaacutec định giaacute trị cho hai thuộc tiacutenh Max vagrave Min để đưa ra khoảng thay đổi thiacutech hợpII52 Thuộc tiacutenho Name Tecircn của thanh cuộno Min Lagrave giaacute trị nhỏ nhất trecircn thanh cuộno Max Giaacute trị lớn nhất của thanh cuộno Large change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn chuột lecircn Hscrollbaro Small change Thuộc tiacutenh nagravey dugraveng để xaacutec định khoảng thay đổi khi người dugraveng ấn lecircn mũi tecircn phiacutea cuối thanh cuộno Value Thuộc tiacutenh nagravey trả về giaacute trị tại một thời điểm của thanh cuộn nằm trong khoảng giaacute trị [Min Max] magrave người dugraveng đatilde xaacutec địnhII53 Sự kiệno Change Xảy ra mỗi khi HScrollBar thay đổi giaacute trịo Scroll Xảy ra mỗi khi ta di chuyển con trỏ thanh cuộnII54 Viacute dụHigravenh V7 Viacute dụ về HscrollbarHigravenh V7 minh họa việc sử dụng thanh cuộn để thay đổi kiacutech cỡ của ocirc Text họ tecircn với đoạn matilde đơn giản như sauPrivate Sub HScroll1_Change()Text1FontSize = HScroll1ValueEnd SubTrang 53Visual BasicII6 Điều khiển thanh cuộn đứng (VScrollBar)Biểu tượng shortcut trecircn hộp cocircng cuiumlCaacutec thuộc tiacutenh vagrave cocircng dụng của VScrollBar cũng tương tự như HScrollBarII7 Điều khiển hộp higravenh ảnh (Picture Box)II71 Khaacutei niệmĐiều khiển Picture Box cho pheacutep người dugraveng hiển thị higravenh ảnh lecircn một biểu mẫuBiểu tượng Shortcut trecircn hộp cocircng cụII72 Thuộc tiacutenho Name tecircn của điều khiển Picture Box

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

o Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong Picture box Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircypicMainPicture = LoadPicture(NEWJPG)o Autosize Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Picture box sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thị Ta necircn cẩn thận khi sử dụng thuộc tiacutenh nagravey vigrave khi điều khiển Picture Box thay đổi kiacutech thước noacute khocircng quan tacircm đến vị triacute của caacutec điều khiển khaacutecII73 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtII74 Viacute dụTrang 54Visual BasicPrivate Sub Picture1_MouseMove(Button As Integer Shift As _Integer X As Single Y As Single)Picture1Picture = LoadPicture(dquocdinhnewjpg)End SubII75 Lưu yacuteo Điều khiển Picture Box coacute thể được dugraveng như một vật chứa caacutec điều khiển khaacutec (tương tự như một Frame)o Ngoagravei ra người dugraveng cũng coacute thể sử dụng Picture Box như một khung vẽ hoặc như một khung soạn thảo vagrave coacute thể in được nội dung trecircn đoacuteII8 Điều khiển higravenh ảnh (Image)II81 Khaacutei niệmĐiều khiển Image dugraveng để hiển thị một higravenh ảnh Caacutec dạng coacute thể lagrave Bitmap Icon Metafile Jpeg Gif Tuy nhiecircn khaacutec với điều khiển Picture Box điều khiển Image sử dụng tagravei nguyecircn hệ thống iacutet vagrave cũng nạp ảnh nhanh hơn hơn nữa số lượng thuộc tiacutenh vagrave phương thức aacutep dụng iacutet hơn điều khiển Picture boxBiểu tượng Shortcut trecircn hộp cocircng cụII82 Thuộc tiacutenho Name tecircn của điều khiển Imageo Picture Đacircy lagrave thuộc tiacutenh cho pheacutep xaacutec định higravenh ảnh nagraveo sẽ được hiển thị becircn trong điều khiển Image Bao gồm tecircn tập tin higravenh ảnh vagrave cả đường dẫn nếu coacuteĐể hiển thị hoặc thay thế một higravenh ảnh tại thời điểm chạy chương trigravenh thigrave người dugraveng coacute thể dugraveng phương thức LoadPicture để đặt lại giaacute trị của thuộc tiacutenh Picture với cuacute phaacutep như trong viacute dụ dưới đacircyimgMainPicture = LoadPicture(NEWJPG)o Stretch Khi giaacute trị của thuộc tiacutenh nagravey lagrave TRUE thigrave điều khiển Image sẽ tự động thay đổi kiacutech thước cho phugrave hợp với higravenh ảnh được hiển thịII83 Sự kiệno Mouse Down Xảy ra khi người sử dụng chương trigravenh nhấn giữ phiacutem chuộto Mouse Move Xảy ra khi người sử dụng chương trigravenh di chuyển chuộto Mouse Up Xảy ra khi người sử dụng chương trigravenh thả phiacutem chuộtTrang 55Visual BasicII9 Điều khiển higravenh dạng (Shape)Biểu tượng Shortcut trecircn hộp cocircng cuiumlĐiều khiển Shape dugraveng để vẽ caacutec higravenh dạng như higravenh chữ nhật higravenh vuocircng oval higravenh trograven higravenh chữ nhật goacutec trograven hoặc higravenh vuocircng goacutec trogravenThuộc tiacutenh Shape cho pheacutep người dugraveng chọn 1 trong 6 dạng như đatilde necircu ở trecircn Sau đacircy lagrave bảng giaacute trị của thuộc tiacutenh nagraveyHigravenh dạngGiaacute trịHằngRectangle0vbShapeRectangleSquare1vbShapeSquareOval

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

2vbShapeOvalCircle3vbShapeCircleRounded Rectangle4vbShapeRoundedRectangleRounded Square5vbShapeRoundedSquareHigravenh V9 dưới đacircy minh họa cho caacutec dạng của điều khiển ShapeHigravenh V9 6 dạng của điều khiển ShapeNgười dugraveng coacute thể sử dụng caacutec thuộc tiacutenh như BorderColor BorderStyle BorderWidth để xaacutec định magraveu dạng cũng như độ dagravey của đường biecircn Tương tự với caacutec thuộc tiacutenh FillColor FillStyle để xaacutec định magraveu vagrave kiểu tocirc nềnII10 Điều khiển thời gian (Timer)II101 Khaacutei niệmĐiều khiển Timer đaacutep ứng lại sự trocirci đi của thời gian Noacute độc lập với người sử dụng vagrave ta coacute thể lập trigravenh để thực hiện một cocircng việc nagraveo đoacute cứ sau một khoảng thời gian đều nhauBiểu tượng Shortcut trecircn hộp cocircng cuiumlViệc đưa một điều khiển Timer vagrave trong một biểu mẫu cũng tương tự như những điều khiển khaacutec Ở đacircy ta chỉ coacute thể quan saacutet được vị triacute của điều khiển TimerTrang 56Visual Basictại giai đoạn thiết kế khi chạy ứng dụng điều khiển Timer coi như khocircng coacute thể hiện trecircn biểu mẫuII102 Thuộc tiacutenho Name tecircn của điều khiển Timero Interval Đacircy lagrave thuộc tiacutenh chỉ rotilde số ms giữa hai sự kiện kế tiếp nhau Trừ khi noacute bị vocirc hiệu hoacutea mỗi điều khiển Timer sẽ luocircn nhận được một sự kiện sau một khoảng thời gian đều nhauThuộc tiacutenh Interval nhận giaacute trị trong khoảng 064767 ms coacute nghĩa lagrave khoảng thời gian dagravei nhất giữa hai sự kiện chỉ coacute thể lagrave khoảng một phuacutet (648 giacircy)o Enabled nếu giaacute trị lagrave True nghĩa lagrave điều khiển Timer được kiacutech hoạt vagrave ngược lạiII103 Sự kiệno Timer xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (xaacutec định trong thuộc tiacutenh Interval)II104 Sử dụng điều khiển Timero Khởi tạo một điều khiển Timer Nếu lập trigravenh viecircn muốn điều khiển Timer hoạt động ngay tại thời điểm biểu mẫu chứa noacute được nạp thigrave đặt thuộc tiacutenh Enable lagrave TRUE hoặc coacute thể dugraveng một sự kiện nagraveo đoacute từ becircn ngoagravei để kiacutech hoạt điều khiển Timero Lập trigravenh đaacutep ứng sự kiện trả về từ điều khiển Timer Ta sẽ đưa matilde lệnh của cocircng viecircc cần thực hiện vagraveo trong sự kiện Timer của điều khiển Timer Sau đacircy lagrave viacute dụ khởi tạo một đồng hồ số nhờ vagraveo điều khiển TimerPrivate Sub Timer1_Timer()If Label1Caption ltgt CStr(Time) ThenLabel1Caption = TimeEnd IfEnd SubThuộc tiacutenh Interval được thiết lập lagrave 500 (tức 05 giacircy)Điều khiển Timer cograven hữu iacutech trong việc tiacutenh toaacuten thời gian cho một cocircng việc nagraveo đoacute đến một thời điểm nagraveo đoacute thigrave ta sẽ khởi tạo một cocircng việc mới hoặc ngưng một cocircng việc khocircng cograven cần nữaII11 Điều khiển danh saacutech ổ đĩa (DriveListbox) danh saacutech thư mục (DirListbox) danh saacutech tập tin (FileListbox)II111 Khaacutei niệmo Điều khiển DriveListbox trigravenh bagravey những ổ đĩa của hệ thống vagrave cho pheacutep người dugraveng chọn một trong những ổ đĩa đoacuteBiểu tượng shortcut (DriveListbox) trecircn hộp cocircng cụo Điều khiển DirListbox cho pheacutep trigravenh bagravey những thư mục vagrave đường dẫn tại thời điểm chạy ứng dụng Sử dụng điều khiển nagravey để trigravenh bagravey một danh saacutech coacute thứ bậc của caacutec thư mục coacute nghĩa lagrave người dugraveng coacute thể mở một tagravei liệu từ danh saacutech caacutec tagravei liệu đatilde coacute sẵnTrang 57Visual Basic

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Biểu tượng shortcut (DirListbox) trecircn hộp cocircng cụo Điều khiển FileListbox cho pheacutep trigravenh bagravey những tagravei liệu coacute sẵn trong thư mục hiện hagravenh Bạn coacute thể dugraveng thuộc tiacutenh Partten để xaacutec định kiểu tập tin nagraveo được hiển thị trong danh saacutechBiểu tượng shortcut (FileListbox) trecircn hộp cocircng cuiumlThocircng thường caacutec ứng dụng sẽ sử dụng kết hợp cả ba loại điều khiển trecircn lagrave DriveListbox DirListbox vagrave FileListboxII112 Viacute dụCaacutec thuộc tiacutenh được thiết lập tại thời điểm thiết kếFileListbox Partten = docDriveListbox DirListboxFileListbox FontName = Vncourier NewTức lagrave điều khiển FileListbox chỉ hiển thị caacutec tập tin của Microsoft WordĐoạn matilde dưới đacircy được viết trong sự kiện Load của biểu mẫuPrivate Sub Form_Load()Dir1Path = cFile1Path = cEnd SubHigravenh V10 Viacute dụ về caacutec điều khiển ổ đĩa thư mục vagrave tập tinTrang 58Visual BasicĐoạn matilde trecircn cho pheacutep xaacutec định đường dẫn hiện hagravenh của điều khiển DirListbox FileListbox tại thời điểm nạp ứng dụng lagrave C Khi chạy ứng dụng ta được như higravenh V10Khi ta thay đổi ổ đĩa thigrave caacutec thư mục sẽ thay đổi theo đoacute lagrave những thư mục ở ổ đĩa hiện hagravenh sự thay đổi cũng diễn ra tương tự đối với danh saacutech caacutec tập tin Cần chuacute yacute rằng đối với ổ đĩa mềm vagrave CD thigrave cần thiết phải coacute đĩa mềm hoặc CD tại thời điểm chọn ở đĩa nếu khocircng sẽ xảy ra lỗi tại thời điểm chạy ứng dụngPrivate Sub Dir1_Change()FilEnd Sube1Path = Dir1PathPrivate Sub Drive1_Change()Dir1Path = Drive1DriveEnd SubBecircn trecircn lagrave những đoạn matilde đaacutep ứng lại việc người dugraveng chọn việc thay đổi ổ đĩa vagrave thư mục Trong danh saacutech caacutec tập tin ta chỉ hiển thị những file docTrang 59Visual BasicCHƯƠNG 6 LẬP TRIgraveNH XỬ LYacute GIAO DIỆN amp ĐỒ HỌAMục tiecircuChương nagravey giới thiệu về caacutech tạo menu cũng như một số hagravem xử lyacute đồ họa những thagravenh phần quan trọng trong caacutec ứng dụng chạy trecircn WindowsHọc xong chương nagravey sinh viecircn phải nắm bắt được caacutec vấn đề sau- Sử dụng menu trong thiết kế giao diện- Sử dụng caacutec hộp thoại trong thiết kế ứng dụng- Sử dụng caacutec phương thức đồ họa cugraveng với caacutech xử lyacute một số sự kiện để tạo caacutec ứng dụng đồ họaKiến thức coacute liecircn quan- Caacutec cấu truacutec lập trigravenh trong VB- Caacutech thức xử lyacute sự kiệnTagravei liệu tham khảo- Microsoft Visual Basic 60 vagrave Lập trigravenh Cơ sở dữ liệu - Chương 7 trang 99 - Nguyễn Thị Ngọc Mai (chủ biecircn) Nhagrave xuất bản Giaacuteo dục - 2000Trang 60Visual BasicI MenuI1 Khaacutei niệmMenu lagrave một loại điều khiển trong đoacute người sử dụng coacute thể lựa chọn caacutec mục từ một danh saacutech cho trướcCoacute 2 loại menu- Menu thả xuống (Drop-Down Menu) lagrave dạng menu thocircng dụng nhất- Menu bật ra (Pop-Up Menu) thường hiển thị khi ta ấn nuacutet phải chuộtI2 Caacutec thuộc tiacutenh của MenuCaacutec thuộc tiacutenh của Menu khocircng chứa trong cửa sổ Properties magrave chứa trong Menu Editor

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

- Caption Lagrave chuỗi hiển thị trecircn menu- Name Phải duy nhất vagrave dễ nhớ Đacircy lagrave tecircn để nhận biết thagravenh phần nagraveo của Menu được chọn- Shortcut dugraveng để thiết lập caacutec phiacutem tắt (Shortcut key)- WindowList Dugraveng trong caacutec ứng dụng MDI (Multipe Document Interface) Đacircy lagrave ứng dụng coacute một biểu mẫu chiacutenh vagrave nhiều biểu mẫu con Thuộc tiacutenh nagravey ra lệnh cho VB hiển thị tiecircu đề của caacutec biểu mẫu con trecircn menu- Checked Nếu chọn thuộc tiacutenh nagravey thigrave sẽ coacute một dấu hiển thị becircn cạnh traacutei nhưng thuộc tiacutenh nagravey khocircng được aacutep dụng cho những mục menu coacute chứa menu con- Enabled Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ bị xaacutem đi vagrave người dugraveng khocircng thể chọn- Visible Nếu thuộc tiacutenh nagravey khocircng được chọn thigrave mục nagravey sẽ khocircng được hiển thị- NegotiatePosition quản lyacute vị triacute gắn menu trong trường hợp sử dụng caacutec đối tượng ActiveXI3 Caacutec sự kiện- Click Xảy ra khi người sử dụng chương trigravenh nhấp chuột vagraveo một mục nagraveo đoacute của MenuI4 Caacutech tạo MenuMenu cũng lagrave một loại điều khiển nhưng Windows sẽ kiểm soaacutet việc vẽ menu Lập trigravenh viecircn chỉ quản lyacute việc điều hagravenh caacutec sự kiện magrave thocirciTrang 61Visual BasicHigravenhVI1TrigravenhsoạnthảoMenuMenu khocircng chứa trong hộp cocircng cụ magrave được thiết kế từ trigravenh soạn thảo menu Trong Visual Basic 60 IDE chọn Tools rồi Menu Editor để mở chương trigravenh nagraveyViacute dụ Tạo một Drop-Down Menu- Tạo một đề aacuten mới- Ấn Ctrl-E để mở Menu Editor- Ta sẽ tạo một Menu File với Menu con lagrave Open vagrave Save As- Trước tiecircn ta nhập vagraveo ampFile trong ocirc Caption vagrave nhập một tecircn bất kỳ vagraveo ocirc Name (chẳng hạn lagrave mfile) Kyacute tự amp trước chữ F cho biết chữ F sẽ lagrave phiacutem tắt (ấn Ctrl-F) coi như chọn menu File- Tiếp theo ta nhập ampOpen vagrave ampSave As Để Open vagrave Save As lagrave Sub menu của File ta chọn Open rồi ấn mũi tecircn sang traacutei Tương tự đối với Save AsHigravenh VI2 Viacute dụ tạo Popup MenuTrang 62Visual BasicTaacutech nhoacutem menuTrong trường hợp Menu coacute nhiều mục ta sẽ taacutech nhoacutem Menu để tiện theo dotildei Chẳng hạn ta thecircm vagraveo Menu File mục Exit vagrave taacutech riecircng ra với Open vagrave Save AsTa sẽ xen vagraveo giữa hai mục Save As vagrave Exit một mục mới coacute Caption lagrave ldquo-ldquo Ta coacute thể theo dotildei qua higravenh VI3Higravenh VI3 Viacute dụ taacutech nhoacutem caacutecViacute dụ Tạo Pop-up menu- Sử dụng lại menu đatilde dugraveng ở viacute dụ trước nhưng ta sẽ tắt thuộc tiacutenh Visible của menu File- Sau đoacute mở cửa sổ Code của ứng dụng dugraveng sự kiện MousUp nhập vagraveo đoạn lệnh sauPrivate Sub Form_MouseUp (Button As Integer Shift As _Integer X As Single Y As Single)If Button = vbRightButton ThenPopupMenu mfile vbPopupMenuLeftAlignEnd IfEnd Sub- Chạy thử ứng dụng khi ta ấn chuột phải một menu sẽ bật ra- Lệnh PopupMenu cho biết tecircn menu cần bật ra đoacute lagrave tecircn magrave ta đatilde đặt trong trigravenh soạn thảo MenuEditor ở đacircy lagrave mfile- Kế đến đoacute lagrave tham số xaacutec định caacutech hiển thị menu vbPopupMenuLeftAlign vbPopupMenuRightAlign vbPopupMenuCenterAlignSau khi đatilde thiết kế xong menu ta sẽ viết caacutec đoạn matilde để VB sẽ thi hagravenh một cocircng việc nagraveo đoacute tương ứng với mục được chọn Cocircng việc thi hagravenh sẽ được viết becircn trong sự kiện Click của mục đoacute Trang 63Visual BasicII Hộp thoạiII1 Khaacutei niệmHộp thoại (Dialog Box) lagrave một trong những caacutech VB dugraveng để giao tiếp với người dugraveng Coacute 4 loại hộp thoại- Hộp thocircng điệp (Message Box)

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

- Hộp nhập (Input Box)- Caacutec hộp thoại thocircng dụng (Common Dialog)- Hộp thoại hiệu chỉnh (Custom Dialog)II2 Hộp thocircng điệpHộp thocircng điệp cũng coacute 2 loại Loại chỉ xuất thocircng baacuteo loại coacute tương taacutec với người dugravengII21 Loại chỉ xuất thocircng baacuteo- Luacutec nagravey ta dugraveng MsgBox như lagrave một thủ tục- Cuacute phaacutep MsgBox Prompt Button Title Trong đoacutePrompt Chuỗi thocircng baacuteo sẽ hiển thịButton Caacutec nuacutet nhấn sẽ được hiển thị trecircn hộp thocircng baacuteoTitle Chuỗi hiển thị trecircn thanh tiecircu đề của hộp thocircng baacuteo- Viacute dụHigravenhVI4HộpthocircngđiệpChẳng hạn ta xacircy dựng một biểu mẫu dugraveng để hiển thị tecircn vagrave điểm trung bigravenh cuối năm của một học sinh khối lớp 12 Do đoacute giaacute trị điểm trung bigravenh cũng như họ tecircn học sinh lagrave khocircng thể thay đổi Do đoacute khi ngưogravei dugraveng Click vagraveo một ocirc Text nagraveo đoacute ta sẽ xuất thocircng baacuteo rằng giaacute trị nagravey khocircng thể thay đổiTrang 64Visual BasicPrivate Sub Text2_Click()MsgBox Vous ne pouvez pas changer la value de ce champEnd SubSau khi xuất thocircng baacuteo VB sẽ đợi ta ấn vagraveo nuacutet OK hoặc Enter Sau đoacute VB sẽ thi hagravenh dograveng lệnh ngay sau dograveng lệnh MsgBoxĐocirci khi dograveng thocircng baacuteo quaacute dagravei VB sẽ tự động cắt để đưa xuống dograveng khaacutec tuy nhiecircn coacute khi sẽ khocircng như mong muốn của lập trigravenh viecircn Ta coacute thể thực hiện cocircng việc nagravey như sauMsgBox ldquoThis is a multi-line ldquo amp chr$(10) amp ldquo messagerdquoTugravey theo thocircng số truyền vagraveo MsgBox magrave coacute nhiều loại hộp thoại thocircng điệp khaacutec nhauHằng sốGiaacute trịDiễn giảivbOKOnly0Chỉ hiển thị nuacutet OK vbOKCancel1Hiển thị 2 nuacutet OK vagrave CancelvbAbortRetryIgnore2Hiển thị caacutec nuacutet Abort Retry vagrave IgnorevbYesNoCancel3Hiển thị caacutec nuacutet Yes No vagrave CancelvbYesNo4Hiển thị 2 nuacutet Yes vagrave NovbRetryCancel5Hiển thị 2 nuacutet Retry vagrave CancelCaacutec loại biểu tượng trecircn hộp cocircng cụHằng sốDiễn giảivbCriticalDugraveng cho những thocircng baacuteo lỗi thất bại khi thi hagravenh cocircng việc nagraveo đoacutevbQuestionDugraveng cho những cacircu hỏi yecircu cầu người dugraveng chọn lựavbExclamationDugraveng cho caacutec thocircng baacuteo của chương trigravenhvbInformationDugraveng cho caacutec thocircng baacuteo cung cấp thecircm thocircng tinII22 Loại tương taacutec với người dugravengLuacutec nagravey MsgBox được dugraveng như một hagravem khi một nuacutet nagraveo đoacute trecircn hộp thocircng baacuteo được ấn VB sẽ trả về

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

giaacute trị của nuacutet ấn đoacuteCuacute phaacutepMsgBox (Prompt Button Title) As IntegerHằng sốGiaacute trịNuacutetvbOK1OKvbCancel2CancelvbAbort3AbortvbRetry4RetryvbIgnore5IgnorevbYes6Yes Trang 65Visual BasicvbNo7NoVới những thocircng điệp quan trọng ta mong muốn người dugraveng phải chọn lựa một trong caacutec đề xuất magrave ta đưa ra trước khi chuyển qua ứng dụng khaacutec ta sẽ dugraveng thocircng số vbSystemModalTrang 66Visual BasicII3 Hộp nhậpĐacircy lagrave loại hộp thocircng điệp cho pheacutep nhận thocircng tin từ phiacutea người sử dụng Tuy nhiecircn trong caacutec ứng dụng hộp nhập rất iacutet khi được dugraveng do- Ta khocircng coacute caacutech nagraveo để kiểm tra thocircng tin do người dugraveng nhập vagraveo khi magrave Enter chưa được ấn- Thocircng tin được nhập lagrave rất iacutetSau đacircy lagrave một viacute dụ về hộp nhậpPublic Sub Main ()Dim ReturnString As String

ReturnString = InputBo ldquoNhap vao ten cua banrdquo)End SubGiaacute trị trả về của hộp nhập lagrave một chuỗiHigravenhVI5HộpnhậptecircnII4 Caacutec hộp thoại thocircng dụngCoacute 6 loại hộp thoại thocircng dụng- Mở tập tin- Lưu tập tin- Chọn magraveu- Chọn Font- In ấn- Trợ giuacutepTuy coacute 6 loại nhưng khi thiết kế biểu mẫu ta chỉ thấy một cocircng cụ duy nhất đoacute lagrave CommonDialog Muốn đưa Common Dialog vagraveo dự aacuten ta chọn ProjectComponentshellipControlsMicrosoft Common Dialog Control 60 Sau đoacute Common Dialog sẽ xuất hiện trong hộp cocircng cụ ToolBoxII41 Hộp thoại mở vagrave lưu tập tinHai hộp thoại nagravey coacute chức năng vagrave thể hiện như nhau Cả hai hộp thoại đều hiển thị danh saacutech caacutec tập tin người dugraveng coacute thể duyệt qua caacutec ổ đĩa để tigravem caacutec tập tin Chuacuteng chỉ khaacutec nhau phần tiecircu đề vagrave nuacutet nhấnCaacutec thuộc tiacutenh quan trọngo Name tecircn của Common Dialog

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

o Filter đacircy lagrave một chuỗi xaacutec định phần mở rộng của tecircn caacutec tập tin magrave hộp thoại coacute thể mở hay lưuTrang 67Visual Basico FilterIndex nếu coacute nhiều phần mở rộng của tecircn tập tin được mocirc tả trong thuộc tiacutenh Filter thigrave thuộc tiacutenh nagravey xaacutec định mặc định loại tập tin nagraveo được chọn (lagrave một số nguyecircn)o FileName trả về tecircn tập tin sau khi người sử dụng hộp thoại chọn một tập tin nagraveo đoacuteo CancelError nếu TRUE thigrave trả về giaacute trị lỗi khi người dugraveng chọn nuacutet Cancel mặc nhiecircn giaacute trị nagravey lagrave FalsePhương thứco ShowOpen mở ra hộp thoại mở tập tino ShowSave mở ra hộp thoại lưu tập tinViacute dụPrivate Sub Form_Load()On Error GoTo ErrHandlerdlgFileFilter = All Files ()||Text Files ldquo amp _ldquo(txt)|txt|Batch Files (bat)|batdlgFileFilterIndex = 2dlgFileShowOpenExit SubErrHandlerMsgBox ErrDescriptionEnd SubỞ viacute dụ trecircn ta thiết kế một hộp thoại mở tập tin trong đoacute caacutec tập tin được hiển thị theo 3 nhoacutem tập tin đoacute lagrave- All Files ()- Text Files (txt)- Batch Files (bat)Caacutec nhoacutem tập tin được thể hiện trong thuộc tiacutenh Filter Mỗi nhoacutem tập tin caacutech nhau bởi dấu phacircn caacutech |Thuộc tiacutenh FilterIndex = 2 tức lagrave khi hộp thoại Open được mở lecircn thigrave loại tập tin hiển thị mặc định lagrave Text FilesSau khi đatilde chọn một tập tin vagrave nhấn nuacutet Open ta sử dụng thuộc tiacutenh FileName để nhận về tecircn tập tin đatilde chọnKhi ta chọn thuộc tiacutenh CancelError lagrave TRUE thigrave khi người dugraveng ấn nuacutet Cancel trecircn hộp thoại ta sẽ nhận được một lỗi vagrave sẽ coacute caacutech xử lyacute lỗi nagraveyTa chọn phương thức ShowOpen để hiển thị hộp thoại mở tập tinTrang 68Visual BasicHigravenhVI6HộpthoạimởtậptinCaacutec thuộc tiacutenh cũng tương tự đối với hộp thoại lưu tập tin ta chỉ cần thay đổi tiecircu đề của Dialog vagrave dugraveng phương thức ShowSave Dưới đacircy lagrave minh họa cho hộp thoại lưu tập tinHigravenh VI7 Hộp thoại lưu tập tinTrang 69Visual BasicII42 Hộp thoại chọn magraveuĐacircy lagrave hộp thoại cho pheacutep người dugraveng chọn vagrave hiển thị caacutec magraveu coacute sẵn trong bảng magraveu của Windows cũng như thiết lập thecircm nhiều magraveu mới Một thuộc tiacutenh quan trọng đối với hộp thoại chọn magraveu đoacute lagrave thuộc tiacutenh Color thuộc tiacutenh nagravey trả về giaacute trị của magraveu đatilde được chọn Ta sẽ dugraveng phương thức ShowColor để hiển thị hộp thoại chọn magraveuHigravenh VI8 Hộp thoại chọn magraveuTrong một số ứng dụng ta sẽ dugraveng hộp thoại chọn magraveu để thay đổi giaacute trị magraveu của caacutec điều khiển trong một số trường hợp nagraveo đoacute Viacute dụ thay đổi magraveu nền của điều khiển TextBox trong viacute dụ dưới đacircyTrang 70Visual BasicHigravenh VI9 Viacute dụ sử dụng hộp thoại chọn mầuTa sẽ thiết kế một nuacutet nhấn nhỏ becircn cạnh điều khiển TextBox nuacutet nhấn nagravey cho pheacutep người sử dụng chọn magraveu nền của TextBox Ta coacute đoạn matilde lệnh sauPrivate Sub Command2_Click()On Error GoTo ErrHandlerCommonDialog1ShowColorText1BackColor = CommonDialog1Color

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

ErrHandlerCommonDialog1ShowColorEnd SubTrước khi chạy chương trigravenh cần xaacutec định thuộc tiacutenh CancelError = TRUEII43 Hộp thoại chọn Font chữCho pheacutep người dugraveng chọn Font magraven higravenh maacutey in hay cả hai Khi dugraveng hộp thoại chọn Font ta phải dugraveng thuộc tiacutenh Flags quy định loại Font nagraveo sẽ được hiển thịHigravenh VI10 Hộp thoạiFontThuộc tiacutenhGiải thiacutechColorLưu giữ giaacute trị của magraveu được chọnFontBoldTRUE nếu người dugraveng chọn chế độ đậm (Bold) vagrave FALSE nếuTrang 71Visual Basicngược lạiFontItalicTRUE nếu người dugraveng chọn chế độ nghiecircng (Italic) vagrave FALSE nếu ngược lạiFontStrikeThruTRUE nếu chọn chế độ gạch ngang caacutec kyacute tựFontUnderLineTRUE nếu chọn chế độ gạch dướiFontNameTugravey yacuteMaxKiacutech cỡ lớn nhất của Font được hiển thịMinKiacutech cỡ nhỏ nhất của font được hiển thịFontSizeKiacutech cỡ của Font được chọnCaacutec giaacute trị của thuộc tiacutenh FlagsHằngGiaacute trịHiệu quảcdlCFPrinterFontsampH2Chỉ hiển thị font maacutey incdlCFScreenFontsampH1Chỉ hiển thị font magraven higravenhcdlCFBothampH3Chỉ hiển thị font magraven higravenh vagrave font maacutey incdlCFScalableOnlyampH20000Hiển thị font tỷ lệ như lagrave fonts TrueTypeNếu muốn chọn magraveu cho Font ta thecircm 256 vagraveo giaacute trị của thuộc tiacutenh Flags Nếu khocircng coacute điều nagravey ta chỉ thấy tecircn Font kiểu Font vagrave kiacutech cỡ Font magrave thocirciĐể mở hộp thoại chọn Font ta sử dụng phương thức ShowFontII44 Hộp thoại in ấnĐacircy lagrave hộp thoại cho pheacutep xaacutec lập caacutec thocircng tin về maacutey in chẳng hạn như bao nhiecircu dữ liệu được in maacutey in sẽ hoạt động như thế nagraveohellipHộp thoại in ấn noacute trả về 3 thuộc tiacutenh thocircng dụng Copies FromPage vagrave ToPageHigravenh VI11 Hộp thoại in ấnThuộc tiacutenhGiải thiacutechCopiesSố bản inFromPage

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Số thứ tự của trang bắt đầuMaxSố bản in tối đa cho pheacutepTrang 72Visual BasicMinSố bản in tối thiểu cho pheacutepPrinterDefaultNếu gaacuten thagravenh TRUE mọi thay đổi magrave người dugraveng thực hiện sẽ được ghi lại thagravenh caacutec thay đổi trecircn hệ thống vagrave coacute ảnh hưởng đến caacutec ứng dụng khaacutec nếu coacute sử dụng maacutey inToPageSố thứ tự của trang in cuối cugravengĐể mở hộp thoại in ấn ta sử dụng phương thức ShowPrinterIII Xử lyacute caacutec sự kiện chuột vagrave bagraven phiacutemIII1 Sự kiện chuộtBiểu mẫu hoặc điều khiển coacute thể nhận biết sự kiện chuột khi coacute con trỏ chuột đi ngang quaCoacute 3 sự kiện chuột chủ yếu đoacute lagraveSự kiệnGiải thiacutechMouseDownXảy ra khi người sử dụng ấn chuột (chuột traacutei hoặc phải)MouseUpXảy ra khi người sử dụng thả một nuacutet chuột bất kỳMouseMoveXảy ra khi con trỏ chuột di chuyển đến một điểm mới trecircn magraven higravenhCaacutec tham sốTham sốGiải thiacutechButtonCho biết phiacutem chuột nagraveo được ấnShiftCho biết SHIFT hay CTRL hay ALT được ấnX YXaacutec định vị triacute của con trỏ chuột đối với hệ tọa độ của điều khiểnViacute dụ 1 Sử dụng sự kiện MouseDown để vẽ caacutec đoạn thẳng nối tiếp nhau mỗi khi ta dugraveng chuột chấm một điểm trecircn biểu mẫu Ta coacute thể thực hiện điều đoacute với đoạn matilde lệnh xử lyacute sự kiện Form_MouseDown như sauPrivate Sub Form_MouseDown(Button As Integer amp _Shift As Integer X As Single Y As Single)Line -(X Y)End SubTrang 73Visual BasicViacute dụ 2 Sử dụng sự kiện MouseUp để hiển thị một thocircng điệp cho biết nuacutet chuột nagraveo vừa được thả Sự kiện Form_MouseUp được xử lyacutePrivate Sub Form_MouseUp (Button As Integer amp _Shift As Integer X As Single Y As Single)If Button = 1 ThenPrint ldquoBan vua tha phim chuot trairdquoEnd IfIf Button = 2 ThenPrint ldquoBan vua tha phim chuot phairdquoEnd IfIf Button = 4 ThenPrint ldquoBan vua tha phim chuot giuardquoEnd IfEnd SubViacute dụ 3 Sử dụng sự kiện MouseMove để vẽ caacutec đường trograven liecircn tục trecircn biểu mẫu Sự kiện Form_MouseMove được xử lyacutePrivate Sub Form_MouseMove(Button As Integer amp _Shift As Integer X As Single Y As Single)

Circle (X Y) 50End Sub

Circle (X Y) 50End Sub