Xem mẫu
- MỤC LỤC
MỤC LỤC.................................................................................................................... i
DANH MỤC HÌNH VẼ ............................................................................................ vii
CHƢƠNG 1 .................................................................................................................1
GIỚI THIỆU VỀ LẬP TRÌNH WINDOWS ...............................................................1
VÀ VISUAL BASIC 6.0 ............................................................................................1
1.1. Giới thiệu về lập trình Windows ......................................................................1
1.2. Thƣ viện liên kết động ......................................................................................3
1.3. Windows API....................................................................................................4
1.3.1. Gọi API ......................................................................................................4
1.3.2. Khai báo một cuộc gọi API: .....................................................................4
1.3.3. Trình duyệt API ( API Text Viewer).........................................................5
1.4. Liên lạc với các ứng dụng của Windows ..........................................................7
1.4.1. Clipboard ...................................................................................................7
1.4.2. Chạy một chƣơng trình của Windows .......................................................7
1.5. Giới thiệu Visual Basic 6.0 ...............................................................................7
1.5.1. Khởi động Visual Basic 6.0.......................................................................8
1.5.2. Giới thiệu màn hình làm việc ....................................................................9
1.6. Các thao tác cơ bản với các đối tƣợng trên Form ...........................................12
1.6.1. Đƣa một đối tƣợng lên Form ...................................................................12
1.6.2. Chọn một đối tƣợng .................................................................................13
1.6.3. Di chuyển đối tƣợng ................................................................................13
1.6.4. Hiệu chỉnh kích thƣớc đối tƣợng .............................................................13
1.6.5. Xoá đối tƣợng ..........................................................................................14
1.6.6. Khoá đối tƣợng ........................................................................................14
1.6.7. Focus và thứ tự Tab của các điều khiển ..................................................14
1.7. Làm việc với Project .......................................................................................15
1.7.1. Thành phần của một Project ....................................................................15
1.7.2. Thêm một Form mới vào Project ............................................................15
1.7.3. Xoá Form khỏi Project ............................................................................16
1.7.4. Ghi Project lên đĩa ...................................................................................16
1.7.5. Nạp Project từ đĩa ....................................................................................16
1.7.6. Tạo Project mới .......................................................................................17
1.7.7. Thiết lập form khởi động cho Project .....................................................17
1.7.8. Tạo tập tin EXE .......................................................................................18
1.8. Câu hỏi trắc nghiệm ........................................................................................19
CHƢƠNG 2 ...............................................................................................................21
i
- CƠ SỞ LẬP TRÌNH TRONG VISUAL BASIC 6.0 ................................................ 21
2.1. Thuộc tính, phƣơng thức và sự kiện .............................................................. 21
2.1.1. Đối tƣợng ................................................................................................ 21
2.1.2. Thuộc tính ............................................................................................... 21
2.1.3. Phƣơng thức ............................................................................................ 22
2.1.4. Sự kiện .................................................................................................... 22
2.2. Giới thiệu một số điều khiển thông dụng ....................................................... 23
2.2.1. Điều khiển Label.................................................................................... 23
2.2.2. Điều khiển TextBox ............................................................................... 23
2.2.3. Điều khiển CommandButton ................................................................. 25
2.2.4. Form (biểu mẫu) .................................................................................... 25
2.2.5. MDI Form .............................................................................................. 27
2.3. Soạn thảo chƣơng trình .................................................................................. 28
2.4. Các kiểu dữ liệu ............................................................................................. 30
2.4.1. Kiểu số .................................................................................................... 30
2.4.2. Kiểu ngày giờ (Date) .............................................................................. 31
2.4.3. Kiểu lô-gic (Boolean) ............................................................................. 31
2.4.4. Kiểu đối tƣợng (Object) .......................................................................... 31
2.4.5. Kiểu tổng quát (Variant) ......................................................................... 31
2.5. Biến ................................................................................................................ 31
2.5.1. Khai báo biến .......................................................................................... 32
2.5.2. Phạm vi sử dụng của biến ....................................................................... 32
2.6. Hằng ............................................................................................................... 35
2.7. Toán tử ........................................................................................................... 35
2.7.1. Các phép toán số học .............................................................................. 35
2.7.2. Các phép toán quan hệ (hay phép so sánh) ............................................. 36
2.7.3. Các phép toán logic ................................................................................ 36
2.8. Một số hàm chuẩn .......................................................................................... 36
2.8.1. Hàm đại số .............................................................................................. 36
2.8.2. Hàm thời gian ......................................................................................... 37
2.8.3. Hàm chuyển đổi ...................................................................................... 38
2.8.4. Hàm kiểm tra kiểu dữ liệu ...................................................................... 39
2.8.5. Hàm định dạng ........................................................................................ 39
2.9. Hiển thị và nhập thông tin .............................................................................. 40
2.9.1. Hộp thông báo......................................................................................... 40
2.9.2. Hiển thị thông tin lên Form .................................................................... 43
2.9.3. Hộp nhập dữ liệu .................................................................................... 43
ii
- 2.10. Quy ƣớc viết lệnh .........................................................................................44
2.10.1. Lệnh gán ................................................................................................44
2.10.2. Ngăn cách các câu lệnh trên một dòng ..................................................44
2.10.3. Kéo dài câu lệnh trên hai dòng ..............................................................45
2.10.4. Nối 2 xâu kí tự .......................................................................................45
2.10.5. Qui ƣớc đặt tên biến và tên đối tƣợng ...................................................45
2.11. Lệnh If…Then ..............................................................................................46
2.12. Lệnh Select Case...........................................................................................47
2.13. Lệnh For…Next ............................................................................................50
2.14. Lệnh Do While...Loop ..................................................................................50
2.15. Lệnh Do…Loop While .................................................................................51
2.16. Lệnh Do Until…Loop...................................................................................51
2.17. Lệnh Do…Loop Until...................................................................................52
2.18. Lệnh While..Wend ........................................................................................52
2.19. Lệnh Goto .....................................................................................................52
2.20. Hàm và thủ tục ..............................................................................................53
2.20.1. Khai báo thủ tục và hàm ........................................................................53
2.20.2. Lời gọi thủ tục, hàm ..............................................................................54
2.20.3. Thoát khỏi thủ tục / hàm........................................................................54
2.20.4. Tham số và việc truyền tham số cho chƣơng trình con .........................54
2.20.5. Phạm vi hoạt động của các thủ tục và hàm ...........................................57
2.21 Module ...........................................................................................................57
2.21.1 Bổ sung Standard Module vào Project ...................................................58
2.21.2. Khai báo trong module ..........................................................................58
2.22. Xâu ký tự ......................................................................................................58
2.22.1. Khai báo.................................................................................................58
2.22.2. Các hàm xử lý xâu ký tự ........................................................................59
2.23. Mảng .............................................................................................................60
2.23.1. Khai báo mảng .......................................................................................60
2.23.2. Truy xuất các phần tử mảng ..................................................................61
2.23.3. Mảng động và mảng tĩnh .......................................................................61
2.23.4. Mảng đối tƣợng điều khiển ...................................................................64
2.24. Kiểu Collection .............................................................................................65
2.24.1. Tạo Collection .......................................................................................65
2.24.2. Truy xuất giá trị trong Collection ..........................................................66
2.24.3. Xoá một giá trị trong Collection............................................................67
2.24.4. Thay đổi giá trị một phần tử trong Collection .......................................67
iii
- 2.25. Bản ghi ......................................................................................................... 67
2.25.1. Khai báo kiểu bản ghi ........................................................................... 67
2.25.2. Khai báo biến bản ghi ........................................................................... 68
2.25.2. Sử dụng biến bản ghi ............................................................................ 68
2.26. Tệp tin .......................................................................................................... 69
2.26.1. Phân loại tệp tin .................................................................................... 69
2.26.2. Thủ tục truy xuất tệp tin ....................................................................... 69
2.27. Câu hỏi trắc nghiệm ..................................................................................... 75
2.28. Bài tập .......................................................................................................... 79
CHƢƠNG 3 ............................................................................................................... 82
LẬP TRÌNH VỚI CÁC ĐIỀU KHIỂN THÔNG DỤNG ......................................... 82
3.1. Điều khiển Frame ........................................................................................... 82
3.2. Điều khiển Shape ........................................................................................... 82
3.3. Điều khiển Line .............................................................................................. 82
3.4. Điều khiển CheckBox .................................................................................... 83
3.5. Điều khiển OptionButton ............................................................................... 83
3.6. Điều khiển ListBox ........................................................................................ 85
3.6.1. Thêm các phần tử vào trong hộp danh sách. .......................................... 86
3.6.2. Xoá các phần tử trong danh sách. ........................................................... 87
3.7. Điều khiển ScrollBar...................................................................................... 89
3.8. Điều khiển Image và điều khiển Picture ........................................................ 90
3.8.1. Điều khiển ảnh Image ............................................................................. 90
3.8.2. Điều khiển hộp hình................................................................................ 90
3.9. Các điều khiển DriveListBox, DirListBox và FileListBox ........................... 92
3.10. Điều khiển Timer ......................................................................................... 94
3.11. Xử lý chuột................................................................................................... 96
3.12. Xử lý bàn phím ............................................................................................ 97
3.13. Câu hỏi trắc nghiệm ..................................................................................... 98
3.14. Bài tập ........................................................................................................ 100
CHƢƠNG 4 ............................................................................................................. 103
LẬP TRÌNH VỚI CÁC ĐIỀU KHIỂN MỞ RỘNG ............................................... 103
4.1. Điều khiển Common Dialog ........................................................................ 103
4.1.1. Open Dialog, Save Dialog .................................................................... 103
4.1.2. Color Dialog ......................................................................................... 105
4.1.3. Font Dialog ........................................................................................... 106
4.2. Điều khiển Image List .................................................................................. 106
4.2.1. Thêm phần tử ảnh cho ImageList lúc thiết kế ...................................... 107
iv
- 4.2.2. Thêm phần tử ảnh cho ImageList vào lúc thi hành ...............................107
4.2.3. Gỡ bỏ phần tử ảnh khỏi ImageList vào lúc thi hành .............................108
4.2.4. Truy xuất phần tử ảnh trong ImageList. ................................................108
4.3. Điều khiển MicroSoft Masked Edit ..............................................................110
4.3.1. Dùng thuộc tính Mask để quy định mặt nạ nhập. ..................................110
4.3.2. Dùng thuộc tính Format để thay đổi hiển thị thông tin. ........................111
4.4. Điều khiển ToolBar ......................................................................................111
4.4.1. Thêm một nút lên thanh ToolBar ..........................................................111
4.4.2. Chèn hình ảnh từ ImageList lên các nút ................................................111
4.2.3. Các thuộc tính chính của Button trên ToolBar ......................................112
4.5. Điều khiển TreeView ....................................................................................112
4.5.1. Các thuộc tính ........................................................................................112
4.5.2. Phƣơng thức ..........................................................................................114
4.5.3. Sự kiện ...................................................................................................114
4.6. Điều khiển MultiMedia.................................................................................114
4.7. Menu .............................................................................................................116
4.8. Điều khiển RichTextBox ..............................................................................122
4.8.1. Các thuộc tính ........................................................................................123
4.8.2. Các phƣơng thức ...................................................................................123
4.9. Câu hỏi trắc nghiệm ......................................................................................123
4.9. Bài tập ...........................................................................................................125
CHƢƠNG 5. LẬP TRÌNH CƠ SỞ DỮ LIỆU .........................................................129
5.1. Nhắc lại một số khái niệm về cơ sở dữ liệu ..................................................129
5.1.1. Khái niệm cơ sở dữ liệu.........................................................................129
5.1.2. Engine (bộ máy) CSDL .........................................................................129
5.1.3. Bảng (Table), Trƣờng (Field), Bản ghi (Record) ..................................129
5.1.4. Recordset ...............................................................................................130
5.2. Visual Data Manager ....................................................................................131
5.2.1. Tạo cơ sở dữ liệu ...................................................................................131
5.2.2. Tạo bảng ................................................................................................132
5.2.3. Tạo form dữ liệu tự động.......................................................................134
5.3. Các đối tƣợng truy cập dữ liệu .....................................................................136
5.3.1. Sử dụngTextBox ....................................................................................136
5.3.2. Sử dụng DBGrid ....................................................................................137
5.3.3. Sử dụng các điều khiển khác .................................................................137
5.4. Truy xuất dữ liệu thông qua Data Control ....................................................138
5.4.1. Các thuộc tính ........................................................................................138
v
- 5.4.2. Cách sử dụng điều khiển Data .............................................................. 139
5.4.3. Ví dụ minh hoạ ..................................................................................... 141
5.5. Truy xuất dữ liệu thông qua DAO ............................................................... 150
5.5.1. Tham chiếu đến thƣ viện đối tƣợng của DAO ..................................... 151
5.5.2. Đối tƣợng Workspace ........................................................................... 153
5.5.3. Đối tƣợng Database .............................................................................. 154
5.5.4 Đối tƣợng Recordset .............................................................................. 154
5.5.4. Đối tƣợng Field ..................................................................................... 162
5.6. Truy xuất dữ liệu thông qua ADO ............................................................... 162
5.6.1. Tham chiếu đến ADO ........................................................................... 162
5.6.2. Mô hình đối tƣợng của ADO ................................................................ 163
5.6.3. Các đối tƣợng trong mô hình ADO ...................................................... 163
5.6.4. Ví dụ minh hoạ ..................................................................................... 180
5.7. Tạo báo cáo .................................................................................................. 186
5.7.1. Tạo liên kết dữ liệu sử dụng Data View ............................................... 186
5.7.2. Tạo trình thiết kế môi trƣờng dữ liệu sử dụng Data View ................... 187
5.7.3. Tạo báo cáo dữ liệu............................................................................... 188
5.7.3. Tạo báo cáo dữ liệu sử dụng đối tƣợng Command............................... 191
5.7.4. Tạo báo cáo phân nhóm ........................................................................ 194
5.7.5. Tạo báo cáo có hàm tính toán ............................................................... 196
5.8. Trình đóng gói và triển khai ứng dụng ........................................................ 222
5.8.1. Phát hành ứng dụng .............................................................................. 222
5.8.2. Mở trình đóng gói và triển khai ứng dụng ............................................ 223
5.8.3. Mở trình đóng gói và triển khai nhƣ một ứng dụng độc lập................. 227
5.8.4. Setup toolkit .......................................................................................... 227
5.9. Bài tập .......................................................................................................... 228
TÀI LIỆU THAM KHẢO ....................................................................................... 235
vi
- DANH MỤC HÌNH VẼ
Hình 1.1. Cơ chế xử lý chỉ lệnh của Windows .................................................2
Hình 1.2. Cửa sổ API Viewer ...........................................................................5
Hình 1.3. Danh sách hàm trong Win32API ......................................................6
Hình 1.4. Cú pháp hàm AddPrinter trong cửa sổ API Viewer .........................6
Hình 1.5 Khởi động Visual Basic 6.0 từ nút Start ............................................8
Hình 1.6. Biểu tƣợng của Visual Basic 6.0 trên màn hình nền.........................8
Hình 1.7. Màn hình làm việc của Visual Basic 6.0 ..........................................9
Hình 1.8. Cửa sổ Project Explorer ..................................................................11
Hình 1.9. Cửa sổ thuộc tính (Properties) ........................................................12
Hình 1.10. Cửa sổ Form Layout .....................................................................12
Hình 1.11. Lệnh Lock Control trên lệnh đơn Format .....................................14
Hình 1.12. Hộp thoại Add Form .....................................................................15
Hình 1.13. Hộp thoại tạo một Project mới (New Project) ..............................16
Hình 1.14. Hộp thoại mở Project đã có (Open Project) ..................................17
Hình 1.15. Hộp thoại Project Properties .........................................................18
Hình 1.16. Hộp thoại Make Project ................................................................18
Hình 1.17. Hộp thoại Project Properties .........................................................19
Hình 2.1. Hộp thoại Options ...........................................................................30
Hình 2.2. Các vị trí khai báo biến trong cửa sổ lệnh (Code) ..........................33
Hình 2.3. Khai báo Option Explicit trong cửa sổ lệnh ...................................34
Hình 2.4. Hộp thông báo (MsgBox) ...............................................................41
Hình 2.5. Hộp nhập dữ liệu (InputBox) ..........................................................43
Hình 3.1. Nhập các giá trị cho thuộc tính List của ListBox ...........................87
Hình 4.1. Hộp thoại Property Pages .............................................................107
Hình 4.2. Lệnh đơn Menu Editor ..................................................................118
Hình 4.3. Công cụ Menu Editor ....................................................................118
Hình 4.4. Hộp thoại Menu Editor .................................................................118
Hình 5.1. Cửa sổ Visual Data Manager (VisData) .......................................131
Hình 5.2. Các thành phần trong cửa sổ VisData ...........................................131
Hình 5.3. Cửa sổ Data Window ....................................................................132
Hình 5.4. Hộp thoại Table Structure .............................................................132
Hình 5.5. Hộp thoại Add Field......................................................................133
Hình 5.6. Hộp thoại Add Index to... .............................................................134
Hình 5.7. Mục chọn Data Form Designer tạo Form tự động ........................135
Hình 5.8. Hộp thoại Data Form Designer .....................................................135
Hình 5.9. Mô hình cây phân cấp của đối tƣợng DAO ..................................151
Hình 5.10. Đƣa them điều khiển vào hộp công cụ .......................................163
Hình 5.11. Mô hình đối tƣợng của ADO ......................................................163
Hình 5.12. Điều khiển Adodc .......................................................................173
Hình 5.13. Thuộc tính ConnectionString trong cửa sổ thuộc tính ................174
Hình 5.14. Hộp thoại Property Pages ...........................................................174
Hình 5.15. Hộp thoại Data Link Properties ..................................................175
Hình 5.16. Cửa sổ Select Access Database...................................................176
vii
- CHƢƠNG 1
GIỚI THIỆU VỀ LẬP TRÌNH WINDOWS
VÀ VISUAL BASIC 6.0
1.1. Giới thiệu về lập trình Windows
Khi cấu trúc của Windows đƣợc tạo ra, Microsoft có ý định tạo ra một số lớn các
chức năng lập trình có giá trị cho mọi chƣơng trình dựa trên nền Windows. Chiến
thuật này phục vụ hai mục đích, cung cấp ứng dụng Windows một cái nhìn và cảm
giác nhất quán cũng nhƣ khiến cho ngƣời lập trình khỏi phải sao chép lại các hàm
mà đã đƣợc mã hóa và debug. Những hàm này đƣợc lƣu trữ trong một dãy các thƣ
viện liên kết động ( DLL ) và đƣợc biết nhƣ là giao diện lập trình ứng dụng ( API ).
Từ khi phát triển thành hệ điều hành 32bit, Windows 95 những phiên bản mới đƣợc
biết đến nhƣ Win32 API. Một vài hàm trong Win32 API thì có giá trị nhƣ những
lệnh Visual Basic, nhƣng phần lớn thì đƣợc truy cập chỉ bằng cách gọi hàm API.
Khi nắm rõ bản chất của Windows API để lập trình sâu với hệ thống, ta cũng cần
hiểu biết sơ bộ về Hệ điều hành Windows cách thức điều khiển của Hệ điều hành
đối với ứng dụng để có thể can thiệp nhƣ: bổ sung chức năng thậm chí biến đổi nó,
bắt thực hiện theo hƣớng của mình.
Các chƣơng trình ứng dụng trong Windows có thể có nhiều cửa sổ phục vụ cho
nó. Cửa sổ có thể là Form thậm chí là Dialog. Mỗi cửa sổ này đều có một handle
(cán) để hệ thống nhận biết do chính hệ điều hành Windows tạo ra. Cán cửa sổ này
là chỉ số duy nhất.
Hệ điều hành và chƣơng trình ứng dụng đều duy trì các hàng đợi các chỉ lệnh cần
thực hiện. Mỗi ứng dụng đều có hàng đợi (Message Queue). Khi ngƣời sử dụng ra
lệnh hoặc có một biến cố, các chƣơng trình điều khiển thiết bị nhập (INPUT) sẽ
chuyển các thông tin vào thành chỉ lệnh và đặt chỉ lệnh này vào hàng đợi hệ thống
(System Message Queue). Hệ điều hành lấy lần lƣợt các chỉ lệnh trong hàng đợi hệ
thống kiểm tra để xác định cửa sổ nào sẽ tiếp nhận thì sẽ đặt vào hàng đợi của nó
(thread message) một chỉ lệnh tƣơng ứng. Các chƣơng trình ứng dụng căn cứ vào chỉ
lệnh này để thực hiện cũng nhƣ xử lý chúng.
Các cửa sổ giống nhƣ một động cơ tự động chạy theo một vòng lặp. Tiếp "nhiên
liệu" cho các "động cơ" này là hệ điều hành Windows. Hệ điều hành Windows nhận
các chỉ lệnh (message) từ hàng đợi của hệ điều hành, dùng một hàm dạng API để
cung cấp chỉ lệnh tới cửa sổ thông qua cán (handle) của cửa sổ. Có nghĩa là bản thân
trong mỗi cửa sổ luôn có một hàm gọi là WinProc đôi khi gọi là WinMain. Hàm này
là cốt lõi xử lý của cửa sổ. Trong hàm, nó lặp đi lặp lại liên tục 2 dòng lệnh sau
1
- thông qua cấu trúc:
Do While 0 GetMessage (message, 0, 0,0)
TranslateMessage message
DispatchMessage message
Loop
Trong đó message là chỉ lệnh mà hệ điều hành cung cấp, thông qua cán (handle)
của cửa sổ. Đƣơng nhiên, nếu chỉ lệnh có giá trị WM_QUIT thì hàm WinProc trong
cửa sổ chấm dứt vòng lặp. Còn nếu chỉ lệnh message khác giá trị trên, thì 2 dòng
lệnh trên sẽ thực hiện.
Cụ thể:
TranslateMessage message -> Dịch chỉ lệnh thành dạng dữ liệu khác đặt kết quả này
vào hàng đợi của ứng dụng.
DispatchMessage message ->Nhận chỉ lệnh từ hàm GetMessage và gửi cho hệ
thống. Hệ thống sẽ đƣa chỉ lệnh cho ứng dụng.
Windows có hàng ngàn chỉ lệnh khác nhau đó là các hằng dạng WM_*.
Một hàm WinProc luôn nhận vào trong nó các biến theo khuôn mẫu sau để xử lý:
Function WinProc(hwnd as Long, wc as WNDCLASSEX, message as MSG, wParam
as Long, lparam as Long)
Nếu hàm WinProc không xử lý các chỉ lệnh, nó phải đƣa trả chỉ lệnh cho hệ điều
hành xử lý thông qua hàm DefWindowProc. Hàm DefWindowProc gởi lại chỉ lệnh
WM_CLOSE cho WinProc. Hàm WinProc sẽ lại gởi trả WM_CLOSE cho
DefWindowProc một lần nữa nhƣ mô tả ở trên.
Ta có thể tóm lại sơ bộ nhƣ sau:
Hình 1.1. Cơ chế xử lý chỉ lệnh của Windows
Các chỉ lệnh đƣa tới ngăn chờ trên thông thƣờng từ các nguồn sau:
1) Hệ thống đặt vào
2) Chƣơng trình khác đặt vào
2
- 3) Chính chƣơng trình của mình đặt vào thông qua các hàm SendMessage() và
PostMessage().
Tuy nhiên, nếu chọn sử dụng hàm SendMessage() thì sau khi chỉ lệnh đƣợc
WinProc lấy ra xử lý thì chƣơng trình mới tiếp tục chạy tiếp lệnh kế sau. Còn nếu
dùng PostMessage() chỉ có tác dụng đặt chỉ lệnh vào hàng đợi và thực hiện ngay
lệnh kế tiếp.
Từ đây ta nhận thấy việc xử lý hệ thống của Windows thông qua cơ chế trên thì
giản đơn đi rất nhiều.
1.2. Thƣ viện liên kết động
Windows cung cấp rất nhiều các hàm gọi dƣới dạng các thƣ viện liên kết động
(Dynamic Link Libraries - DLL). Các tệp tin DLL này đƣợc biên dịch với C/C++.
Thế mạnh của DLL:
Nhất quán: Ngƣời sử dụng ƣa chuộng Windows vì nó không ít thì nhiều có một
giao diện ngƣời sử dụng phổ biến cho mọi ứng dụng. Ví dụ các hộp thoại thông
dụng, các menu, thanh công cụ của Office97… Nghĩa là có những đoạn chƣơng
trình chung để tạo ra chúng.
Dễ bảo trì: Những thay đổi hoặc bổ sung nếu có sẽ thể hiện trên mọi ứng dụng.
Tệp tin EXE nhỏ hơn: Do một phần công việc chứa ở nơi khác, và không gắn kết
“cứng nhắc” nhƣ liên kết tĩnh, kích cỡ tệp tin EXE đƣợc giảm nhỏ.
DLL là nền tảng của thiết kế Windows. Windows thực chất là tập hợp các DLL
để các ứng dụng khác nhau có thể dùng chung. Bên trong các DLL này là hàng trăm
hàm/thủ tục. Ta gọi chúng là Windows API.
Các API đƣợc tổ chức trong bốn DLL chính của Windows:
KERNEL32: Là DLL chính, đảm nhiệm quản lý bộ nhớ, thƣc hiện chức năng đa
nhiệm và những hàm ảnh hƣởng trực tiếp đến hoạt động của Windows.
USER32: Thƣ viện quản lý Windows. Thƣ viện này chứa các hàm xử lý menu, định
giờ, truyền tin, tệp tin và nhiều phần không đƣợc hiển thị khác của Windows.
GDI32: Giao diện thiết bị đồ hoạ (Graphics Device Interface). Thƣ viện này cung
cấp các hàm vẽ trên màn hình, cũng nhƣ kiểm tra phần biểu mẫu nào cần vẽ lại.
WINNM: Cung cấp các hàm multimedia để xử lý âm thanh, nhạc, video thời gian
thực, lấy mẫu, v.v…
Ta có thể tìm các tệp tin này trong thƣ mục C:\Windows\system. Ngoài ra, còn có
các DLL nhỏ hơn, cũng đƣợc dùng phổ biến để cung cấp các dịch vụ đặc biệt cho
ứng dụng.
3
- 1.3. Windows API
1.3.1. Gọi API
Gọi API không khác gì với gọi hàm/ thủ tục trong module của đề án. Ví dụ ta có
thủ tục:
Public sub FindText(obiDataControl as Control, SFilename as String)
„ Code to implement function here
End sub
Để gọi thủ tục ta dùng :
FindText datTitles, “Titles”
Chỉ có điều API là một thủ tục không chỉ nằm ngoài module mà còn nằm ngoài
Visual Basic.
1.3.2. Khai báo một cuộc gọi API:
Trƣớc khi dùng hàm của DLL, ta cần khai báo hàm đó. Visual Basic cần biết:
Tên hàm / thủ tục.
Tệp tin DLL chứa nó.
Tham số truyền.
Kiểu dữ liệu truyền về nếu là hàm.
Khai báo API tƣơng tự khai báo hàm/ thủ tục thông thƣờng. Ta vẫn bắt đầu bằng
từ khoá Sub/Function, chỉ khác là trƣớc đó phải có từ khoá Declare.
Ví dụ: Tạo cửa sổ nhấp nháy bằng cách gọi API
Bƣớc 1. Tạo một project mới
Bƣớc 2. Đƣa điều khiển định giờ (timer) lên biểu mẫu và gán giá trị cho thuộc tính
Interval là 10. Nó sẽ gây ra một sự kiện timer mỗi 10 mi-li-giây.
Bƣớc 3. Nhấn đúp lên điều khiển timer này để mở cửa sổ Code và gõ vào thủ tục:
Private Sub Timer1_Timer()
Dim nReturnValue As Integer
nReturnValue= Flash(Form1.hWnd, True)
End Sub
Bƣớc 4. Khai báo hàm Flash trong General - Declarations
Private Declare Function Flash Lib "User32" Alias "FlashWindow" _
(ByVal hWnd As Long, ByVal bInvert As Boolean) As Long
Bƣớc 5. Chạy chƣơng trình. Khi biểu mẫu xuất hiện, tiêu đề của nó nhấp nháy.
Giải thích: Từ khoá Declare báo Visual Basic biết đây là khai báo một hàm của
DLL. Sau Declare là từ khoá Sub hay Function, cho biết đây là thủ tục hay hàm. Ta
chỉ có một trong hai lựa chọn. Từ khoá Lib cho biết tên DLL đang chứa hàm/ thủ
4
- tục đó. Ở đây là thƣ viện User32. Từ khoá Alias cho biết tên thực sự của hàm/ thủ
tục trong thƣ viện. Nó có thể khác với tên ta khai báo trƣớc từ khoá Lib. Cuối cùng
là khai báo các tham số truyền, cùng với kiểu dữ liệu trả về của hàm. Ở đây tham số
đƣợc truyền là :
(ByVal hWnd As Long, ByVal bInvert As Boolean) As Long
Tham số đầu, hWnd, là “handle”, xác định cửa sổ cần nhấp nháy. Tham số thứ
hai, bInvert là giá trị Boolean. Nếu bInvert đƣợc truyền vào có giá trị True, thanh
tiêu đề sẽ nhấp nháy. Để trả về trạng thái đầu, ta phải gọi lại lần nữa, vớI bInvert
mang giá trị False.
Sau khi khai báo hàm API, ta có thể gọi API nhƣ một hàm hoặc thủ tục Visual
Basic thông thƣờng. Gọi Flash là gọi đến API trong DLL, và ta lƣu giá trị trả về
trong biến nReturnValue.
Đối với các hàm thông thƣờng, ta có thể không cần sử dụng giá trị trả về của hàm.
Tuy nhiên, ta vẫn cần chứa giá trị trả về vào một biến dù ta không có ý định sử dụng
nó. Phần lớn API trả về mã lỗi kiểu số, và ta có thể dùng nó để kiểm tra mọi việc có
hoạt động chính xác hay không.
Trong thực tế, bỏ qua giá trị trả về không chỉ là lƣời biếng mà còn thực sự nguy
hiểm nếu ta đang gọi nhiều API.
Sử dụng API sai có thể dẫn đến treo Windows, nếu không nói là treo máy. Khi
làm việc với các API phức tạp, nhƣ những hàm cần cấp phát nhiều vùng nhớ và tài
nguyên hệ thống ta không nên bỏ qua các giá trị trả về. Vì hàm DLL nằm ngoài ứng
dụng, chúng tự kiểm tra lỗi ta chỉ biết có sai sót thông qua giá trị trả về.
1.3.3. Trình duyệt API ( API Text Viewer)
Đƣợc cung cấp sẵn khi cài Visual Studio 6.0. Khi ta cần tra cứu cú pháp chính
xác của hàm API, ta dùng API Text Viewer. Để sử dụng API Text Viewer, ta chọn
Start/All Programs/Microsoft Visual Studio 6.0/Microsoft Visual Studio 6.0
Tools/API Text Viewer khi đó cửa sổ API Viewer xuất hiện nhƣ sau:
Hình 1.2. Cửa sổ API Viewer
5
- Để tra cứu hàm nào, ta chọn File/Load Text File từ menu hệ thống, chọn tệp tin
(chẳng hạn Win32API), rồi nhấn Open, khi đó danh sách các hàm API đƣợc khai
báo trong file văn bản đó đƣợc hiển thị trong mục Available, nhƣ hình sau:
Hình 1.3. Danh sách hàm trong Win32API
Kích chuột chọn một hàm trong danh sách (chẳng hạn hàm AddPrinter), rồi nhấn
nút Add, cú pháp của hàm sẽ đƣợc hiển thị trong mục Selected Items, nhƣ hình sau:
Hình 1.4. Cú pháp hàm AddPrinter trong cửa sổ API Viewer
Tuy nhiên, để có thông tin chi tiết hơn nhƣ hàm API làm gì, truyền tham số gì, trả
về giá trị gì, ta cần có quyển sách tra cứu.
6
- Ngoài ra, chƣơng trình này còn cho phép copy nội dung API đến clipboard để dán
vào chƣơng trình.
1.4. Liên lạc với các ứng dụng của Windows
1.4.1. Clipboard
Clipboard là vùng bộ nhớ đƣợc Windows quản lý cho phép sao chép dữ liệu giữa
các ứng dụng.Visual Basic cho phép ta điều khiển hệ thống clipboard thông qua đối
tƣợng Clipboard. Đối tƣợng này có 6 phƣơng thức và không có thuộc tính. Các
phƣơng thức bao gồm:
Clear: Xóa dữ liệu khỏi clipboard.
SetText: Dùng để đặt văn bản vào Clipboard (copy)
GetText: Dùng để lấy văn bản từ Clipboard (paste)
SetData: Dùng để đặt hình ảnh vào Clipboard
GetData: Dùng để lấy hình ảnh từ Clipboard
1.4.2. Chạy một chương trình của Windows
Visual Basic cho phép ta chạy một chƣơng trình khác bằng cách sử dụng thủ tục
Shell
TaskId = Shell(PathName, [WindowStyle])
Trong đó PathNane có thể bao gồm một dòng lệnh. WindowStyle là hằng để xác
định dạng cửa sổ.
Ví dụ: Để khởi động chƣơng trình NotePad và tải một tệp tin “c:\bootlog.txt” vào
chƣơng trình, ta viết lời gọi sau:
Shell "notepad c:\bootlog.txt", vbNormalFocus
1.5. Giới thiệu Visual Basic 6.0
Visual Basic 6.0 là một công cụ lập trình trực quan. Khác với các môi trƣờng lập
trình hƣớng thủ tục, Visual Basic 6.0 là môi trƣờng lập trình hƣớng đối tƣợng. Trong
môi trƣờng lập trình hƣớng thủ tục, nếu nhƣ ứng dụng (application) đƣợc thiết kế để
giải quyết một vấn đề lớn, thì lập trình viên có thể chia nhỏ vấn đề lớn đó thành
nhiều vấn đề nhỏ và viết các hàm/thủ tục để giải quyết riêng từng cái. Còn với lập
trình hƣớng đối tƣợng, lập trình viên sẽ chia nhỏ vấn đề cần giải quyết thành các đối
tƣợng. Mỗi đối tƣợng có những đặc điểm, mà ta gọi là thuộc tính (properties) và
những chức năng riêng biệt mà ta gọi là phƣơng thức (methods). Lập trình viên phải
đƣa ra các thuộc tính và phƣơng thức mà đối tƣợng cần thể hiện. Phƣơng thức là
đoạn chƣơng trình chứa trong đối tƣợng, cho đối tƣợng biết cách thức để thực hiện
một công việc gì đó, phƣơng thức chỉ đƣợc thực hiện khi có lời gọi theo cú pháp:
7
- .. Tƣơng tự thuộc tính và phƣơng thức, các đối tƣợng
còn có một bộ sự kiện (events) khác nhau. Các sự kiện là những phản ứng của đối
tƣợng, nó xảy ra thƣờng là kết quả của một hành động nào đó, nhƣ di chuyển chuột,
nhấn nút bàn phím, hoặc gõ vào hộp văn bản, …
1.5.1. Khởi động Visual Basic 6.0
Ta có thể khởi động Visual Basic 6.0 theo các cách sau:
Cách 1: Nhấp trái chuột vào nút Start, chọn Programs, chọn Microsoft Visual Studio
6.0, chọn Microsoft Visual Basic 6.0
Hình 1.5. Khởi động Visual Basic 6.0 từ nút Start
Cách 2: Chọn biểu tƣợng Microsoft Visual Basic 6.0 trên màn hình nền nhấn Enter
hoặc nhấp đúp chuột
Hình 1.6. Biểu tƣợng của Visual Basic 6.0 trên màn hình nền
8
- 1.5.2. Giới thiệu màn hình làm việc
Sau khi khởi động Visual Basic 6.0 chúng ta đƣợc đƣa vào môi trƣờng phát triển
tích hợp của Visual Basic (Gọi tắt là IDE- Integrated Development Environment).
Đây là nơi mà ta có thể tạo ra các chƣơng trình.
Hình 1.7. Màn hình làm việc của Visual Basic 6.0
a) Thanh tiêu đề (Title Bar)
Thanh tiêu đề thể hiện tên của chƣơng trình (project) mặc định là Project1
b) Thanh thực đơn (Menu Bar)
Thanh thực đơn xuất hiện ngay dƣới thanh tiêu đề, chứa các tuỳ chọn thực đơn
cho phép ngƣời sử dụng thao tác với Visual Basic bằng cách chọn các mục chọn đơn
bằng chuột hoặc phím tắt trên thực đơn để thực hiện.
c) Thanh công cụ (Tool Bar)
Thanh công cụ là thanh chứa các lệnh đƣợc thể hiện dƣới dạng biểu tƣợng giúp
ngƣời sử dụng có thể thi hành một lệnh nhanh hơn.
9
- d) Hộp công cụ (ToolBox)
Hộp công cụ là bảng chứa các điều khiển và ta thiết kế giao diện ngƣời sử dụng
bằng cách chọn các điều khiển từ hộp công cụ và đƣa chúng vào các biểu mẫu
(Form).
Các biểu tƣợng trong hộp công cụ:
(Pointer - Con trỏ): Dùng để chọn các đối tƣợng sau khi đã tạo ra chúng ở trên
Form.
(Picture Box - Hộp hình ảnh): Dùng để hiển thị hình ảnh trên Form.
(Label - Nhãn): Dùng để hiện một xâu ký tự hay nhãn trên Form.
(TextBox - Hộp văn bản): Dùng để tạo một hộp văn bản sử dụng cho việc nhập
hay xuất thông tin trên Form khi chạy chƣơng trình.
(Frame - Khung): Dùng để tạo một đối tƣợng hình chữ nhật (khung chữ nhật)
chứa các đối tƣợng khác.
(CommandButton - Nút lệnh): Dùng để tạo ra một nút nhấn (nút lệnh) đáp ứng
sự kiện nhấn hoặc nhấn đúp trái chuột khi chạy chƣơng trình.
(CheckBox - Hộp kiểm): Dùng để tạo nút kiểm cho phép ngƣời sử dụng chƣơng
trình chọn/bỏ chọn một lựa chọn nào đó khi chạy chƣơng trình. Ngƣời sử dụng có
thể không chọn hoặc chọn nhiều tuỳ chọn cùng một lúc.
(Option Button - Nút lựa chọn): Giống nhƣ hộp kiểm (Check Box) nhƣng khi
chạy chƣơng trình ngƣời sử dụng chỉ đƣợc chọn một trong các nút chọn (Option
Button).
(ListBox - Hộp danh sách): Dùng để tạo một hộp liệt kê một danh sách gồm
nhiều mục và cho phép ngƣời sử dụng lựa chọn.
(ComboBox - Hộp danh sách xổ xuống): Đây là đối tƣợng điều khiển kết hợp
giữa TextBox (hộp văn bản) và ListBox (hộp danh sách), dùng để tạo ra một hộp
danh sách xổ xuống. Khi chạy chƣơng trình, ngƣời sử dụng có thể chọn một mục
nào đó trong danh sách có sẵn hoặc có thể nhập nội dung bất kỳ vào.
(Horizontal ScrollBar - Thanh cuốn ngang): Dùng để tạo ra một thanh cuốn
ngang cho chúng ta chọn một số nguyên khi di chuyển con chạy từ giá trị min đến
giá trị max.
(Vertical ScrollBar - Thanh cuốn dọc): Dùng để tạo ra một thanh cuốn dọc cho
chúng ta chọn một số nguyên khi di chuyển con chạy từ giá trị min đến giá trị max.
10
- (Timer - Đồng hồ): Dùng để tạo thời gian.
(Drive ListBox - Hộp danh sách ổ đĩa): Là một ComboBox trong đó liệt kê tên
các ổ đĩa có trong hệ thống. Khi chạy chƣơng trình, ngƣời sử dụng có thể chọn một
ổ đĩa nào đó.
(Directory ListBox - Hộp danh sách thƣ mục): Là hộp danh sách các thƣ mục
của ổ đĩa hiện hành. Khi chạy chƣơng trình, ngƣời sử dụng có thể chọn một thƣ mục
nào đó.
(File ListBox - Hộp danh sách tệp): Là một hộp danh sách liệt kê các tệp trong
thƣ mục hiện hành. Khi chạy chƣơng trình, ngƣời sử dụng có thể chọn một tệp nào
đó.
(Shape- Hộp hình): Dùng để vẽ các hình cơ bản nhƣ hình chữ nhật, hình vuông,
hình ellipse, hình tròn … lên Form.
(Line - Đƣờng): Dùng để kẻ một đoạn thẳng trên Form.
(Image - Hộp hình ảnh): Dùng để hiển thị hình ảnh bitmap trên Form.
(Data - Dữ liệu): Dùng để tạo khung dữ liệu.
(OLE - Object Linking and Embeding): Dùng để tạo khung kết nối và nhúng
các đối tƣợng.
Một số điều khiển có sẵn trong Visual Basic 6.0 và không thể gỡ bỏ khỏi hộp
công cụ. Đây là các điều khiển nội tại. Một số điều khiển nằm bên ngoài Visual
Basic 6.0 và chứa trong các tệp tin có phần mở rộng là.ocx, muốn thêm các điều
khiển này vào hộp công cụ trên thanh thực đơn ta chọn Project/Components
(Ctrl+T), sau đó đánh dấu kiểm vào hộp kiểm bên trái tên điều khiển trong một danh
sách điều khiển và nhấn nút OK, khi đó điều khiển sẽ đƣợc đƣa vào hộp công cụ và
ta có thể sử dụng nó nhƣ các điều khiển nội tại khác.
e) Cửa sổ dự án (Project)
Cửa sổ Project quản lý toàn bộ chƣơng trình (project)
đang thiết kế. Trong cửa sổ này sẽ liệt kê tên project
và tất cả các form, các module đang viết trong
project.
Hình 1.8. Cửa sổ Project Explorer
Để xem các đối tƣợng trên một form hoặc một module nào đó, ta nhấp trái chuột
vào thẻ (tab) có tên View Object ( ).
11
- Để xem cửa sổ viết mã lệnh của form hoặc module nào đó ta có thể chọn thẻ (tab)
có tên View Code ( ).
f) Cửa sổ thuộc tính (Properties)
Cửa sổ thuộc tính cung cấp một số thuộc tính của đối tƣợng hiện hành.
Hình 1.9. Cửa sổ thuộc tính (Properties)
Để truy xuất thuộc tính của đối tƣợng ta thực hiện nhƣ sau:
.
g) Cửa sổ Form Layout
Cửa sổ Form Layout giúp chúng ta sắp xếp vị trí
Form khi chạy chƣơng trình. Khi bắt đầu chạy
chƣơng trình thì Form sẽ nằm ở góc trên bên trái,
thay vì dùng chuột để kéo Form đến vị trí tuỳ ý ta sử
dụng cửa sổ Form Layout.
Hình 1.10. Cửa sổ Form Layout
Ta đƣa chuột vào Form trong màn hình Form Layout, lúc đó con trỏ có hình mũi
tên 4 hƣớng. Ta giữ phím trái chuột và rê Form đến vị trí mong muốn và nhả chuột
ra. Khi chạy chƣơng trình Form sẽ nằm đúng vị trí mong muốn.
1.6. Các thao tác cơ bản với các đối tƣợng trên Form
1.6.1. Đưa một đối tượng lên Form
Có hai cách đƣa đƣa các đối tƣợng vào Form nhƣ sau:
12
nguon tai.lieu . vn