Giáo trình Phát triển ứng dụng với Visual Basic 6

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

pdf96 trang | Chia sẻ: trungkhoi17 | Lượt xem: 416 | Lượt tải: 0download
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:

  • pdfgiao_trinh_phat_trien_ung_dung_voi_visual_basic_6.pdf