(được lưu với đuôi *.bas). Các chương trình con được lặp đi lặp lại để đáp ứng các sự kiện khác nhau của các điều khiển khác nhau thường được đặt trong module chuẩn.
Module lớp (Class module): được sử dụng để tạo các đ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 mã lệnh nhưng module lớp chứa cả mã lệnh và dữ liệu, chúng có thể được coi là các điều khiển do người lập trình tạo ra (được lưu với đuôi *.cls).
2.21.1 Bổ sung Standard Module vào Project
Từ menu Project chọn Add Module. Muốn tạo mới chọn Tab New sau đó chọn Open. Muốn chọn một tệp tin có sẵn chọn nhãn Existing, chọn tên tệp tin và chọn Open.
2.21.2. Khai báo trong module
odule chứa các khai báo kiểu, hằng, biến, thủ tục/hàm thuộc phạm vi Public hoặc ở mức mô-đun.
Biến Module là biến được định nghĩa trong phần khai báo (General|Declaration) của Module và mặc nhiên phạm vi hoạt động của nó là toàn bộ Module ấy.
Biến Module được khai báo bằng từ khóa Dim hay Private và được đặt trong phần khai báo của Module.
Ví dụ:
Private Num As Integer
Tuy nhiên, các biến Module này có thể được sử dụng bởi các chương trình con trong các Module khác. Muốn thế chúng phải được khai báo là Public trong phân Khai báo (General|Declaration) của Module.
Ví dụ:
Public Num As Integer
Lưu ý: Không thể khai báo biến với từ khóa là Public trong chương trình con.
2.22. Xâu ký tự
2.22.1. Khai báo
Khai báo xâu ký tự có độ dài cố định. Cú pháp: Public/Private/Dim Tên_biến As String * <Chiều dài>
Trong trường hợp số ký tự thực có trong xâu ít hơn độ dài khai báo thì một số khoảng trắng sẽ tự động được thêm vào cho đủ độ dài khai báo. Trong trường hợp số ký tự thực có trong xâu nhiều hơn độ dài khai báo thì các ký tự dư thừa bên phải của xâu sẽ bị cắt đi. Một chuỗi không có ký tự nào (độ dài bằng 0) gọi là chuỗi rỗng.
Khai báo xâu ký tự có độ dài thay đổi.
Cú pháp:
Public/Private/Dim Tên_biến As String
Trong trường hợp này xâu có chiều dài tối đa là 65.500 ký tự và các khoảng trắng không được tự động thêm vào khi số ký tự thực có trong xâu ít hơn 65.500.
Ví dụ:
Dim Name As String * 30, Class As String * 10 Dim A As String
2.22.2. Các hàm xử lý xâu ký tự
Giả sử: S, P, Q là các xâu ký tự. n, k là các số nguyên dương
Len(S): Hàm trả về chiều dài của S.
Ví dụ:
Len(“Visual Basic”) sẽ cho kết quả là 12
Ltrim(S): Hàm trả về một chuỗi sau khi xoá bỏ các dấu cách bên trái của S.
Ví dụ:
Ltrim(“ Visual Basic”) sẽ cho kết quả là “Visual Basic”
Rtrim(S): Hàm trả về một chuỗi sau khi xoá bỏ các dấu cách bên phải của S.
Ví dụ:
Rtrim(“Visual Basic ”) sẽ cho kết quả là “Visual Basic”
Trim(S): Hàm trả về một chuỗi sau khi xoá bỏ các khoảng trống bên trái và bên phải của <chuỗi>.
Ví dụ:
Trim(“ Visual Basic ”) sẽ cho kết quả là “Visual Basic”
Left (S, n): Hàm trả về một xâu con gồm n ký tự đầu tiên (bên trái) lấy từ S. Right (S, n): Hàm trả về một xâu con gồm n ký tự cuối cùng (bên phải) lấy từ S. Mid(S, n, k): Hàm trả về một xâu con gồm k ký tự tính từ ký tự thứ n lấy từ S.
InStr(n, S, P [, compare]): Hàm trả về vị trí xuất hiện đầu tiên của xâu P trong xâu S, vị trí tìm kiếm tính từ ký tự thứ n. Nếu không tìm thấy trả về. Tham số Compare xác định kiểu so sánh chuỗi, nó có thể nhận một trong ba giá trị: 0- vbBinaryCompare, 1- vbTextCompare, 2- vbDataBaseCompare.
Ví dụ:
Dim myString As String, Position As Integer myString = "The rain in Spain mainly..." Position = Instr(myString,"ain") ' Position sẽ là 6
Space(n): Hàm trả về một xâu gồm n khoảng trắng.
String(n, <ký tự>): Hàm trả về một xâu gồm n <ký tự> giống nhau.
Ví dụ:
String( 4, “m”) sẽ cho kết quả là “mmmm”
Ucase(S): Hàm trả về một xâu gồm các chữ hoa lấy ra từ S.
Ví dụ:
Ucase(“Ha noi”) sẽ cho kết quả là “HA NOI”
Lcase(S): Hàm trả về một xâu gồm các chữ thường lấy ra từ S.
Ví dụ:
Lcase(“Ha Noi”) sẽ cho kết quả là “ha noi”
Asc(S): Hàm trả về mã ASCII của ký tự đầu tiên trong S.
Ví dụ:
Asc(“Ha noi”) sẽ cho kết quả là 72 là mã ASCII của ký tự “H” Chr(<mã ASCII>): Hàm trả về ký tự tương ứng với <mã ASCII>. Ví dụ:
Chr(72) sẽ cho kết quả là H
Str(n): Hàm trả về xâu ký tự từ số n, xâu này luôn có một ký tự đầu ghi dấu “-“ trong trường hợp số âm, hoặc một khoảng trống trong trường hợp số dương.
Ví dụ:
Str(12345) sẽ cho kết quả là xâu “ 12345”. Str(-12345) sẽ cho kết quả là xâu “-12345”
Replace(S, P, Q, n, k): Hàm trả về một xâu trong đó tính từ vị trí ký tự thứ n xâu P đã được thay thế k lần bởi xâu Q.
Ví dụ:
Replace("ha noi viet nam","a","x") sẽ cho kết quả là xâu “hx noi viet nxm”.
2.23. Mảng
2.23.1. Khai báo mảng
Mảng là một kiểu dữ liệu phổ biến trong các ngôn ngữ lập trình. Mảng dùng để lưu một dãy các biến có cùng tên, cùng kiểu dữ liệu, và các biến này được phân biệt với nhau bởi chỉ số của mảng.
Cú pháp:
Dim <tên mảng> ( <chỉ số 1> [, <chỉ số 2>, … ] ) As <kiểu dữ liệu> Trong đó <chỉ số> có thể có một trong hai dạng sau:
Dạng 1: <Chỉ số> là một số nguyên dương N, khi đó mảng sẽ có chỉ số từ 0 đến
N. <chỉ số> bắt đầu từ 0 hay từ 1 có thể được chúng ta thiết lập qua lệnh Option Base trong phần General của Form hoặc Module như sau:
Option Base 0 ‟Thiết lập chỉ số mảng bắt đầu từ 0
Hoặc
Option Base 1 ‟Thiết lập chỉ số mảng bắt đầu từ 1 Dạng 2: <Chỉ số> có dạng <giá trị đầu> To <giá trị cuối>.
Ví dụ:
Option Base 1
Dim B (1 to 15) As Single, T (1 to 10, 1 to 15) As Integer Dim ds(10) As Double
Khi đó mảng B sẽ có 15 phần tử có chỉ số từ 1 đến 15, các phần tử của mảng có kiểu số thực Single. Mảng T là mảng 2 chiều có kích thước là 10 x 15, chỉ số của chiều thứ nhất từ 1 đến 10, chỉ số của chiều thứ hai từ 1 đến 15, các phần tử của mảng T có kiểu số nguyên Integer. Mảng ds có 10 phần tử, có chỉ số từ 1 đến 10.
2.23.2. Truy xuất các phần tử mảng
Để truy xuất tới từng phần tử của mảng ta dùng tên của mảng cùng với chỉ số của nó.
Ví dụ:
Dim DoanhThu (1 to 12) as Single Dim i as Integer
For i = 1 to 12
Sale = InputBox(“Nhập vào doanh thu của tháng”) DoanhThu = Val(Sale)
Next i
2.23.3. Mảng động và mảng tĩnh
Trường hợp vắng mặt <chỉ số> khi khai báo mảng thì một mảng động sẽ được tạo ra. Khi đó, trước khi sử dụng mảng chúng ta phải thể thiết lập kích thước mảng bằng cách dùng khai báo:
ReDim [Preserve] <tên mảng> (<kích thước>)
Nếu dùng từ khoá Preserve thì mảng cấp phát lại sẽ không xoá dữ liệu đã có trước đó trên mảng. Việc thiết lập lại kích thước(có thể tăng hoặc giảm)của mảng có thể thực hiện bất cứ khi nào ta cần.
Ví dụ:
Dim A ( ) As Integer „Khai báo mảng động ReDim A (5) „Cấp phát 5 phần tử For i = 1 to 5
A(i) = i Next i
ReDim Preserve A (15)„Cấp phát lại 15 phần tử và bảo toàn dữ liệu đã có.
Ví dụ:
Viết chương trình sử dụng điều khiển TextBox, CommandButton, Label thực hiện nhập và hiển thị 2 ma trận vuông cùng cấp sau đó tính và hiển thị tính của hai ma trận theo form mẫu sau:
Giải:
Bước 1. Thiết kế form theo mẫu bằng cách đưa vào form các điều khiển TextBox, CommandButton, Label , sau đó xác định vị trí, kích thước cho các điều khiển cho phù hợp.
Bước 2. Thiết lập một số thuộc tính cho các điều khiển như bảng sau:
Điều khiển | Thuộc tính | Giá trị | Ghi chú | |
1 | Form | Name | Form1 | |
Caption | Tính hai ma trận vuông | |||
2 | CommandButton | Name | cmdnhapA | |
Caption | Nhập A | |||
3 | CommandButton | Name | cmdnhapB | |
Caption | Nhập B | |||
4 | CommandButton | Name | cmdketthuc | |
Caption | Kết thúc | |||
5 | TextBox | Name | txtmta | |
Multiline | True | |||
6 | TextBox | Name | txtmtb | |
Multiline | True |
Có thể bạn quan tâm!
- Các Phép Toán Quan Hệ (Hay Phép So Sánh)
- Ngăn Cách Các Câu Lệnh Trên Một Dòng
- Tham Số Và Việc Truyền Tham Số Cho Chương Trình Con
- Thay Đổi Giá Trị Một Phần Tử Trong Collection
- Lập trình Window - 11
- Thêm Các Phần Tử Vào Trong Hộp Danh Sách.
Xem toàn bộ 248 trang tài liệu này.
7 | TextBox | Name | txttich | |
Multiline | True | |||
8 | Textbox | Name | Txtcap | |
9 | Label | Caption | Cấp của ma trận | |
10 | Label | Caption | Ma trận A | |
11 | Label | Caption | Ma trận B | |
12 | Label | Caption | Tích hai ma trận |
Bước 3. Mở cửa sổ lệnh của Form1 và gò vào các dòng lệnh sau: Dim n As Integer, a() As Integer, b() As Integer, c() As Integer Private Sub txtcap_Change()
cmdnhapA.Enabled = True cmdNhapb.Enabled = True
End Sub
„----------------------------------------------------------------------------------
Private Sub cmdketthuc_Click() End
End Sub
Private Sub cmdnhapa_Click() Dim i As Integer, j As Integer txtmta.Text = ""
n = Val(txtcap.Text) ReDim a(n, n)
For i = 1 To n For j = 1 To n
a(i, j) = InputBox("Nhap phan tu a(" & i & "," & j & ")") txtmta.Text = txtmta.Text & a(i, j) & " "
Next
txtmta.Text = txtmta.Text & Chr(13) & Chr(10) 'xuong hang Next
End Sub
„----------------------------------------------------------------------------------
Private Sub cmdnhapb_Click() Dim i As Integer, j As Integer txtmtb.Text = ""
n = Val(txtcap.Text) ReDim b(n, n)
For i = 1 To n For j = 1 To n
b(i, j) = InputBox("Nhap phan tu b(" & i & "," & j & ")") txtmtb.Text = txtmtb.Text & b(i, j) & " "
Next
txtmtb.Text = txtmtb.Text & Chr(13) & Chr(10) Next
End Sub
„----------------------------------------------------------------------------------
Private Sub cmdtinh_Click()
Dim i As Integer, j As Integer, k As Integer txttich.Text = ""
n = Val(txtcap.Text) ReDim c(n, n)
For i = 1 To n For j = 1 To n c(i, j) = 0
For k = 1 To n
c(i, j) = c(i, j) + a(i, k) * b(k, j)
Next
txttich.Text = txttich.Text & c(i, j) & " "
Next
txttich.Text = txttich.Text & Chr(13) & Chr(10) Next
End Sub
Bước 4. Chạy chương trình (F5).
2.23.4. Mảng đối tượng điều khiển
Visual Basic 6.0 đưa ra khái niệm mảng đối tượng điều khiển trong đó nhiều điều khiển cùng chia sẻ một tập các thủ tục sự kiện cho dù mỗi đối tương trong mảng có các thuộc tính khác nhau. Mảng đối tượng điều khiển được tạo trong lúc thiết kế bằng một trong các cách sau:
Cách 1. Tạo một điều khiển và gán giá trị là một số nguyên dương cho thuộc tính Index của nó.
Cách 2. Ta tạo 2 điều khiển thuộc cùng một lớp sau đó đặt cho 2 đối tượng này với cùng một tên, khi đó sẽ xuất hiện một hộp thoại để xác nhận xem ta có muốn tạo một mảng đối tượng điều khiển hay không. Ta chọn Yes để tạo mảng đối tượng điều khiển.
Cách 3. Chọn một đối tượng trên Form sau đó nhấn Ctrl + C để copy đối tượng vào Clipboard sau đó nhấn Ctrl + V để tạo một thể hiện mới của điều khiển, điều khiển này sẽ có tên trùng với tên của điều khiển gốc, sẽ xuất hiện một hộp thoại như trong cách 2.
Mảng các đối tượng điều khiển là một đặc trưng thú vị của Visual Basic 6.0 chúng làm cho việc lập trình được mềm dẻo hơn:
Các điều khiển trong cùng một mảng cùng chia sẻ một tập các thủ tục sự kiện điều này làm giảm số lượng mã (code) mà ta phải viết để đáp ứng các yêu cầu của người sử dụng. Ta có thể thêm một phần tử mới vào mảng khi thi hành (at run time) hay nói cách khác ta có thể tạo thêm một điều khiển mới mà trong lúc thiết kế ta chưa tạo. Các phần tử trong mảng đối tượng điều khiển chiếm ít tài nguyên hơn so với một đối tượng điều khiển thông thường
Ta có thể gỡ bỏ điều khiển khỏi mảng điều khiển bằng cách sử dụng lệnh Unload.
Ta chỉ có thể gỡ bỏ các điều khiển được tạo ra trong thời gian thực hiện.
2.24. Kiểu Collection
2.24.1. Tạo Collection
Collection là một đối tượng được sử dụng trong các ứng dụng Visual Basic chứa các nhóm dữ liệu có liên quan. Collection tương tự như mảng nhưng có một số khác biệt sau:
Không cần xác định trước số phần tử của Collection.
Ta có thể chèn thêm một phần tử vào giữa Collection mà không cần tạo không gian để lưu trữ cho phần tử mới này. Tương tự ta có thể xóa một phần tử mà không phải dịch chuyển các phần tử còn lại để lấp chỗ trống. Trong cả hai trường hợp trên Collection thực hiện một cách tự động.
Collection thể lưu trữ dữ liệu có kiểu khác nhau. Nói chung ta có thể lưu trữ vào Collection tất cả những giá trị mà ta có thể lưu trữ trong biển Variant.
Collection cho phép gán cho mỗi phần tử một mã khóa nhờ đó ta có thể truy xuất vào phần tử đó một cách nhanh chóng thậm chí ta không biết nó được lưu trữ ở