Giáo trình Lập trình Windows: Phần 1 cung cấp cho người học những kiến thức như: Giới thiệu về lập trình windows và visual basic 6.0, Cơ sở lập trình trong visual basic 6.0, Lập trình với các điều khiển thông dụng. Mời các bạn cùng tham khảo!
MỤC LỤC MỤC LỤC i DANH MỤC HÌNH VẼ vii CHƢƠNG GIỚI THIỆU VỀ LẬP TRÌNH WINDOWS .1 VÀ VISUAL BASIC 6.0 1.1 Giới thiệu lập trình Windows 1.2 Thƣ viện liên kết động 1.3 Windows API 1.3.1 Gọi API 1.3.2 Khai báo gọi API: .4 1.3.3 Trình duyệt API ( API Text Viewer) .5 1.4 Liên lạc với ứng dụng Windows 1.4.1 Clipboard 1.4.2 Chạy chƣơng trình 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 hình làm việc 1.6 Các thao tác với đối tƣợng Form 12 1.6.1 Đƣa đối tƣợng lên Form 12 1.6.2 Chọn đố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 thứ tự Tab điều khiển 14 1.7 Làm việc với Project .15 1.7.1 Thành phần Project 15 1.7.2 Thêm Form 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 .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 .21 i CƠ SỞ LẬP TRÌNH TRONG VISUAL BASIC 6.0 21 2.1 Thuộc tính, phƣơng thức 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 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 liệu 30 2.4.1 Kiểu số 30 2.4.2 Kiểu ngày (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 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 liệu 39 2.8.5 Hàm định dạng 39 2.9 Hiển thị 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 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âu lệnh dòng 44 2.10.3 Kéo dài câu lệnh hai dòng 45 2.10.4 Nối xâu kí tự .45 2.10.5 Qui ƣớc đặt tên biến 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 thủ tục 53 2.20.1 Khai báo thủ tục 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ố việc truyền tham số cho chƣơng trình 54 2.20.5 Phạm vi hoạt động thủ tục hàm 57 2.21 Module 57 2.21.1 Bổ sung Standard Module vào Project 58 2.21.2 Khai báo 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 phần tử mảng 61 2.23.3 Mảng động 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ị Collection 66 2.24.3 Xoá giá trị Collection 67 2.24.4 Thay đổi giá trị phần tử Collection .67 iii 2.25 Bản ghi 67 2.25.1 Khai báo kiểu ghi 67 2.25.2 Khai báo biến ghi 68 2.25.2 Sử dụng biế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 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 phần tử vào hộp danh sách 86 3.6.2 Xoá phần tử danh sách 87 3.7 Điều khiển ScrollBar 89 3.8 Điều khiển Image đ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 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 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 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 nút lên ToolBar 111 4.4.2 Chèn hình ảnh từ ImageList lên nút 111 4.2.3 Các thuộc tính Button 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 LẬP TRÌNH CƠ SỞ DỮ LIỆU 129 5.1 Nhắc lại số khái niệm sở liệu 129 5.1.1 Khái niệm sở 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 sở liệu 131 5.2.2 Tạo bảng 132 5.2.3 Tạo form liệu tự động .134 5.3 Các đối tƣợng truy cập liệu .136 5.3.1 Sử dụngTextBox 136 5.3.2 Sử dụng DBGrid 137 5.3.3 Sử dụng điều khiển khác 137 5.4 Truy xuất 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 liệu thông qua DAO 150 5.5.1 Tham chiếu đến thƣ viện đối tƣợng 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 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 ADO 163 5.6.3 Các đối tƣợng 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 liệu sử dụng Data View 186 5.7.2 Tạo trình thiết kế mơi trƣờng liệu sử dụng Data View 187 5.7.3 Tạo báo cáo liệu 188 5.7.3 Tạo báo cáo 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 tốn 196 5.8 Trình đóng gói 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 triển khai ứng dụng 223 5.8.3 Mở trình đóng gói triển khai nhƣ ứ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ý lệnh Windows Hình 1.2 Cửa sổ API Viewer Hình 1.3 Danh sách hàm Win32API Hình 1.4 Cú pháp hàm AddPrinter cửa sổ API Viewer Hình 1.5 Khởi động Visual Basic 6.0 từ nút Start Hình 1.6 Biểu tƣợng Visual Basic 6.0 hình .8 Hình 1.7 Màn hình làm việc Visual Basic 6.0 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 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 Project (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 cửa sổ lệnh (Code) 33 Hình 2.3 Khai báo Option Explicit 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 liệu (InputBox) 43 Hình 3.1 Nhập giá trị cho thuộc tính List 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 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 phân cấp đố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 ADO 163 Hình 5.12 Điều khiển Adodc .173 Hình 5.13 Thuộc tính ConnectionString 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 GIỚI THIỆU VỀ LẬP TRÌNH WINDOWS VÀ VISUAL BASIC 6.0 1.1 Giới thiệu lập trình Windows Khi cấu trúc Windows đƣợc tạo ra, Microsoft có ý định tạo số lớn chức lập trình có giá trị cho chƣơng trình dựa Windows Chiến thuật phục vụ hai mục đích, cung cấp ứng dụng Windows nhìn cảm giác quán nhƣ khiến cho ngƣời lập trình khỏi phải chép lại hàm mà đƣợc mã hóa debug Những hàm đƣợc lƣu trữ dãy thƣ viện liên kết động ( DLL ) đƣợc biết nhƣ giao diện lập trình ứng dụng ( API ) Từ phát triển thành hệ điều hành 32bit, Windows 95 phiên đƣợc biết đến nhƣ Win32 API Một vài hàm Win32 API có giá trị nhƣ lệnh Visual Basic, nhƣng phần lớn đƣợc truy cập cách gọi hàm API Khi nắm rõ chất Windows API để lập trình sâu với hệ thống, ta cần hiểu biết sơ Hệ điều hành Windows cách thức điều khiển Hệ điều hành ứng dụng để can thiệp nhƣ: bổ sung chức chí biến đổi nó, bắt thực theo hƣớng Các chƣơng trình ứng dụng Windows có nhiều cửa sổ phục vụ cho Cửa sổ Form chí Dialog Mỗi cửa sổ có handle (cán) để hệ thống nhận biết hệ điều hành Windows tạo Cán cửa sổ số Hệ điều hành chƣơng trình ứng dụng trì hàng đợi lệnh cần thực Mỗi ứng dụng có hàng đợi (Message Queue) Khi ngƣời sử dụng lệnh có biến cố, chƣơng trình điều khiển thiết bị nhập (INPUT) chuyển thông tin vào thành lệnh đặt lệnh vào hàng đợi hệ thống (System Message Queue) Hệ điều hành lấy lần lƣợt lệnh hàng đợi hệ thống kiểm tra để xác định cửa sổ tiếp nhận đặt vào hàng đợi (thread message) lệnh tƣơng ứng Các chƣơng trình ứng dụng vào lệnh để thực nhƣ xử lý chúng Các cửa sổ giống nhƣ động tự động chạy theo vòng lặp Tiếp "nhiên liệu" cho "động cơ" hệ điều hành Windows Hệ điều hành Windows nhận lệnh (message) từ hàng đợi hệ điều hành, dùng hàm dạng API để cung cấp lệnh tới cửa sổ thơng qua cán (handle) cửa sổ Có nghĩa thân cửa sổ ln có hàm gọi WinProc gọi WinMain Hàm cốt lõi xử lý cửa sổ Trong hàm, lặp lặp lại liên tục dịng lệnh sau thông qua cấu trúc: Do While GetMessage (message, 0, 0,0) TranslateMessage message DispatchMessage message Loop Trong message lệnh mà hệ điều hành cung cấp, thông qua cán (handle) cửa sổ Đƣơng nhiên, lệnh có giá trị WM_QUIT hàm WinProc cửa sổ chấm dứt vòng lặp Còn lệnh message khác giá trị trên, dịng lệnh thực Cụ thể: TranslateMessage message -> Dịch lệnh thành dạng liệu khác đặt kết vào hàng đợi ứng dụng DispatchMessage message ->Nhận lệnh từ hàm GetMessage gửi cho hệ thống Hệ thống đƣa lệnh cho ứng dụng Windows có hàng ngàn lệnh khác dạng WM_* Một hàm WinProc nhận vào biến theo khn 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ý lệnh, phải đƣa trả lệnh cho hệ điều hành xử lý thông qua hàm DefWindowProc Hàm DefWindowProc gởi lại lệnh WM_CLOSE cho WinProc Hàm WinProc lại gởi trả WM_CLOSE cho DefWindowProc lần nhƣ mơ tả Ta tóm lại sơ nhƣ sau: Hình 1.1 Cơ chế xử lý lệnh Windows Các lệnh đƣa tới ngăn chờ thông thƣờng từ nguồn sau: 1) Hệ thống đặt vào 2) Chƣơng trình khác đặt vào Ví dụ: Lập chƣơng trình sử dụng điều khiển ListBox điều khiển Commandbutton thiết kế form bán hàng theo mẫu: Bƣớc Thiết kế form: Đƣa điều khiển lên form, xác lập vị trí, kích thƣớc điều khiển cho phù hợp Bƣớc Thiết lập giá trị cho số thuộc tính điều khiển theo bảng: TT Điều khiển Thuộc tính Giá trị Name Form1 Form Caption Công ty máy tính VNAPC ListBox Name LstKH Name LstCT List CPU Mainboard CD-ROM ListBox RAM Commandbutton Commandbutton Commandbutton Commandbutton Name cmdadd Caption -> Name cmdreturn Caption > Name cmdreturnall Caption 0) And (LstKH.Text "") Then LstKH.RemoveItem LstKH.ListIndex End If End Sub Bƣớc Chạy chƣơng trình (F5) 3.7 Điều khiển ScrollBar Điều khiển cuộn ngang HScrollBar có biểu tƣợng hộp cơng cụ , cuộn dọc VScrollBar có biểu tƣợng Các cuộn cho phép ta dễ dàng duyệt qua danh sách dài gồm nhiều phần tử lƣợng thơng tin lớn cách kích vào mũi tên cuộn lên xuống cuối cuộn, cách di chuyển hộp cuộn (một nút nhỏ mũi tên cuộn) cuộn Điều khiển cuộn có số thuộc tính quan trọng sau: Thuộc tính Min Giải thích Giá trị nhỏ điều khiển hộp cuộn nằm đỉnh mép bên trái cuộn tƣơng ứng Giá trị ngầm định Max 89 Giá trị lớn điều khiển hộp cuộn nằm dƣới đáy mép bên phải cuộn tƣơng ứng Giá trị ngầm định 32767 Value Là số nguyên tƣơng ứng với vị trí hộp cuộn cuộn LargeChange Lƣợng thay đổi giá trị thuộc tính Value ngƣời sử dụng kích chuột cuộn SmallChange Lƣợng thay đổi giá trị thuộc tính Value ngƣời sử dụng kích vào mũi tên cuộn Điều khiển cuộn sử dụng kiện Scroll Change để theo dõi dịch chuyển hộp cuộn cuộn Sự kiện Giải thích Change Xảy sau hộp cuộn dịch chuyển Scroll Xảy hộp cuộn dịch chuyển Không xảy mũi tên cuộn cuộn đƣợc kích 3.8 Điều khiển Image điều khiển Picture 3.8.1 Điều khiển ảnh Image Điều khiển ảnh Image có biểu tƣợng hộp công cụ Điều khiển dùng để hiển thị ảnh lên Form Một số thuộc tính hay dùng điều khiển Image: Thuộc tính Giải thích Name Dùng để đặt tên cho điều khiển Image Picture Dùng để thiết lập file ảnh bạn muốn hiển thị điều khiển BorderStyle Quy định kiểu khung: – None: khơng có khung – Fixed Single: có khung Stretch Quy định hình ảnh có tự co/giãn cho vừa với khung ảnh hay khơng Nếu nhận giá trị True: hình ảnh tự co giãn cho vừa vặn đối tƣợng, nhận giá trị False: hình ảnh khơng co giãn 3.8.2 Điều khiển hộp hình Điều khiển hộp hình PictureBox có biểu tƣợng hộp cơng cụ Điều khiển hộp hình đƣợc sử dụng để hiển thị đồ hoạ, làm đối tƣợng chứa đối tƣợng khác, hiển thị đầu phƣơng thức đồ hoạ nhƣ văn phƣơng thức Print Điều khiển hộp hình tƣơng tự nhƣ điều khiển ảnh Image, chúng đƣợc sử dụng để hiển thị hình ảnh hỗ trợ định dạng ảnh nhƣ Tuy nhiên, 90 điều khiển hộp hình có nhiều chức mà điều khiển ảnh khơng có ví dụ nhƣ chức làm đối tƣợng chứa cho đối tƣợng khác hỗ trợ phƣơng thức đồ hoạ Điều khiển hộp hình hiển thị file ảnh có định dạng nhƣ BMP, WMF, GIF, JPEG, ICO Khi điều khiển hộp hình đƣợc đặt lên Form ta nạp hình ảnh vào lúc thiết kế cách chọn thuộc tính Picture từ cửa sổ Properties điều khiển thi hành ứng dụng cách sử dụng thuộc tính Picture hàm LoadPicture Ví dụ: Picture1.Picture = LoadPicture("c:\windows\setup.bmp") Để xố hình ảnh khỏi điều khiển ta sử dụng hai lệnh sau: Picture1.Picture = LoadPicture Hoặc Set Picture1.Picture = Nothing Ngầm định hình ảnh đƣợc nạp vào hộp hình với kích thƣớc ngun chúng, điều có nghĩa hình ảnh có kích thƣớc lớn kích thƣớc điều khiển hình ảnh bị cắt bớt ta nhìn thấy đƣợc phần điều khiển khơng tạo cuộn Để điều khiển tự động thay đổi kích thƣớc cho vừa với kích thƣớc ảnh ta thiết lập giá trị True cho thuộc tính AutoSize Giống nhƣ Form, điều khiển hộp hình đƣợc sử dụng để nhận đầu phƣơng thức đồ hoạ nhƣ Circle, Line, Point v.v…Ví dụ ta dùng phƣơng thức Circle để vẽ vòng tròn hộp hình nhƣ sau: Private Sub Form_Click() Picture1.AutoRedraw = True Picture1.Circle (1200, 1000), 750 End Sub Chạy chƣơng trình nhấp chuột vào Form, thấy nhƣ hình dƣới đây: 91 Để đầu phƣơng thức đƣợc vẽ vào điều khiển tự động vẽ lại điều khiển thay đổi kích thƣớc hiển thị lại bị đối tƣợng khác che khuất ta thiết lập giá trị True cho thuộc tính AutoRedraw Ta đƣa văn điều khiển hộp hình cách sử dụng phƣơng thức Print thiết lập giá trị True cho thuộc tính AutoRedraw Ví dụ: Picture1.Print "Trƣờng Đại học SPKT Nam Định" Khi sử dụng phƣơng thức Print ta thay đổi kiểu font, cỡ chữ sử dụng thuộc tính CurrentX, CurrentY, Height, Width để lề cho văn hộp hình 3.9 Các điều khiển DriveListBox, DirListBox FileListBox DriveListBox điều khiển có dạng giống ComboBox nội dung DriveListBox kí tự ổ đĩa nhãn DirListBox danh sách đặc biệt hiển thị thƣ mục Điều khiển FileListBox điều khiển hộp danh sách với mục đích hiển thị tất tệp tin thƣ mục cho, chọn lọc chúng theo tên, phần mở rộng thuộc tính Các điều khiển thƣờng đƣợc thiết kế Form, ngƣời sử dụng chọn ổ đĩa DriveListBox điều khiển DirListBox đƣợc cập nhật để hiển thị thƣ mục ổ đĩa đó, ngƣời sử dụng chọn thƣ mục (đƣờng dẫn) điều khiển DirListBox điều khiển FileListBox hiển thị tệp tin thƣ mục Tuy nhiên, thao tác khơng thực cách tự động mà ta phải viết mã để thực chúng Ta sử dụng số thuộc tính sau điều khiển: Drive: Là thuộc tính điều khiển DriveListBox, trả tên ổ đĩa đƣợc chọn điều khiển DriveListBox lúc chƣơng trình chạy Path: Là thuộc tính điều khiển DirListBox, dùng để thiết lập trả đƣờng dẫn đến thƣ mục đƣợc chọn DirListBox Path thuộc tính FileListBox, dùng để thiết lập trả đƣờng dẫn đến thƣ mục chứa tệp tin đƣợc chọn FileListBox Pattern: Là thuộc tính FileListBox dùng để lọc loại tệp tin đƣợc hiển thị FileListBox Filename: Là thuộc tính FileListBox, trả tên tệp tin đƣợc chọn FileListBox Ví dụ: Dùng điều khiển DriveListBox, DirListBox, FileListBox điều khiển Image để lập chƣơng trình hiển thị file ảnh định dạng *.jpg *.gif, theo form mẫu sau: 92 Bƣớc Thiết kế form: đƣa điều khiển lên form, xác lập vị trí, kích thƣớc cho điều khiển cho phù hợp Bƣớc Thiết lập giá trị số thuộc tính cho điều khiển theo bảng: TT Điều khiển Thuộc tính Giá trị Name Form1 Caption Xem ảnh DriveListBox Name O_dia DirListBox Name Thu_muc FileListBox Name Tep Image Name Hinh Form Ghi Bƣớc Mở cửa sổ Code Form1 gõ vào dòng lệnh: Private Sub O_dia_Change() Thu_muc.Path = Left(O_dia.Drive, 1) & ":\" End Sub „ Private Sub Thu_muc_Change() Tep.Path = Thu_muc.Path Tep.Pattern = "*.jpg;*.gif" End Sub „ Private Sub Tep_Click() FileName = Tep.Path If Right$(FileName, 1) "\" Then FileName = FileName & "\" FileName = FileName & Tep.FileName Hinh.Picture = LoadPicture(FileName) 93 End Sub Bƣớc Chạy chƣơng trình (F5) 3.10 Điều khiển Timer Điều khiển Timer có biểu tƣợng hộp cơng cụ Điều khiển Timer cho phép ta theo dõi thời gian Điều khiển Timer nhƣ đồng hồ kích hoạt kiện chƣơng trình sau khoảng thời gian đặn mà ta Sự kiện Timer kích hoạt đƣợc gọi kiện Timer, ta viết mã kiện để thực cơng việc Điều khiển Timer có hai thuộc tính quan trọng Interval Enabled Thuộc tính Interval khoảng thời gian đƣợc tính mili giây hai kiện Timer Giá trị Interval từ đến 64.767 nghĩa khoảng thời gian dài hai kiện Timer không lâu 64.8 giây Khi đƣợc đặt lên form thuộc tính Interval có giá trị 0, ta gán cho giá trị phù hợp cửa sổ Properties thủ tục Form_Load chƣơng trình nhƣ sau: Private Sub Form_Load() Timer1.Interval = 1000 'Một giây kiện Timer đƣợc thực lần End Sub Thuộc tính Enabled cho phép ta khởi động dừng hoạt động Timer Ví dụ: Sử dụng điều khiển: Timer, Line, Shape viết chƣơng trình mơ tả đèn giao thơng ngã tƣ, nhƣ hình sau: 94 Bƣớc Thiết kế form: Đƣa điều khiển Line, Shape lên form để vẽ ngã tƣ, hộp đèn đèn hai góc ngã tƣ đèn xanh, vàng, đỏ Bƣớc Gán thuộc name điều khiển Shape dùng để vẽ đèn là: Xanh1, Vang1, Do1 Xanh2, Vang2, Do2; thuộc tính FillStyle điều khiển 0-Solid Bƣớc Mở cửa sổ lệnh (Code) gõ vào dòng lệnh sau: Dim t As Byte, d As Boolean Private Sub Form_Load() t=0 d = True Timer1.Interval = 10000 End Sub „ Private Sub Timer1_Timer() If t = Then xanh1.FillStyle = do2.FillStyle = xanh2.FillStyle = do1.FillStyle = vang1.FillStyle = vang2.FillStyle = t=2 Timer1.Interval = 10000 Else If t = Then xanh1.FillStyle = do2.FillStyle = xanh2.FillStyle = do1.FillStyle = vang1.FillStyle = vang2.FillStyle = t=4 Timer1.Interval = 1000 Else If t = Then xanh1.FillStyle = do2.FillStyle = 95 xanh2.FillStyle = do1.FillStyle = vang1.FillStyle = vang2.FillStyle = t=6 Timer1.Interval = 10000 Else xanh1.FillStyle = do2.FillStyle = xanh2.FillStyle = do1.FillStyle = vang1.FillStyle = vang2.FillStyle = t=0 Timer1.Interval = 1000 End If End If End If End Sub 3.11 Xử lý chuột Một số kiện xảy tác động ngƣời sử dụng chuột Những kiện là: Sự kiện Giải thích MouseDown Xảy ngƣời sử dụng nhấn nút chuột MouseUp Xảy ngƣời sử dụng thả nút chuột MouseMove Xảy trỏ chuột di chuyển đến điểm mà hình Các Tham số truyền vào kiện gồm: Tham số Giải thích Button Cho biết nút chuột đƣợc nhấn Shift Cho biết phím SHIFT, CTRL hay ALT đƣợc nhấn X,Y Vị trí trỏ chuột, với hệ toạ độ đối tƣợng bắt kiện Ta dùng thuộc tính MousePointer MouseIcon để thị biểu tƣợng trỏ hình hay trỏ chuột Thuộc tính MousePointer cho phép chọn 96 mƣời sáu kiểu trỏ Giá trị mặc định thuộc tính MousePointer 0Default hiển thị theo kiểu Windows quy định Hằng Giá Diễn giải trị ccDefault (Default) Shape determined by the object ccArrow Arrow ccCross Cross (cross-hair pointer) ccIbeam I Beam ccIcon Icon (small square within a square) ccSize Size (four-pointed arrow pointing north, south, east, and west) ccSizeNESW Size NE SW (double arrow pointing northeast and southwest) ccSizeNS Size N S (double arrow pointing north and south) ccSizeNWSE Size NW, SE ccSizeEW Size E W (double arrow pointing east and west) ccUpArrow 10 Up Arrow ccHourglass 11 Hourglass (wait) ccNoDrop 12 No Drop ccArrowHourglass 13 Arrow and hourglass ccArrowQuestion 14 Arrow and question mark ccSizeAll 15 Size all 3.12 Xử lý bàn phím Sự kiện chuột bàn phím có vai trị chủ yếu hoạt động tƣơng tác ngƣời sử dụng chƣơng trình Ta kiểm sốt phím nhấn theo mức: điều khiển biểu mẫu Mức điều khiển cho phép lập trình với điều khiển, mức biểu mẫu cho phép ta lập trình với ứng dụng Sự kiện bàn phím Xảy KeyPress Khi phím có mã ASCII đƣợc nhấn KeyDown Khi phím đƣợc nhấn KeyUp Khi phím đƣợc thả Chỉ có điều khiển focus bắt kiện bàn phím Đối với biểu mẫu, bắt đƣợc đƣợc kích hoạt điều khiển biểu mẫu khơng có focus 97 Điều xảy với biểu mẫu trống biểu mẫu có điều khiển bị cấm Tuy nhiên, quy định thuộc tính KeyPreview biểu mẫu thành True, biểu mẫu nhận kiện bàn phím điều khiển trƣớc điều khiển nhận đƣợc Cách hữu dụng ta muốn thi hành hoạt động phím đƣợc nhấn, điều khiển forcus KeyDown KeyUp phát tình mà KeyPress khơng thể phát hiện: - Tổ hợp phím SHIFT, CTRL ALT - Phím định hƣớng (← → ↑ ↓) lƣu ý số điều khiển (nút lệnh, nút tuỳ chọn, hộp đánh dấu) khơng bắt kiện phím định hƣớng Thay vào đó, phím gây dịch chuyển điều khiển khác - PageUp PageDown - Phân biệt đƣợc phím số bàn phím phải với phím số bàn phím trái - Đáp ứng thả phím - Phím chức khơng trùng với menu Sự kiện bàn phím khơng loại trừ Khi ngƣời sử dụng nhấn phím, KeyDown KeyPress phát Khi ngƣời sử dụng nhấn phím mà KeyPress khơng phát đƣợc, có KeyDown xảy ra, KeyUp Trƣớc dùng KeyUp, KeyDown phải đảm bảo KeyPress không làm đƣợc Sự kiện phát phím có mã ASCII chuẩn: Chữ cái, chữ số, dấu ngắt câu, Enter, Tab Backspace Nói chung, viết chƣơng trình cho kiện KeyPress dễ 3.13 Câu hỏi trắc nghiệm 1) Chọn nút lệnh đƣợc ngƣời sử dụng nhấn biết hàm Msgbox trả giá trị a Ok b Cancel c Retry d Yes 2) Chọn điều khiển để hiển thị danh sách thƣ mục lƣu máy a DirListBox b DriveListBox c FileListBox d ComboBox 3) Chọn thuộc tính để lấy tên tập tin đƣợc chọn điều khiển FileListBox chạy chƣơng trình a Path b FileName c Drive 98 d Pattern 4) Chọn kiện xảy ngƣời sử dụng sửa đổi chuỗi ký tự ComboBox TextBox a Click b Change c Keypress d Cả kiện 5) Chọn thuộc tính để thiết lập tiêu đề cho form a Appearence b Caption c BorderStyle d Backcolor 6) Chọn thuộc tính để qui định TextBox có nhìn thấy hay khơng chạy chƣơng trình a Visible b Text c Multiline d Enable 7) Chọn thuộc tính để lấy số phần tử Listbox a ListCount b ListIndex c Text d List 8) Chọn thuộc tính để lấy nội dung văn TextBox a Alignment b Seltext c Multiline d Text 9) Chọn kiện xảy ngƣời sử dụng nhấn phím bàn phím chƣơng trình thực a Change b Click c KeyDown d Keypress 10) Chọn thuộc tính để qui định văn TextBox hiển thị nhiều dịng a Alignment 99 b Name c Multiline d Forecolor 11) Thuộc tính dùng để qui định vị trí cho điều khiển a Top, Width b Height, Left c Width, Height d Top, Left 12) Chọn kiện xảy ngƣời sử dụng kích đúp chuột đối tƣợng tầm ngắm a Change b Click c DblClick d Keypress 13) Chọn phƣơng thức để xoá tất phần tử khỏi ListBox lúc chạy chƣơng trình a Add b Remove c Clear d RemoveItem 14) Chọn thuộc tính để lấy giá trị tƣơng ứng với vị trí ngang HScrollBar a SmallChange b LargeChange c Max d Value 15) Chọn thuộc tính qui định hình ảnh điều khiển Image tự co giãn để vừa với kích thƣớc điều a Stretch b AutoSize c Picture d BorderStyle 3.14 Bài tập Bài tập 1: Lập chƣơng trình tạo form viết mã cho nút lệnh dùng để chép, cắt, dán đoạn văn đƣợc chọn hai khối văn đƣợc gõ vào Textbox nhƣ sau: 100 Bài tập 2: Lập chƣơng trình sử dụng điều khiển thơng dụng để vẽ hình theo tuỳ chọn tơ màu cho hình theo mẫu Bài tập 3: Lập chƣơng trình sử dụng điều khiển thơng dụng cho phép thực phép tốn tìm ƣớc số chung lớn bội số chung nhỏ hai số nguyên dƣơng theo form mẫu: Bài tập 4: Lập trình chọn file ảnh từ hộp thoại Open, hiển thị ảnh dùng điều khiển Picture Thiết lập thuộc tính để hình ảnh tự co giãn cho vừa với kích thƣớc điều khiển Picture 101 Bài tập 5: Lập chƣơng trình sử dụng điều khiển : Listbox, Commandbutton, Label thiết kế fỏm viết mã cho nút lệnh để bổ sung loại bỏ phần tử hai danh sách theo mẫu : Bài tập 6: Lập trình vẽ hình, phối màu tơ màu cho hình theo mẫu : 102 ... byte -3 2768 đến 32767 Long byte - 214 7483648 đến 214 7483647 Single byte -3 .402823 E38 đến -1 . 4 012 98 E-45 1. 4 012 98 E-45 đến 3.402823 E38 30 Phạm vi Double byte -1 . 79769 313 4862 31 E308 đến -4 .940656458 412 47... thông tin 11 1 4.4 Điều khiển ToolBar 11 1 4.4 .1 Thêm nút lên ToolBar 11 1 4.4.2 Chèn hình ảnh từ ImageList lên nút 11 1 4.2.3 Các thuộc tính Button ToolBar 11 2 4.5 Điều... 1. 10 Cửa sổ Form Layout .12 Hình 1. 11 Lệnh Lock Control 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 Project (New Project) 16 Hình 1. 14