Mục lục
1 Giới thiệu về Visual Basic 6 2
1.1 Visual Basic là gì? 3
1.2 Các bản Visual Basic (Visual Basic Editions) 3
1.3 Cài đặt VB6 5
1.4 Tìm kiếm trợ giúp khi sử dụng VB6 6
2 Phát triển một ứng dụng với Visual Basic 7
2.1 Một số khái niệm cơ bản trong lập trình Windows 8
2.2 Mô hình hướng sự kiện 9
2.3 Phát triển tương tác 10
2.4 Môi trường phát triển tích hợp 11
2.5 Các bước cơ bản xây dựng chương trình 14
2.6 Chương trình Hello 15
2.7 Làm việc với Project 21
2.7.1 Project Explorer 21
2.7.2 Tạo, mở, lưu trữ một project 22
2.7.3 Đặt tuỳ chọn cho Project 22
3 Form và Control 24
3.1 Thuộc tính, sự kiện, phương thức 25
3.2 Form Error! Bookmark not defined.
3.2.1 Đặt giá trị thuộc tính cho form 27
3.2.2 Phương thức và sự kiện của form 28
3.3 Command button 29
3.4 Label Error! Bookmark not defined.
3.5 Text box 32
3.6 Check box 34
3.6.1 Chương trình ví dụ về Check box 34
3.7 Option Button và nhóm Option Button 36
3.7.1 Tạo nhóm Option Button 36
3.7.2 Chương trình ví dụ về Options 37
3.8 List box và Combo box 39
3.9 Các control khác 40
3.10 Focus Error! Bookmark not defined.
3.10.1 Sự kiện Validate của các control 43
3.10.2 Control không thể nhận focus 43
3.11 Đặt Tab Order 44
3.11.1 Bỏ một control ra khỏi Tab Order 45
3.12 Dialog Box 46
4 Khái niệm cơ sở về lập trình 47
4.1 Cơ bản về chương trình hướng sự kiện 47
4.2 Các module mã lệnh trong Visual Basic 49
4.2.1 Module Form 50
4.2.2 Module Standard 50
4.2.3 Module Class 50
4.3 Sử dụng Code Editor 51
4.4 Qui ước viết lệnh trong Visual Basic 53
4.4.1 Chia 1 lệnh thành nhiều dòng 53
4.4.2 Nối nhiều lệnh vào 1 dòng 53
4.4.3 Thêm chú giải vào mã lệnh 53Môc lôc
95
4.4.4 Hệ thống số 54
4.4.5 Qui tắc đặt tên 55
4.5 Biến số 56
4.5.1 Khai báo biến 56
4.5.2 Khai báo không tường minh 56
4.5.3 Khai báo tường minh 57
4.6 Hằng số 58
4.6.1 Tự khai báo 1 hằng số: 58
4.6.2 Phạm vi hằng số do người dùng định nghĩa 58
4.7 Kiểu dữ liệu 59
4.7.1 Khai báo biến với kiểu dữ liệu 59
4.7.2 Dữ liệu kiểu số 59
4.7.3 Kiểu Byte 59
4.7.4 Kiểu dữ liệu chuỗi 60
4.7.5 Trao đổi giữa chuỗi và số 60
4.7.6 Kiểu dữ liệu logic 61
4.7.7 Kiểu dữ liệu thời gian 61
4.7.8 Kiểu dữ liệu đối tượng 62
4.7.9 Kiểu dữ liệu Variant 62
4.7.10 Kiểu dữ liệu do người dùng tự định nghĩa 62
4.8 Mảng Error! Bookmark not defined.
4.8.1 Khai báo mảng tĩnh 63
4.8.2 Mảng chứa các mảng 63
4.8.3 Mảng nhiều chiều 63
4.9 Hàm và thủ tục 65
4.9.1 Khai báo hàm và thủ tục 65
4.9.2 Tạo 1 hàm/thủ tục chung: 66
4.9.3 Gọi 1 thủ tục 66
4.9.4 Gọi 1 hàm 66
4.9.5 Gọi hàm/thủ tục từ module khác 66
4.9.6 Truyền tham số cho hàm/thủ tục: 66
4.10 Cấu trúc điều khiển 68
4.10.1 Cấu trúc phân nhánh 68
4.10.2 Cấu trúc lặp 70
4.10.3 Làm việc với cấu trúc điều khiển 72
5 Khái niệm cơ sở về lập trình (tiếp) 74
5.1 Qui ước về cách đặt tên biến 75
5.2 Phạm vi của biến 78
5.2.1 Biến sử dụng trong 1 hàm/thủ tục 78
5.2.2 Biến sử dụng trong phạm vi 1 module 79
5.2.3 Biến sử dụng trong tất cả các module 79
5.3 Một số vấn đề khi sử dụng biến và hằng 80
5.3.1 Nhiều biến với cùng 1 tên 80
5.3.2 Biến công cộng và biến địa phương 82
5.3.3 Biến thuộc tính form và control 83
5.3.4 Tránh tham chiếu vòng 84
5.4 Chuyển đổi kiểu dữ liệu 85
5.5 Kiểu dữ liệu Variant 86
5.5.1 Giá trị Empty 86
5.5.2 Giá trị Null 86Môc lôc
96
5.5.3 Kiểm tra kiểu dữ liệu 87
5.6 Mảng động 88
5.6.1 Cách tạo 1 mảng động 88
5.6.2 Bảo tồn giá trị 1 mảng động 88
5.7 Truyền tham số cho hàm/thủ tục 89
5.7.1 Truyền tham số bằng giá trị 89
5.7.2 Truyền tham số bằng tham chiếu 90
5.7.3 Sử dụng các tham số tuỳ chọn 91
5.7.4 Đặt giá trị mặc định cho tham số tuỳ chọn 91
5.7.5 Sử dụng số tham với số lượng không định trước 92
5.8 Sử dụng biến Object 93
96 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 416 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Phát triển ứng dụng với Visual Basic 6, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g 1 frame, và
frame này được chứa trong 1 form
Thực sự, mỗi khi vẽ 1 control lên form, mỗi control thường chứa 1
thuộc tính Parent chỉ tới form mà control được đặt trên.
Các thuộc tính Left và Top chẳng hạn sẽ xác định vị trí tương đối của
control trong form cha.
3.7.2 Chương trình ví dụ về Options
Xây dựng chương trình với giao diện:
Form vµ Control
38
Bảng các đối tượng và thuộc tính:
Đối tượng Thuộc tính Giá trị
Label Name
Caption
LblDisplay
(Empty)
Command button Name
Caption
CmdClose
&Close
Option button 1 Name
Caption
opt486
&486
Option button 2 Name
Caption
Value
opt586
&Pentium
True
Option button 3 Name
Caption
opt686
P&entium Pro
Frame Name
Caption
fraSystem
&Operating System
Option button 4 Name
Caption
optWin95
Windows 95
Option button 5 Name
Caption
Value
optWinNT
Windows NT
True
Các thủ tục sự kiện:
Private Sub opt586_Click()
strComputer = "Pentium"
Call DisplayCaption
End Sub
Sub DisplayCaption()
lblDisplay.Caption = "You selected a " & _
strComputer & " running " & strSystem
End Sub
Form vµ Control
39
3.8 List box và Combo box
Listbox (hộp danh sách) và combo box (hộp kéo thả) sử dụng để liệt
kê các lựa chọn cho người dùng.
Listbox và combox, khác với text
box, chứa nhiều giá trị. Hai control này có sẵn các phương thức
để thêm, bớt, lấy giá trị từ chúng. Đoạn lệnh sau thêm 3 giá trị và 1 list
box:
lstCity.AddItem "Paris"
lstCity.AddItem "New York"
lstCity.AddItem "San Francisco"
Form vµ Control
40
3.9 Các control khác
• Picture Box Control: Hiển thị kết quả của chương trình, ngoài ra
còn hiển thị hình ảnh qua thuộc tính Picture chứa tên tệp ảnh và
đường dẫn.
picMain.Picture = LoadPicture("VANGOGH.BMP")
Picture box cũng được dùng như đối tượng chứa các control khác
• Lightweight Graphical Control: Các control image, shape và line
được gọi là các lightweight controls; chúng hỗ trợ 1 tập các các
propertie, method, và events của picture box. Do đó, chúng cần ít
tài nguyên máy tính và sẽ được nạp nhanh hơn picture box.
Chương trình ví dụ sử dụng Image control
Tạo chương trình với giao diện sau (xem Images.frm trong
Controls.vbp tại thư mục Samples).
• Các đối tượng truy nhập CSDL (Data Access Control)
• ADO Data control
• DataList control
• DataCombo control
• DataGrid
• Microsoft FlexGrid control, Hierarchical FlexGrid control
Form vµ Control
41
• Các đối tượng Hệ thống tệp (File System Control)
• DriveListBox control
• DirListBox control
• FileListBox control
• Các đối tượng không phân loại (Miscellaneous Control)
• Timer control
• OLE container control
• Common dialog control
Form vµ Control
42
3.10 Focus
Focus là khả năng được nhận input của người dùng từ chuột hoặc
bàn phím. Trong giao diện Microsoft Windows, vài ứng dụng có thể
cùng chạy trong cùng thời điểm, nhưng chỉ ứng dụng có focus sẽ có
title bar ở trạng thái hoạt động và có thể nhận input của người dùng.
Trên một form Visual Basic với một số text box, chỉ text box có focus
hiện văn bản gõ vào từ bàn phím.
Các sự kiện GotFocus và LostFocus xảy ra khi một
đối tượng nhận hoặc mất focus. Form và hầu hết các control hỗ trợ
các sự kiện này.
Sự kiện Mô tả
GotFocus Xảy ra khi một đối tượng nhận focus.
LostFocus Xảy ra khi một đối tượng mất focus. Một thủ tục
cho sự kiện LostFocus thường được dùng để
thẩm định và kiểm định các cập nhật, hoặc để
đảo/đổi điều kiện ta đặt trong thủ tục GotFocus
của đối tượng.
Ta có thể gán focus cho 1 đối tượng bằng cách:
• Chọn đối tượng trong khi chạy.
• Sử dụng một access key (ví dụ: tab) để chọn đối tượng trong
khi chạy.
• Sử dụng phương thức SetFocus trong mã chương
trình.
Form vµ Control
43
Một đối tượng chỉ có thể nhận focus khi các thuộc tính Enabled
và Visible của nó có giá trị True. Thuộc tính Enabled cho phép
đối tượng hưởng ứng các sự kiện do người dùng gây ra (bằng chuột
hoặc bàn phím). Thuộc tính Visible quyết định xem đối tượng có
được hiện trên màn hình hay không.
Lưu ý Một form chỉ có thể nhận focus nếu nó không chứa control có
thể nhận focus.
3.10.1 Sự kiện Validate của các control
Sự kiện Validate (kiểm tra) của control cũng xảy ra trước khi nó mất
focus. Tuy nhiên, sự kiện này chỉ có thể xảy ra nếu thuộc tính
CausesValidation của control nhận focus có giá trị
True. Trong nhiều trường hợp, do sự kiện Validate xảy ra trước khi
mất focus, dùng sự kiện này cho việc thẩm định dữ liệu thích hợp hơn
LostFocus.
3.10.2 Control không thể nhận focus
Một số control, chẳng hạn lightweight control, không thể nhận focus.
Các lightweight control bao gồm:
• Frame control
• Image control
• Label control
• Line control
• Shape control
Thêm vào đó là các control không hiện ra khi chạy, chẳng hạn
Timer control, cũng không thể nhận focus.
Form vµ Control
44
3.11 Đặt Tab Order
Tab order (thứ tự Tab) là thứ tự mà người dùng di chuyển từ control
này sang control khác bằng cách nhấn phím TAB. Mỗi form có một tab
order của riêng nó. Thông thường, tab order là thứ tự ta tạo các
control.
Để thay đổi tab order cho một control, đặt thuộc tính
TabIndex. Thuộc tính TabIndex của một control quyết định vị
trí của nó trong tab order. Mặc định, control đầu tiên được vẽ
có TabIndex bằng 0, cái thư hai có TabIndex bằng 1,
...
Control
TabIndex trước khi sửa TabIndex sau khi sửa
Text1 0 1
Text2 1 2
Command1 2 0
Chú ý: Control không thể nhận focus, hoặc bị disabled hay
được đặt trạng thái không hiện, không có thuộc tính TabIndex
property và không có trong tab order. Khi người dùng nhấn
phím TAB key, các control này bị bỏ qua.
Form vµ Control
45
3.11.1 Bỏ một control ra khỏi Tab Order
Ta có thể bỏ một control ra khỏi tab order bằng cách đặt thuộc tính
TabStop bằng False (0).
Một control có thuộc tính TabStop bằng False giữ
nguyên vị trí trong tab order.
Chú ý: Một nhóm các option button có một
tabstop duy nhất. Nút được chọn (button có Value
bằng True) có TabStop được tự động
gán bằng True, trong khi đó, các nút khác có TabStop bằng
False.
Form vµ Control
46
3.12 Dialog Box
Dialog box dùng để hỏi người dùng dữ liệu cần thiết hoặc dùng để
hiện thông tin cho người dùng. Dialog box là một kiểu đối tượng form
đặc biệt mà có thể tạo theo 3 cách:
Predefined dialog box có thể được tạo từ mã chương trình sử dụng
các hàm MsgBox, InputBox.
Customized dialog box có thể được tạo từ form chuẩn hoặc sửa
một dialog box sẵn có.
Standard dialog box, chẳng hạn Print và File Open, có thể được tạo
từ common dialog control.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
47
4 Khái niệm cơ sở về lập trình
• Cơ bản về chương trình hướng sự kiện
• Các module mã lệnh trong Visual Basic
• Sử dụng Code Editor
• Qui ước viết lệnh
• Biến số và hằng số
• Kiểu dữ liệu
• Mảng
• Hàm và thủ tục
• Cấu trúc điều khiển
4.1 Cơ bản về chương trình hướng
sự kiện
Một sự kiện là 1 hành động nhận biết được bởi form và control.
Chương trình hướng-sự kiện gọi đoạn mã lệnh Basic để đáp ứng 1 sự
kiện. Mỗi form và control trong Visual Basic có 1 tập xác định trước
các sự kiện. Nếu một trong số những sự kiện đó xảy đến và có mã
lệnh gắn với thủ tục sự kiện, Visual Basic sẽ gọi đoạn lệnh đó.
Mặc dù đối tượng trong Visual Basic tự động nhận ra tập định nghĩa
trước các sự kiện, lập trình viên mới là người quyết định các đối
tượng có đáp ứng hay không và đáp ứng thế nào với 1 sự kiện cụ thể.
Mỗi sự kiện có 1 phần mã lệnh tương ứng với nó dưới dạng 1 thủ tục
đáp ứng sự kiện. Để điều khiển các 1 đối tượng đáp ứng 1 sự kiện,
chúng ta cần viết mã lệnh với thủ tục sự kiện tương ứng.
Trình tự hoạt động của 1 chương trình hướng-sự kiện thường như
sau:
1. Chương trình khởi động, form được nạp và hiển thị.
2. Form hay control trên form nhận được 1 sự kiện tác động. Sự
kiện đó có thể gây ra bởi người dùng (nhấn 1 phím), bởi hệ
thống (1 sự kiện gây ra bởi bộ định giờ timer), hay trực tiếp bởi
mã lệnh của ta.
3. Nếu có phần mã lệnh tương ứng với thủ tục sự kiện, nó sẽ được
gọi.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
48
4. Chương trình chờ cho sự kiện kế tiếp.
Chú ý: Nhiều sự kiện xảy ra liên quan tới những sự kiện khác. Ví dụ,
khi sự kiện DblClick xảy ra, sự kiện MouseDown, MouseUp, và Click
cũng xảy ra.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
49
4.2 Các module mã lệnh trong Visual
Basic
Mã lệnh trong Visual Basic được lưu trong các module. Có 3 loại
module: form, standard, và class.
Chương trình đơn giản chỉ gồm 1 form và tất cả mã lệnh của chương
trình nằm trong module form. Khi chương trình phức tạp thêm, lớn
hơn, sự có nhiều form hơn. Sẽ có phần mã lệnh có thể dùng chung
giữa các form. Để tránh trùng lặp, chúng có thể được đưa vào module
tách riêng các form – gọi là module standard. Dần dần, chúng ta có
thể sẽ xây dựng 1 thư viện các module chứa các thủ tục dùng chung.
Mỗi module standard, class và form có thể chứa:
• Phần khai báo – Declarations: Chứa khai báo Hằng số, kiểu,
biến hay thư viện kết nối động (dynamic-link library – DLL).
• Phần các thủ tục – Procedures: Chứa thủ tục, hàm số, thủ tục
thuộc tính có thể được gọi trong mỗi module.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
50
4.2.1 Module Form
Module form (trong các tệp *.FRM) chứa chứa các thủ tục đáp ứng sự
kiện trên form, các thủ tục dùng chung trong form, các khai báo ở mức
form về: biến, hằng, kiểu, thủ tục bên ngoài. Mã lệnh trong mỗi form
được dùng riêng trong form đó và đôi khi mã lệnh trong 1 form có thể
tham chiếu tới các form khác.
4.2.2 Module Standard
Module standard (trong các tệp *.BAS) chứa thủ tục và khai báo truy
nhập được bởi các module khác trong chương trình, hay thậm chí bởi
các chương trình khác nhau.
4.2.3 Module Class
Modules class (trong các tệp *.CLS) là cơ sở lập trình hướng đối
tượng trong Visual Basic. Chúng ta viết mã lệnh trong module class để
tạo những đối tượng mới với những thuộc tính và phương thức riêng.
Thực ra, form chính là các module class, nơi có thể đặt các control và
hiển thị các cửa sổ form.
Chú ý: ActiveX Documents, ActiveX Designers, và User Controls: là
những loại module mở rộng (với tên tệp có phần mở rộng khác). Có
thể xem những module đó tương tự như module form.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
51
4.3 Sử dụng Code Editor
Code Editor của Visual Basic là một cửa sổ nơi ta viết phần lớn mã
chương trình. Nó giống một trình soạn thảo được chuyên hoá cao với
nhiều tính năng tạo thuận lợi cho việc viết mã Visual Basic.
Một cửa sổ riêng được mở cho mỗi module ta chọn từ Project
Explorer. Mã nằm trong mỗi module được chia thành các phần riêng
cho từng đối tượng trong module.
Mỗi module form gồm:
- Phần general: chứa phần khai báo và các thủ tục dùng chung.
- Phần thủ tục sự kiện cho từng đối tượng.
Để truy nhập tới phần mã lệnh cần viết, nên sử dụng hộp combo box
trái rồi hộp combo box phải.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
52
Visual Basic có chức năng Auto Code Completion giúp viết mã lệnh
trong Code Editor được dễ dàng.
Để chọn phần từ nào đó, chuyển thanh sáng tới đó, rồi nhấn TAB.
Ngoài ra, chức năng Bookmarks giúp đánh dấu 1 vị trí mã lệnh để có
thể quay lại được nhanh chóng (Edit | Bookmarks).
Kh¸i niÖm c¬ së vÒ lËp tr×nh
53
4.4 Qui ước viết lệnh trong Visual
Basic
4.4.1 Chia 1 lệnh thành nhiều dòng
Bằng cách sử dụng ký tự: [ _ ]
dtaTilesOfPublishers.RecordSource = _
"SELECT * FROM Titles, Publishers" _
& "WHERE Publishers.PubId = Titles.PubID" _
& "AND Publishers.State = 'CA'"
Trong một số trường hợp cách chia 1 câu lệnh này không thực hiện
được: nối các dòng chú giải, ...
4.4.2 Nối nhiều lệnh vào 1 dòng
Bằng cách sử dụng kí tự: [ : ]
txtMsg.Text = "Hello" : Red = 255 : txtMsg.BackColor = _
Red
4.4.3 Thêm chú giải vào mã
lệnh
Bằng cách sử dụng kí tự: [ ‘ ]
' This is a comment beginning at the left edge of the
' screen.
txtMsg.Text = "Hi!" ' Place friendly greeting in
' text box.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
54
4.4.4 Hệ thống số
Cơ số 10
(Decimal)
Cơ số 8
(Octal)
Cơ số 16
(Hexadecimal
)
9 &O11 &H9
15 &O17 &HF
16 &O20 &H10
20 &O24 &H14
255 &O377 &HFF
Kh¸i niÖm c¬ së vÒ lËp tr×nh
55
4.4.5 Qui tắc đặt tên
Tên thủ tục, hàm, biến, hằng phải tuân theo
qui tắc:
• Bắt đầu bằng kí tự chữ
• Không chứa ký tự phân cách (như [ . ]
hay kí tự rỗng), ký tự khai báo kiểu.
• Không dài hơn 255 kí tự. Tên của
control, forms, class, và module không
vượt quá 40 kí tự.
• Không trùng với các từ khoá của ngôn
ngữ.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
56
4.5 Biến số
Biến số là nơi lưu trữ tạm thời giá trị. Biến thường được định nghĩa
bởi người sử dụng. Chúng ta có thể xem các thuộc tính của 1 đối
tượng như biến.
ApplesSold = 10
ApplesSold = ApplesSold + 1
txtSales.txt = ApplePrice * ApplesSold
4.5.1 Khai báo biến
Dim variablename [As type]
Biến khai báo với Dim trong 1 thủ tục tồn tại khi thủ tục đó được chạy;
Khi thủ tục kết thúc, giá trị của biến đó được giải phóng; Tức biến này
có phạm vi địa phương (local) trong thủ tục mà nó được khai báo.
Phạm vi cơ bản của biến:
• Biến khai báo trong phần Declarations của 1
module form, standard, hay
class, chứ không phải bên trong 1 thủ tụccó thể được sử
dụng bởi mọi thủ tục trong module.
• Biến khai báo với từ khoá Public sử dụng được trong toàn
chương trình.
• Biến khai báo với từ khoá Static vẫn lưu tiếp giá trị của nó ngay
cả khi thủ tục chứa khai báo của nó đã kết thúc.
Chú ý: Trong 1 phạm vi, không được có 2 biến khai báo trùng tên.
4.5.2 Khai báo không tường minh
Trong Visual Basic, biến có thể không khai báo trước khi sử dụng:
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TempVal)
End Function
Kh¸i niÖm c¬ së vÒ lËp tr×nh
57
Tuy nhiên, điều này dễ dẫn sinh lỗi trong chương trình:
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)
End Function
4.5.3 Khai báo tường minh
Nên luôn khai báo biến trước khi sử dụng.
Để yêu cầu Visual Basic luôn kiểm tra biến phải được khai báo trước
khi sử dụng:
- Đặt câu lệnh sau vào phần Declarations của 1
module class, form, hay standard:
Option Explicit
- Hay từ menu Tools, chọn Options, nhấn chọn tab Editor rồi
đánh dấu chọn Require Variable Declaration. Sau đó, câu
lệnh Option Explicit sẽ luôn được chèn tự động.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
58
4.6 Hằng số
Có 2 kiểu hằng số
• Hằng số cơ sở hay định nghĩa trước bởi hệ thống
• Hằng số do người dùng định nghĩa
4.6.1 Tự khai báo 1 hằng số:
[Public|Private] Const constantname
[As type] = expression
Ví dụ:
Const conPi = 3.14159265358979
Public Const conMaxPlanets As Integer = 9
Const conReleaseDate = #1/1/95#
4.6.2 Phạm vi hằng số do người dùng định
nghĩa
• Hằng khai báo trong 1 thủ tục có phạm vi
chỉ trong thủ tục đó
• Hằng khai báo trong phần Declarations
của 1 module có phạm vi trong toàn
module.
• Hằng khai báo trong phần Declarations
của 1 module với từ khoá Public có
phạm vi trong toàn chương trình.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
59
4.7 Kiểu dữ liệu
4.7.1 Khai báo biến với kiểu dữ liệu
Biến thường được khai báo trước với kiểu dữ liệu định sẵnVí dụ:
Private I As Integer
Dim Amt As Double
Static YourName As String
Public BillsPaid As Currency
Private I As Integer, Amt As Double
Nếu kiểu biến không nêu rõ, biến sẽ có kiểu là Variant.
Private v
4.7.2 Dữ liệu kiểu số
Integer
Long
Single
Double
Currency
4.7.3 Kiểu Byte
Byte
Khi biến số chứa dữ liệu nhị phân, nên khai báo nó thành mảng các
dữ liệu kiểu byte. Điều đó giúp giữ được khuôn dạng dữ liệu trong quá
trình chuyển đổi.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
60
4.7.4 Kiểu dữ liệu chuỗi
String
Ví dụ:
Dim S as String
S = "Database"
S = Left(S, 4)
Mặc định, biến chuỗi có độ dài biến đổi phù hợp với giá trị nó lưu trữ.
Để khai báo 1 biến chuỗi có độ dài cố định, sử dụng cú pháp:
String * size
Ví dụ:
Dim EmpName As String * 50
Nếu biến EmpName được gán bằng 1 chuỗi ít hơn 50 kí tự, nó sẽ
được chèn vào các kí tự trắng cho đủ 50. Còn nếu biến EmpName
được gán bằng 1 chuỗi nhiều hơn 50 kí tự, Visual Basic sẽ cắt ngắn
lại.
Do chuỗi có độ dài cố định có thể được chèn thêm các kí tự trắng,
chúng ta có thể cần tới các hàm Trim, RTrim để loại bỏ các kí
tự trắng.
Chuỗi có độ dài cố định có thể được khai báo Public hay
Private trong module standard. Trong
module form hay module class, chuỗi có
độ dài cố định chỉ có thể được khai báo Private.
4.7.5 Trao đổi giữa chuỗi và số
Visual Basic có thể tự động chuyển đổi dữ liệu giữa kiểu số và chuỗi.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
61
Ví dụ:
Private Sub Command1_Click()
Dim intX As Integer
Dim strY As String
strY = "100.23"
intX = strY ' Passes the string to a numeric
' variable.
lstNum.AddItem Cos(strY) ' Adds cosine of number in
' the string to the listbox.
strY = Cos(strY) ' Passes cosine to the
' string variable.
txtStr.Text = strY ' String variable prints in
' the text box.
End Sub
Tuy nhiên, chúng ta phải luôn cẩn thận, bởi khi trao đổi giữa chuỗi và
số, lỗi có thể nảy sinh khi chuỗi số chứa giá trị không ở khuôn dạng
số.
4.7.6 Kiểu dữ liệu logic
Boolean True/False
4.7.7 Kiểu dữ liệu thời gian
Giá trị về ngày tháng, hay thời gian có thể được lưu trữ trong kiểu dữ
liệu Date hay trong Variant.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
62
4.7.8 Kiểu dữ liệu đối tượng
Biến đối tượng được lưu trữ thành địa chỉ 32-bit. Địa chỉ này tham trỏ
tới đối tượng trong chương trình, hay tới đối tượng trong chương trình
khác.
Dim objDb As Object
Set objDb = OpenDatabase("c:\Vb5\Biblio.mdb")
4.7.9 Kiểu dữ liệu Variant
Biến kiểu Variant có thể lưu trữ dữ liệu có kiểu bất kỳ. Chúng ta không
phải chuyển đổi giữa các kiểu dữ liệu nếu chúng ta gán chúng cho 1
biến kiểu Variant.
4.7.10 Kiểu dữ liệu do người dùng tự định nghĩa
Chúng ta có thể định nghĩa những kiểu dữ liệu mới, tương tự như khái
niệm Record trong Pascal.
Kh¸i niÖm c¬ së vÒ lËp tr×nh
63
4.8 Mảng
Trong Visual Basic, có 2 kiểu mảng: mảng tĩnh với kích thước cố định
và mảng động với kích thước có thể thay đổi khi chạy.
4.8.1 Khai báo mảng tĩnh
Dim Counters(14) As Integer
Public Sums(20) As Double
Khi đó, mảng Counters có 15 phần tử với chỉ số từ 0 tới 15, mảng
Sums có 21 phần từ 0 tới 20
Để chỉ rõ phạm vi chỉ số, có thể khai báo:
Dim Counters(1 To 15) As Integer
Dim Sums(100 To 120) As String
4.8.2 Mảng chứa các mảng
Có thể tạo mảng các Variant, và sau đó gán giá trị cho nó với mảng
của các kiểu dữ liệu khác. Ví dụ tạo 2 mảng, một chứa các số nguyên
và một chứa các chuỗi. Sau đó khai báo mảng thứ 3 chứa các Variant
và gán giá trị với nó từ mảng số nguyên và mảng chuỗi.
Private Sub Command1_Click()
Dim intX As Integer ' Declare counter variable.
' Declare and populate an integer array.
Dim countersA(5) As Integer
For intX = 0 To 4
countersA(intX) = 5
Next intX
' Declare and populate a string array.
Dim countersB(5) As String
For intX = 0 To 4
countersB(intX) = "hello"
Next intX
Dim arrX(2) As Variant ' Declare a new two-member
' array.
arrX(1) = countersA() ' Populate the array with
' other arrays.
arrX(2) = countersB()
MsgBox arrX(1)(2) ' Display a member of each
' array.
MsgBox arrX(2)(3)
End Sub
4.8.3 Mảng nhiều chiều
Với Visual Basic, chúng ta có thể khai báo các mảng nhiều chiều:
Kh¸i niÖm c¬ së vÒ lËp tr×nh
64
Static MatrixA(9, 9) As Double
Dim MultiD(3, 1 To 10, 1 To 15)
Kh¸i niÖm c¬ së vÒ lËp tr×nh
65
4.9 Hàm và thủ tục
Phân chia chương trình thành hàm và thủ tục có 2 lợi ích chính:
• Chia chương trình thành các khối logic tách rời, mỗi khối dễ
dàng được viết và gỗi lỗi hơn nếu viết cả chương trình lớn.
• Một hàm/thủ tục có thể được sử dụng nhiều lần.
Trong Visual Basic có một số kiểu hàm/thủ tục sau:
• Thủ tục không trả về giá trị: thủ tục chung và thủ tục sự kiện.
• Hàm có trả về giá trị.
• Thủ tục thuộc tính có thể trả về và gán giá, và gán tham chiếu
tới các đối tượng.
4.9.1 Khai báo hàm và thủ tục
Cú pháp khai báo 1 thủ tục:
[Private|Public][Static]Sub procedurename (arguments)
statements
End Sub
Cú pháp khai báo 1 hàm:
[Private|Public][Static]Function procedurename (arguments) [As type]
statements
End Function
Kh¸i niÖm c¬ së vÒ lËp tr×nh
66
4.9.2 Tạo 1 hàm/thủ tục chung:
• Gõ vào phần đầu hàm/thủ tục vào cửa sổ Code, với dạng sau
Sub UpdateForm ()
Function GetCoord ()
• Visual Basic sẽ hoàn tất thủ tục theo khuôn mẫu
4.9.3 Gọi 1 thủ tục
Có 2 cách như sau:
' Both of these statements call a Sub named MyProc.
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
4.9.4 Gọi 1 hàm
' All of the following statements would call a function
' named ToDec.
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction(10 * ToDec)
Chúng ta cũng có thể gọi 1 hàm như cách chúng ta gọi 1 thủ tục:
Call Year(Now)
Year Now
Khi đó, Visual Basic sẽ in ra giá trị trả về từ hàm Year.
4.9.5 Gọi hàm/thủ tục từ module khác
- trong module form
Call Form1.SomeSub(arguments)
- trong module class
Dim DemoClass as New Class1
DemoClass.SomeSub
- trong module standard
Module2.CommonName(arguments)
4.9.6 Truyền tham số cho hàm/thủ tục:
Function WhatsForLunch(WeekDay As String, Hour _
As Integer) As String
Kh¸i niÖm c¬ së vÒ lËp tr×nh
67
' Returns a lunch menu based on the day and time.
If WeekDay = "Friday" then
WhatsForLunch = "Fish"
Else
WhatsForLunch = "Chicken"
End If
If Hour > 4 Then WhatsForLunch = "Too late"
End Function
Kh¸i niÖm c¬ së vÒ lËp tr×nh
68
4.10 Cấu trúc điều khiển
4.10.1 Cấu trúc phân nhánh
• If...Then
• If...Then...Else
• Select Case
If...Then
If condition Then statement
If condition Then
statements
End If
If...Then...Else
If condition1 Then
[statementblock-1]
[ElseIf condition2 Then
[statementblock-2]] ...
[Else
[statementblock-n]]
End If
Select Case
Select Case testexpression
[Case expressionlist1
[statementblock-1]]
[Case expressionlist2
[statementblock-2]]
.
.
.
[Case Else
[statementblock-n]]
End Select
Ví dụ:
Private Sub mnuCut_Click (Index As Integer)
Select Case Index
Case 0 ' Cut command.
CopyActiveControl ' Call general procedures.
ClearActiveControl
Case 1 ' Copy command.
CopyActiveControl
Case 2 ' Clear command.
ClearActiveControl
Kh¸i niÖm c¬ së vÒ lËp tr×nh
69
Case 3 ' Paste command.
PasteActiveControl
Case Else
frmFind.Show ' Show Find dialog box.
End Select
End Sub
Kh¸i niÖm c¬ së vÒ lËp tr×nh
70
4.10.2 Cấu trúc lặp
• Do...Loop
• For...Next
• For Each...Next
Do...Loop
Do While condition ‘ Loop until condition is True
statements
Loop
Do
statements
Loop While condition ‘ Loop until condition is True
Ví dụ:
Function CountStrings (longstring, target)
Dim position, count
position = 1
Do While InStr(position, longstring, target)
position = InStr(position, longstring, target)_
+ 1
count = count + 1
Loop
CountStrings = count
End Function
Hai biến dạng khác của lặp với số bước không định trước, chỉ khác là
quá trình lặp tiếp tục khi điều kiện là False:
Lặp 0 hay nhiều lần Lặp ít nhất 1 lần
Do Until condition
statements
Loop
Do
statements
Loop Until condition
For...Next
For counter = start To end [Step increment]
statements
Next [counter]
Ví dụ:
Private Sub Form_Click ()
Dim I As Integer
Kh¸i niÖm c¬ së vÒ lËp tr×nh
71
For i = 0 To Screen.FontCount
Print Screen.Fonts(i)
Next
End Sub
Sub HighlightButton(MyControl As Variant)
Dim i As Integer
For i = 0 To frmVCR.Controls.Count - 1
If TypeOf frmVCR.Controls(i) Is Shape Then
If frmVCR.Controls(i).Name = MyControl Then
frmVCR.Controls(i).Visible = True
Else
frmVCR.Controls(i).Visible = False
End If
End If
Next
End Sub
For Each...Next
Tương tự như For ... Next, nhưng nó duyệt qua các phần tử trong 1
object collection hay trong 1 mảng, chứ không phải duyệt theo số lần
đếm định trước. Điều đó có ích khi chúng ta không biết trước số phần
tử trong nhóm cần duyệt.
For Each element In group
statements
Next element
Ví dụ:
Sub ListTableDefs()
Dim objDb As Database
Dim MyTableDef as TableDef
Set objDb = OpenDatabase("c:\vb\biblio.mdb", _
True, False)
For Each MyTableDef In objDb.TableDefs()
List1.AddItem MyTableDef.Name
Next MyTableDef
End Sub
Chú ý rằng khi sử dụng For Each...Next:
• Với collection, phần tử (element) chỉ có thể là: biến Variant, biến
Object, hay 1 object được liệt kê trong Ob
Các file đính kèm theo tài liệu này:
- giao_trinh_phat_trien_ung_dung_voi_visual_basic_6.pdf