Xem mẫu

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. Để 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
  14. 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
  15. .. 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
  16. 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
  17. 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
  18. (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
  19. Để 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