Giáo trình Lập trình Visual Basic - Lương Trần Hy Hiến

doc 290 trang ngocly 2440
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Visual Basic - Lương Trần Hy Hiến", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docgiao_trinh_lap_trinh_visual_basic_luong_tran_hy_hien.doc

Nội dung text: Giáo trình Lập trình Visual Basic - Lương Trần Hy Hiến

  1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM TP.HCM Khoa Toán – Tin học  TÀI LIỆU THAM KHẢO LẬP TRÌNH VISUAL BASIC Giảng viên: Lương Trần Hy Hiến Email: hienlth@hcmup.edu.vn TP.HCM – 12/2008 Giáo trình Visual Basic 6.0 1
  2. MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VISUAL BASIC 10 1. Lập Trình Trên Windows 10 2. Các Control Chuẩn Của Windows 11 3. Giới Thiệu Visual Basic 12 4. Màn Hình Làm Việc Của Visual Basic 13 Toolbox 14 Project Explorer 14 Properties Windows 15 Cửa sổ Form 16 Cửa sổ Code Edittor 19 Cửa sổ Form Layout 21 Để thiết kế giao diện nhanh chóng 21 5. Cấu trúc chương trình Visual Basic 22 6. Các Thao Tác Cơ Bản Với Project 23 7. Các control cơ bản của Visual Basic 24 8. Tạo và thực thi chương trình đầu tiên 24 9. Bài tập 26 CHƯƠNG 2: CÁC CONTROL CƠ BẢN 28 1. Đối Tượng 28 Đặc điểm của đối tượng 28 2 Giáo trình Visual Basic 6.0
  3. 2. Đối Tượng Form 29 3. Đối Tượng Label 31 4. Đối Tượng Textbox 33 5. Đối Tượng Commandbutton 35 6. Viết Lệnh Cho Đối Tượng 35 7. Một Số Lệnh Cơ Bản 37 8. Bài tập thực hành 1 38 Thiết kế Form 39 Viết lệnh cho chương trình 39 9. Bài tập thực hành 2 42 10. Frame 43 11. Image 44 12. Line 45 13. Shape 46 14. Bài Tập 47 CHƯƠNG 3: BIẾN – HẰNG – CẤU TRÚC LỆNH 52 1. Các Kiểu Dữ Liệu Trong Vb 52 2. Biến (Variable) 53 3. Hằng 57 Giáo trình Visual Basic 6.0 3
  4. 4. Các Phép Toán 57 5. Các Hàm Cơ Bản Của Vb 59 Các hàm toán học 59 Hàm tạo số ngẫu nhiên (random) 60 Hàm xử lý chuỗi 60 Hàm kiểm tra giá trị 61 Hàm ký tự 61 Hàm màu sắc 62 Hàm nhập dữ liệu inputbox 62 Hàm tạo hộp thông báo msgbox 63 6. Các Cấu Trúc Lệnh 67 A. Cấu trúc rẽ nhánh If – Select case 67 7. Bài tập thực hành If 74 Thiết kế giao diện 74 Viết code cho chương trình 74 B. Cấu Trúc Lặp For – While – Do While 77 8. Check Box 88 9. Option Button 89 10. ListBox 92 11. Combo Box 97 12. Bài Tập 103 CHƯƠNG 4: THỦ TỤC 110 1. Hàm Format 110 4 Giáo trình Visual Basic 6.0
  5. 2. Thủ Tục – Hàm 111 3. Mảng 118 Mảng tĩnh 1 chiều 118 Mảng nhiều chiều tĩnh 122 Mảng động 124 4. Các Thuật Toán Cơ Bản 127 Cộng dồn 127 Cộng dồn theo điều kiện 128 Tìm kiếm tuần tự 129 Tìm phần tử nhỏ nhất – lớn nhất 130 Sắp xếp mảng 131 5. Sử Dụng Một Số Hàm Xử Lý Chuỗi 132 6. Gỡ Rối Chương Trình 137 7. In Ấn 138 8. Mảng Đối Tượng 139 9. Đối Tượng Timer 141 10. Bài tập 144 CHƯƠNG 5: CHƯƠNG TRÌNH NHIỀU FORM 156 1. Chương Trình Nhiều Form 156 Thêm Form vào project 156 2. Quản lý Project 158 3. Vấn đề sử dụng biến, thủ tục và đối tượng có trong các Form 158 4. Quy định Form thực hiện trước 160 Giáo trình Visual Basic 6.0 5
  6. 5. Hiện Form lên màn hình 160 3. FORM MDI (Multi Document Interface) 165 4. Splash Screen 167 5. Tạo Menu Cho Một Form 170 6. End Sub 173 7. Các Hàm Về Dữ Liệu Ngày Giờ 176 8. Bài tập 177 CHƯƠNG 6: SỰ KIỆN PHÍM 182 1. Các Sự Kiện Phím 182 2. Sự Kiện Mouse 185 3. Xử Lý Lỗi Run Time Error 189 4. Common Dialog 191 5. Bài tập 197 CHƯƠNG 7: PHẦN NÂNG CAO 198 1. Windows Common Control 198 2. ImageList 198 3. Toolbar 201 4. Updown control 206 6 Giáo trình Visual Basic 6.0
  7. 5. Slider 207 6. Làm việc với tập tin (file) 207 CHƯƠNG 8: TÙY BIẾN MÔI TRƯỜNG IDE CỦA VISUAL BASIC 210 1. Danh sách các Prefix được đề nghị nên sử dụng 210 2. Đóng Những Cửa Sổ Phụ 210 3. Sử dụng Toolbar Standard 212 4. Sử Dụng Short Cut (Phím Tắt) Của Vb Hiển Thị Các Cửa Sổ 213 5. Thả Nổi Các Cửa Sổ 213 6. Sử Dụng Edit Toolbar 214 7. Thay Đổi Các Xác Lập Của Môi Trường VB 215 8. Sử Dụng Shortcuts (Phím Tắt) Khi Soạn Thảo Code 218 9. Tách Cửa Sổ Soạn Thảo 220 10. Kéo Và Thả 221 11. Tạo Nhiều Đối Tượng Nhanh 221 12. Sử Dụng Form Editor Toolbar 221 13. Điều Chỉnh Đối Tượng Bằng phím 222 14. Sử Dụng Colot Palette để chọn màu 223 Giáo trình Visual Basic 6.0 7
  8. 15. Sử Dụng Shortcuts Để Thực Thi Một Project 223 16. Sử Dụng Object Brower 224 17. Sử dụng từ khóa With 227 18. Sử Dụng giúp đỡ (Help) 227 PHỤ LỤC 1: CÀI ĐẶT VISUAL BASIC 228 PHỤ LỤC 2: BÀI TẬP LUYỆN TẬP 236 1. Bài tập tổng hợp 236 2. Đề thi trắc nghiệm 244 TÀI LIỆU THAM KHẢO 285 8 Giáo trình Visual Basic 6.0
  9. Giáo trình Visual Basic 6.0 9
  10. CHƯƠNG 1: GIỚI THIỆU VISUAL BASIC NỘI DUNG GIỚI THIỆU VỀ NGÔN NGỮ VISUAL BASIC MÔI TRƯỜNG IDE CỦA VISUAL BASIC VIẾT CHƯƠNG TRÌNH ĐẦU TIÊN 1. Lập Trình Trên Windows Khi viết chương trình trên Windows nghĩa là chúng ta tạo ra một ứng dụng được thực thi trong hệ điều hành Microsoft Windows. Trong Microsoft Windows, một ứng dụng thường được hiển thị ở dạng cửa sổ (Window) mà từ góc nhìn của người lập trình Viual Basic, người ta gọi là FORM. Trên cửa sổ của ứng dụng có các điều khiển (control) để giao tiếp với người sử dụng. Các tác động của người sử dụng lên cửa sổ hay các điều khiển tương ứng sẽ có một đoạn chương trình được thực hiện để đáp trả lại sự kiện đó. Ví dụ: Giao diện một chương trình đổi Font chữ 10 Giáo trình Visual Basic 6.0
  11. 2. Các Control Chuẩn Của Windows Command button Check box Option button Label và Text box List box và Combo box Frame Giáo trình Visual Basic 6.0 11
  12. Thanh cuốn ngang –dọc (Hscrollbar, Vscrollbar) Image - Picturebox Ngòai ra còn nhiều control khác sử dụng trên môi trường Windows mà chúng ta sẽ lần lượt khảo sát sau này. 3. Giới Thiệu Visual Basic Visual Basic (viết tắt VB) là một ngôn ngữ lập trình hướng sự kiện trên môi trường phát triển tích hợp (IDE) được phát triển bởi hãng phần mềm Microsoft. Visual Basic đã được nâng cấp qua nhiều phiên bản và hiện nay là Visual Basic.NET. Visual Basic bắt nguồn phần lớn từ ngôn ngữ BASIC và giúp lập trình viên phát triển các giao diện đồ họa (GUI) theo mô hình phát triển ứng dụng nhanh (Rapid Application Development, RAD); truy cập các cơ sở dữ liệu dùng DAO (Data Access Objects), RDO (Remote Data Objects), hay ADO (ActiveX Data Objects); và lập các điều khiển và đối tượng ActiveX. IDE của VB là nơi tập trung các menu, thanh công cụ và cửa sổ để tạo ra chương trình. Thanh menu cho phép bạn tác động cũng như quản lý trực tiếp trên toàn bộ ứng dụng. Thanh công cụ cho phép truy cập các chức năng của thanh menu qua các nút trên thanh công cụ. Một lập trình viên có thể phát triển ứng dụng dùng các thành phần (component) có sẵn trong Visual Basic. Các chương trình bằng Visual Basic cũng có thể gọi và sử dụng Windows API. 12 Giáo trình Visual Basic 6.0
  13. Một lập trình viên có thể phát triển ứng dụng dùng các component có sẵn trong Visual Basic. VB cung cấp cho ta những điều khiển (control) cần thiết để tạo giao diện chương trình nhanh chóng. Visual Basic được sử dụng rất nhiều trong lĩnh vực lập trình thương mại. Trong giáo trình này sử dụng phiên bản Visual Basic 6.0 Profressional. Hướng dẫn cách cài đặt Visual Basic từ bộ Visual Studio 98 được để tại phần phụ lục của giáo trình này. 4. Màn Hình Làm Việc Của Visual Basic Giao diện đầu tiên của chương trình cho phép chúng ta chọn loại ứng dụng. Với yêu cầu của môn học này, chúng ta chọn lọai Standard Exe. Giáo trình Visual Basic 6.0 13
  14. Sau khi khởi động Starndard ExE của VB, giao diện chính của chương trình như sau (giao diện trên máy của bạn sẽ thay đổi tùy thuộc các thiết lập của IDE). Toolbox Chứa các đối tượng có thể đặt lên Form. Chúng ta click chuột để chọn điều khiển, sau đó tạo ra trên Form. Hoặc có thể bấm double – click, control sẽ tự động đưa lên Form. Để bật – tắt toolbox, chúng ta dùng nút lệnh trên thanh công cụ. Project Explorer Chứa thông tin về chương trình: các Form, Module, class trong project. 14 Giáo trình Visual Basic 6.0
  15. Từ cửa sổ này chúng ta di chuyển đến các thành phần trong chương trình bằng cách double click chuột vào Form hoặc module Để bật hay tắt cửa sổ Project Explorer, sử dụng phím tắt: Ctrl+R hoặc dùng nút trên thanh toolbar. Properties Windows Dùng để hiển thị và thiết lập các thuộc tính (property) của Form hoặc của các control có trên Form lúc thiết kế. Thuộc tính của một đối tượng là các tính chất, đặc điểm mô tả đối tượng này. Các control mới tạo ra đều có giá trị thuộc tính được lấy mặc định (default) hoặc kế thừa từ control chứa nó. Trên cửa sổ properties gồm hai cột: Danh sách thuộc tính Giá trị của thuộc tính Để thiết lập thuộc tính cho một đối tượng: Chọn đối tượng trên Form bằng cách click chuột Giáo trình Visual Basic 6.0 15
  16. Click chuột vào cột giá trị của thuộc tính cần đặt trên cửa sổ thuộc tính, sau đó chọn hoặc nhập giá trị cho thuộc tính. Một số thuộc tính thông dụng nên nhớ: Backcolor: màu nền của đối tượng Caption: tiêu đề, đây là nội dung hiển thị lên trên đối tượng. Enabled: cho phép hay cấm đối tượng họat động. Font: thiết lập về font chữ của đối tượng Forecolor: màu của các ký hiệu xuất hiện trên đối tượng Height: chiều cao của đối tượng Left: khoảng cách tính từ cạnh trái của Form (hay control chứa đối tượng đó) Name: tên của đối tượng (khác với caption). Top: khoảng cách tính từ cạnh phía trên của Form hay control chứa đối tượng Visible: cho phép đối tượng hiển thị hay không ở thời điểm run-time Width: chiều dài của đối tượng Cửa sổ Form Đây là nơi thiết kế giao diện của 16 Giáo trình Visual Basic 6.0
  17. chương trình. Chúng ta thiết kế giao diện bằng cách đưa đối tượng lên Form. Để mở cửa sổ Form Desiner, chúng ta thực hiện bằng nhiều cách: Từ cửa sổ Project Explorer, bấm Double Click vào Form thiết kế Từ cửa sổ code, bấm phím Shift+F7 Bấm vào nút View Code trên cửa sổ Project Explrer Để chọn một đối tượng trên Form: Dùng chuột rê và chọn nhóm đối tượng Giữ phím Ctrol và click chuột để nhặt và chọn các đối tượng Để di chuyển đối tượng trên Form Dùng chuột rê các đối tượng đến vị trí cần thiết. Chọn đối tượng và di chuyển bằng các phím mũi tên: Để xóa đối tượng trên Form Chọn đối tượng hay nhóm đối tượng và bấm phím delete. Để điều chỉnh kích thước đối tượng Đưa chuột vào các nút vuông bao xung quanh đối tượng và rê chuột để thay đổi kích thước. Giáo trình Visual Basic 6.0 17
  18. Để thay đổi kích thước, vị trí của nhóm đối tượng, chúng ta có thể sử dụng menu Align để gióng hàng và điều chỉnh kích thước. Chọn menu Formmat -> Align để thực hiện gióng hàng đối tượng: theo left, center, right, top . 18 Giáo trình Visual Basic 6.0
  19. Chọn menu Formmat -> Make Same Size định dạng các đối tượng có cùng kích cỡ theo: chiều dài (width), chiều cao (Height) hay cả 2 (Both) Chọn menu Formmat -> Horizontal Spacing (hoặc Vertical Spacing) khi muốn định dạng khỏang cách giữa các đối tượng. Cửa sổ Code Edittor Cửa sổ này dùng để viết lệnh (code) cho chương trình. Giáo trình Visual Basic 6.0 19
  20. Để mở cửa sổ Code Edittor, chúng ta thực hiện bằng nhiều cách: Từ cửa sổ Form, bấm Double Click vào đối tượng cần viết code Từ cửa sổ Form, bấm phím F7 Bấm vào nút View Code trên cửa sổ Project Explrer Trong cửa sổ code, chúng ta thấy có 2 hộp chọn: Đối tượng (Control) Sự kiện (Event) xảy ra trên đối tượng đó 20 Giáo trình Visual Basic 6.0
  21. Cửa sổ Form Layout Dùng để xác định vị trí các cửa sổ khi thực thi chương trình. Đặt biệt khi chương trình có nhiều cửa sổ (Form), việc xác định vị trí trực quan của cửa sổ là rất quan trọng. Chúng ta chỉ việc kéo thả các Form (Form1, Form2) để xác định vị trí của chúng trên màn hình. Để thiết kế giao diện nhanh chóng Nếu trên Form có nhiều đối tượng cùng loại và có thuộc tính giống nhau thì chúng ta tạo một đối tượng và định dạng trước các thuộc tính, sau đó sao chép ra thành nhiều đối tượng khác bằng phím tắt Ctrl+C (copy) và Giáo trình Visual Basic 6.0 21
  22. Ctrl+V (Paste). Ngay khi copy – paste, chương trình sẽ hỏi: Chọn No để không tạo mảng đối tượng. Chỉ khi nào các bạn đã học mảng đối tượng mới chọn yes Nếu có nhiều đối tượng muốn định dạng giống nhau trên một thuộc tính nào đó thì chọn các đối này cùng lúc rồi tiến hành định dạng. Sử dụng các chức năng canh lề, định kích thước do VB cung cấp, khi những thuộc tính này của nhiều đối tượng có liên quan với nhau. Nên thiết lập thuộc tính cho Form (hay đối tượng chứa) như màu chữ, font chữ trước, sau đó mới đặt control lên trên. Làm như vậy để control kế thừa các thiết lập của các thuộc tính này, và chúng ta không mất thì giờ để chọn cho từng control. 5. Cấu trúc chương trình Visual Basic Hai bước chính khi xây dựng một chương trình trên VB là: Thiết kế giao diện: Thiết kế Form và bố trí các đối tượng có trên Form Viết lệnh: Viết các đoạn mã để điều khiển Form và các control ứng với mỗi sự kiện xảy ra. 22 Giáo trình Visual Basic 6.0
  23. Khi thực hiện hai bước này gọi là lập một dự án (project). Mỗi project khi lưu lên dĩa có thể có nhiều tập tin. File *.vbp : file project của chương trình. Chúng ta mở chương trình từ file này File *.frm: file Form chứa giao diện của chương trình File *.bas: chứa module cua chương trình File *.cls: chứa class của chương trình Và ngòai ra còn nhiều lọai file khác nữa (file resource, file temp ) Do đó trước khi lập một project ta nên tạo một folder trên dĩa để lưu project. Khi chép chương trình, chúng ta chép toàn bộ folder này. Chú ý: Mỗi bài tập được lưu trong một folder 6. Các Thao Tác Cơ Bản Với Project Mở một project mới: File –> New project –> standard EXE –> OK Mở một project đã có: File – Open project – Xác định nơi lưu trữ project sau đó chọn tên project muốn mở –> OK Chạy chương trình: Bấm phím F5 hoặc Dừng chương trình Giáo trình Visual Basic 6.0 23
  24. Dùng nút lệnh Đóng một project đang mở: File – remove project Lưu project: File – Save project 7. Các control cơ bản của Visual Basic Visual Basic chứa nhiều control, nhưng trong nội dung của môn học này chúng ta chỉ tập trung vào các control cơ bản. 8. Tạo và thực thi chương trình đầu tiên Tạo project mới với giao diện như sau: (Xem hình) Đặt tên (thuộc tính Name) cho các nút lệnh lần lượt là Cmd1, Cmd2 Cmd9, 24 Giáo trình Visual Basic 6.0
  25. Cmd0, Cmdcong, Cmftru, cmdnhn, CmdChia, CmdBang. Để thay đổi name của các control, chúng ta mở cửa sổ Properties, sau đó chọn từng control một, và đổi Name. Nhập thuộc tính Caption của các button là các giá trị tương ứng. Đặt tên cho textbox là txtketqua. Nhập thuộc tính text của textbox là rỗng Bấm F5 thực thi chương trình. Dừng chương trình Double click vào nút lệnh CmdBang để hiển thị cửa sổ code. Nhập lệnh như hình dưới. Bấm F5 thực thi chương trình. Bấm vào nút = (CmdBang) và xem xét hộp thoại hiển thị trên màn hình. Giáo trình Visual Basic 6.0 25
  26. 9. Bài tập 1. Thực hiện các yêu cầu sau: Tạo Project. EXE. Tắt / mở các thành phần của VB: ToolBox, Form, Project Explorer, Code Windows, Properties Window. Lưu Project với tên BaiTap1 trong thư mục BaiTap1 Mở Project và thực thi chương trình 2. Thiết kế giao diện cho chương trình như sau: Lưu ý: Mỗi bài tập nên tạo trên dĩa một folder để lưu những tập tin project, Form của bài tập đó. Hãy tạo một Form có dạng sau: (trong bài tập này ta chưa cần quan tâm đến tên của các đối tượng, vì vậy cứ lấy tên mặc nhiên.) Sau khi thiết kế xong hãy lưu lên dĩa với tên tập tin project là bt1_chuong1 rồi cho thực hiện chương trình thử. 3. Hãy tạo các Form có dạng sau: 26 Giáo trình Visual Basic 6.0
  27. Trong bài tập này ta chưa cần quan tâm đến tên của các đối tượng, vì vậy cứ lấy tên mặc nhiên. Sau khi thiết kế xong hãy lưu lên dĩa với tên tập tin project là Bai3_chuong1 rồi cho thực hiện chương trình thử. Bài tập này nhằm rèn luyện các thao tác sao chép, di chuyển, kỹ năng sử dụng các công cụ định dạng đối tượng: Align Make same size Horizontal spacing Vertical spacing Lock controls Giáo trình Visual Basic 6.0 27
  28. CHƯƠNG 2: CÁC CONTROL CƠ BẢN NỘI DUNG ĐỐI TƯỢNG VÀ CÁCH SỬ DỤNG CÁC CONTROL CƠ BẢN: FORM – LABEL – TEXTBOX – COMMAND BUTTON – FRAME - SHAPE – LINE – IMAGE MỘT SỐ LỆNH CƠ BẢN LẬP TRÌNH TƯƠNG TÁC VỚI CÁC CONTROL 1. Đối Tượng VB là một ngôn ngữ lập trình hướng đối tượng nên làm việc trên VB chính là làm việc trên các đối tượng. Mỗi chương trình trên VB có nhiều đối tượng, mỗi đối tượng dùng để thể hiện một yếu tố nào đó trong chương trình. Đặc điểm của đối tượng Mỗi đối tượng có một tên (Name) để phân biệt và trong chương trình dùng tên này để truy xuất đến đối tượng. Có thể dùng chữ cái, chữ số, _ để đặt tên cho đối tượng và phải bắt đầu bằng một chữ cái. Tên dài tối đa 40 ký tự. Không chứa khoảng trắng và các dấu chấm câu. Không trùng tên với từ khóa. Tên đối tượng không phân biệt chữ hoa hay chữ thường. Tuy nhiên để cho dễ quản lý và thuận lợi khi viết chương trình, người ta đề xuất cách đặt tên như sau: Luôn luôn bắt đầu bằng 3 chữ 28 Giáo trình Visual Basic 6.0
  29. cái thường cho biết loại đối tượng (gọi là prefix.) ví dụ như cmd, lbl, frm, txt. Danh sách Prefix được mô tả ở các phần sau. Mỗi đối tượng có nhiều thuộc tính. Các thuộc tính có thể thay đổi trên cửa sổ properties lúc thiết kế (design time) hoặc bằng chương trình lúc thực thi (run time). Mỗi đối tượng đều có các hoạt động được gọi là phương thức (method). Khi một chương trình được thực hiện mỗi đối tượng nhận được các sự kiện (Event) tác động lên nó (chẳng hạn như click, doudvle click, right click ). Chúng ta viết lệnh trong các event này để xử lý trước các sự kiện nhận vào. Trong các đoạn mã lệnh của chương trình để truy xuất đến các thuộc tính, các phương thức của đối tượng người ta dùng tên của đối tượng kèm theo tên của thuộc tính hoặc phương thức theo cú pháp: . o Ví dụ: txt_hoten.text=”DurianGroup” 2. Đối Tượng Form Form là một đối tượng cơ sở của chương trình. Hầu như mọi chương trình đều bắt đầu từ một Form. Đối tượng này có nhiều property và method. Chúng ta sẽ tìm hiểu tác dụng của một giá trị trên các thuộc tính cơ bản: Caption: Đặt tiêu đề cho Form. Name: tên của Form, đặt 3 ký tự đầu là Frm Borderstyle: Quy định kiểu khung cho Form Giáo trình Visual Basic 6.0 29
  30. o 0-none: Không có khung, kèm theo không có control menubox, Maximize box, minimize box, không hiện tiêu đề và không thể thay đổi kích thước khi chương trình thực hiện. o 1-Fix single: Khung đơn, có control menu box, không thay đổi kích thước được. o 2-Sizable: Có đầy đủ các yếu tố Control menu box, maximize, minimize box, tiêu đề, khung kép và có thể thay đối kích thước được. o 3-Fixed dialog: Cửa sổ dạng hộp thoại, có tiêu đề, control menu box, không thay đổi kích thước o 4-FixtoolWindow: Giống Fixed single nhưng tiêu đề và control menu box có kích thước nhỏ. o 5-Sizable ToolWindow: Giống FixTollWindow nhưng kích thước có thể thay đổi được. ConttrolBox: Nếu đặt là True thì Form sẽ có menu control box, dĩ nhiên nó còn phụ thuộc vào loại border đã chọn. Nếu đặt là false thì không có menu control box, Maximize, Minimize button. Maxbutton: Nếu đặt là True thì Form sẽ có nút maximize, dĩ nhiên nó còn phụ thuộc vào giá trị của controlbox đã chọn. Nếu đặt là false thì không có nút Maximize Minbutton: Nếu đặt là True thì Form sẽ có nút minimize, dĩ nhiên nó còn phụ thuộc vào giá trị của controlbox đã chọn. Nếu đặt là false thì không có nút minimize 30 Giáo trình Visual Basic 6.0
  31. Icon: Quy định biểu tuợng đại diện cho Form khi Form ở trạng thái minimize. Thuộc tính này cũng phụ thuộc vào giá trị của thuộc tính controlbox Picture: Đặt một hình lên nền của Form, có thể là những loại :BMP, DIB, GIF, JPG, ICO,CUR Muốn xóa hình đã đặt trên Form chỉ cần xóa nội dung đang có trên dòng này (bấm phím Delete tại hàng Picture trong cửa sổ Properties). ShowInTaskbar: Nếu đặt là true thì tên của cửa sổ được hiện lên taskbar, ngược lại thì không WindowState: Quy định trạng thái của của số khi Form vừa được mở (chương trình thực hiện), thuộc tính này có giá trị số: o 0: Cửa sổ có kích thước giống như lúc thiết kế. o 1: Hiện cửa sổ ở chế độ cực tiểu o 2: Hiện cửa sổ ở chế độ cực đại 3. Đối Tượng Label Đối tượng này dùng để hiện một câu văn bản trên Form, nội dung câu văn bản này không thể thay đổi bởi người sử dụng trong quá trình chương trình thực hiện. Nếu muốn hiển thị thông tin mà không cho phép người sử dụng nhập, thì chúng ta sử dụng Label. Các thuộc tính cơ bản của Label Name: tên của Label, đặt 3 ký tự đầu là Lbl Caption: Nội dung hiện trên đối tượng này Giáo trình Visual Basic 6.0 31
  32. Font: Quy định font chữ cho nội dung hiện trênllabel Aligment: Canh lề cho nội dung hiện trên label Backcolor: Màu nền của đối tượng BorderStyle: Khung viền Forecolor: Màu của chữ Backstyle: Quy định cách thể hiện nền của label o 0-Transparent: Nền trong suốt, không bị ảnh hưởng bởi backcolor o 1-Opaque: Nền được thê hiện bởi giá quy định trong backcolor Autosize: Nếu đặt bằng true thì kích thước label tự động co giản để vừa với nội dung. Ngược lại đặt bằng false thì phải điều chỉnh bằng tay Wordwrap: Nếu đặt bằng true thì tự động xuống dòng dưới khi đụng lề phải của label. Ngược lại đặt bằng false thì nội dung có thể bị che khuất dài hơn chiều dài của label. Appearance: có 2 giá trị (3D – Flat): cho phép hiển thị dạng phẳng hay 3D Left: vị trí tính từ bên trái control chứa nó Top: vị trí tính từ đỉnh control chứa nó Height: chiều cao Width: chiều dài Visible: (True/False) cho phép đối tượng có được hiển thị hay không ở thời điểm run-time Sự kiện (Event) cơ bản hay sử dụng của Label 32 Giáo trình Visual Basic 6.0
  33. Label_Click: xảy ra khi người sử dụng click chuột trên Label 4. Đối Tượng Textbox Đối tượng Textbox này cho phép nhập và thể hiện một nội dung nào đó dạng chuỗi. Khi chương trình muốn nhận dữ liệu được nhập bởi người sử dụng, chúng ta có thể sử dụng Textbox. Các thuộc tính cơ bản của Textbox: Name: tên textbox, đặt 3 ký tự đầu là Txt Text: Nội dung chứa trong teXtbox Maxlength: Chiều dài tối đa của nội dung thể hiện trong textbox Enable: cho phép textbox có nhận sự kiện, chỉnh sửa nội dung. Giáo trình Visual Basic 6.0 33
  34. Font: các thiết lập về font Aligment: giống Label Backcolor: giống Label Forecolor: giống Label Appearance: giống Label BorderStyle: giống Label Left: vị trí tính từ bên trái control chứa nó Top: vị trí tính từ đỉnh control chứa nó Height: chiều cao Width: chiều dài Visible: (True/False) cho phép đối tượng có được hiển thị hay không lúc run-time Sự kiện (Event) cơ bản của Textbox Text_Change: xảy ra khi nội dung của textbox bị thay đổi Text_Click: xảy ra khi người sử dụng click chuột trên textbox Text_DblClick: xảy ra khi người sử dụng double click chuột trên textbox 34 Giáo trình Visual Basic 6.0
  35. 5. Đối Tượng Commandbutton Là nút lệnh khi muốn chuơng trình thực hiện một xứ lý nào đó dựa trên xác nhận của nguời sử dụng. Người sử dụng click chuột, và nút lệnh được tác động. Ngoài các thuộc tính tương tự như Label, Textbox đã mô tả ở trên, thuộc tính cơ bản của command button quan trọng được sử dụng nhiều nhất là: Caption: nội dung sẽ thể hiện trên nút lệnh. Name: tên command button, đặt 3 ký tự đầu là Cmd Visible: (True/False) cho phép đối tượng có được hiển thị hay không lúc run-time Enabled: Cho phép button có họat động (sáng/mờ) hay không Sự kiện cơ bản hay sử dụng của command button Click: xảy ra khi người sử dụng Click chuột trên command button Giáo trình Visual Basic 6.0 35
  36. 6. Viết Lệnh Cho Đối Tượng Khi ta đặt một đối tượng lên Form thì đối tượng này vẫn chưa hoạt động, bởi ta chưa quy định cho nó phải làm gì thông qua các lệnh. Chúng ta có thể quy định các phản ứng cho đối tượng tùy thuộc vào sự kiện xảy ra trên bản thân đối tượng đó, vì vậy truớc khi viết lệnh cần chú ý hai việc: Xác định sự kiện nào trên đối tượng nào sẽ gây ra các xử lý Viết những lệnh gì để thực hiện xử lý đó Các bước để viết lệnh cho đối tượng: Trên màn hình thiết kế, double click vào đối tượng muốn viết lệnh, khi đó cửa sổ viết lệnh sẽ xuất hiện. Chọn sự kiện mà ta muốn viết lệnh. Khi đó hai dòng (tên hàm sự kiện và dòng kết thúc của thủ tục) tương ứng của sự kiện xuất hiện. Viết các lệnh vào giữa hai dòng vừa xuất hiện. 36 Giáo trình Visual Basic 6.0
  37. Mỗi lệnh viết trên một dòng. Nếu lệnh quá dài muốn ngắt dòng thì để một khoảng trắng và dấu _ ở cuối dòng trên. VB có chế độ hổ trợ cho người lập trình lúc nhập mã lệnh: Ví dụ: Khi cần truy xuất đến một thuộc tính hay phương thúc nào đó của một đối tượng ta gỏ tên đối tượng rồi gõ rồi dấu chấm, lúc này một danh sách các thuộc tính và phương thức của đối tượng này hiện lên ta bấm tiếp các ký tự đầu của thuộc tính/sự kiện mà ta cần rồi bấm phím Tab hay Ctrl-Enter hay Double click. Trong trường hợp danh sách này không hiện lên thì phải xem lại có thể ta đã viết tên đối tượng sai. Nếu thuộc tính mà ta cần không có trong danh sách thì có nghĩa là thuộc tính này không thể thay đổi được bằng chương trình Lưu ý 1: Khi đã viết lệnh cho các đối tượng thì kể từ lúc đó ta không nên thay đổi giá trị thuộc tính name của đối tượng, vì khi đó các lệnh sử dụng tên cũ của đối tượng sẽ không hiểu được đối tượng này. Do đó, nên đặt tên cho các đối tượng trước, rồi sau đó mới bắt đầu viết Code. Giáo trình Visual Basic 6.0 37
  38. Lưu ý 2: Không sửa đổi trên hai dòng tiêu đề và dòng kết thúc. 7. Một Số Lệnh Cơ Bản Lệnh End: Dùng chấm dứt một chương trình VB đang thực hiện. Lệnh gán: Ký hiệu =, lệnh này có công dụng gán giá trị vào biến hoặc gán giá trị mới vào một thuộc tính của đối tượng. Lệnh Val: chuyển từ chuỗi sang số. Chi tiết về kiểu dữ liệu sẽ được đề cập ở các bài sau. 8. Bài tập thực hành 1 Thiết một Form và viết chương trình cho from hoạt động như sau: Trên Form có một textbox được đặt tên txt_mess, nội dung ban đầu là rỗng. Font chữ tiếng Việt, kích thước 14pt 3 đối tượng còn lại là 3 commandbutton có tên tuần tự như sau: cmd_mess, cmd_del, cmd_end. 38 Giáo trình Visual Basic 6.0
  39. Khi sự kiện vào cmd_mess thì câu chào “Chúc mừng bạn đến với VB” xuất hiện trên textbox txt_mess. Khi click vào cmd_del nội dung trên textbox bị xóa. Khi click vào trên cmd_end thì chương trình kết thúc. Khi double – click vào textbox txt_mess thì hiển thị website của bạn Trình tự thực hiện: Thiết kế Form Tạo một folder mới trên dĩa Open một project mới. Đặt tên cho Form là frm_main, caption là “chương trình đầu tiên” Đưa một textbox lên Form, đặt tên là txt_mess, thuộc tính text=””, font chữ VNI_DUFF, cở chữ 14, Aligment: center Đưa một command button lên Form, chỉnh kích thước, chọn font chữ VNI-APTIMA, cở chữ 10. Đặt caption=In lời chào, Name=cmd_mess Chọn nút lệnh thứ hai, đặt name=cmd_del, caption=Xoá nội dung trong textbox Chọn nút lệnh thứ ba, đặt name=cmd_end, caption=kết thúc Giáo trình Visual Basic 6.0 39
  40. Viết lệnh cho chương trình Nhấp kép vào nút lệnh cmd_mess: Nhập thêm hàng quy định cách khai báo biến: Option Explicit ngay đầu (xem hình). Từ nay về sau, trong tất cả các bài tập, bạn phải khai báo hàng này vào đầu tất cả các Form. Về chi tiết cho khai báo này sẽ được đề cập chi tiết ở các chương sau. Nhập dòng lệnh sau:txt_mess.text=”Chúc mừng bạn đến với VB” vào giữa dòng tiêu đề và dòng kết thúc Chọn đối tượng cmd_del trên combo box object, chọn sự kiện click. gỏ vào lệnh sau: txt_mess=”” (Xóa nội dung của textbox) 40 Giáo trình Visual Basic 6.0
  41. Chọn đối tượng cmd_end trên hộp chọn phía trên bên trái, chọn sự kiện click trên combobox even. Gõ vào lệnh sau: end Mở cửa sổ Form, bấm double click trên txt_mess để mở cửa sổ code. Trong khi con trỏ chuột đang nằm giữa vùng Private Sub txtmess_Change() . End Sub thì chọn hộp danh sách (chứa sự kiện) bên góc trên phải, chọn vào sự kiện DblClick Giáo trình Visual Basic 6.0 41
  42. Viết code xử lý cho sự kiện double – click trên textbox 42 Giáo trình Visual Basic 6.0
  43. 9. Bài tập thực hành 2 Viết chương trình thay đổi vị trí và nội dung của Label sử dụng các command button (xem hình). Khi người sử dụng bấm vào nút tương ứng - ví dụ: top left) thì Label sẽ nằm ở vị trí trên phía trái với nội dung là Top Left. Sau khi thiết kế giao diện và đặt tên các đối tượng lần lượt là Lbl1, cmdTopLeft, CmdTopRight, CmdButtomLeft, CmdButtomRight, double click chuột vào lần lượt từng command button và viết lệnh như sau: Giáo trình Visual Basic 6.0 43
  44. 10. Frame Là một control dạng vật chứa (container), dùng để chứa các control khác. Khi đưa lên Form nó hiển thị dạng khung hình chữ nhật có tiêu đề. 44 Giáo trình Visual Basic 6.0
  45. Sau khi đã đặt một frame trên Form nếu ta đặt các control khác vào trong frame này thì frame trở thành vật chứa của control đó. Frame còn được dùng để nhóm các đối tượng hoạt động theo nhóm như Option button. Thuộc tính chính của Frame là : Name: tên của Frame, đặt 3 ký tự đầu (prefix) là Fla Caption: nội dung hiển thị trên tiêu đề của Frame Backcolor: màu nền Forecolor: màu chữ của các đối tượng trên Frame 11. Image Đối tượng này dùng để hiển thị hình ảnh. Các thuộc tính chính: Name: tên của đối tượng, với 3 ký tự đầu (prefix) là Img Picture: hình ảnh cần hiển thị Stretch (true/false): cho phép co dãn hình hay hiển thị theo kích thước thật của ảnh Visile: cho phép hiển thị hay không Height: chiều cao ảnh Giáo trình Visual Basic 6.0 45
  46. Width: chiều dài ảnh Để đưa hình ảnh lên Image có 2 cách: Quy định tại thời điểm thiết kế (Design-time): thông qua thuộc tính picture. Chọn hình cần hiển thị Tại thời điểm thực thi chương trình (run-time): bằng cách gán thuộc tinh picture bằng kết quả của hàm loadpicture(). Ví dụ Img.Picture = LoadPicture("c:\DurianGroup.jpg") 12. Line Đối tượng này đơn giản chỉ để trình vẽ một đượng thẳng trên Form dùng cho việc trang trí giao diện. Các thuộc tính của Line: Name: tên của line với 3 ký tự đầu là Lin Bordercolor: màu viền đường line BorderWidth: kích thước đường line BorderStyle: kiểu vẽ đường line X1,x2,y1,y2: tọa độ (x,y) của 2 điểm đầu và cuối của line 46 Giáo trình Visual Basic 6.0
  47. 13. Shape Giống như Line đối tượng shape dùng để trang trí với khả năng biểu diễn các hình cơ bản: vuông, tròn, Ellipse Thuộc tính chính của shape là: Name: tên của shape với 3 ký tự đầu là Shp Shape: o 0: Trình bày hình chữ nhật o 1: Trình bày hình vuông o 2: Trình bày hình ellipse o 3: Trình bày hình tròn o 4: Trình bày hình chữ nhật góc tròn o 5: Trình bày hình vuông góc tròn. FillStyle: kiểu tô màu bên trong Shape. Bạn chỉ nhìn thấy màu bên trong khi FillStyle khác 0 (Transparent: trong suốt). FillCorlor: màu tô bên trong Giáo trình Visual Basic 6.0 47
  48. 14. Bài Tập Lưu ý: Mỗi bài tập nên tạo trên dĩa một folder để lưu những tập tin project, Form của bài tập đó. 1.Hãy thiết kế một Form như sau: Đặt tên cho 3 textbox lần lượt là : txthoten, txtho, txtten Đặt tên cho 3 nút lệnh lần lượt là btnHoLot, btnTen, btnHovaten Hãy viết lệnh cho các đối tượng để Form có thể hoạt động như sau: Người sử dụng sẽ gỏ họ và chữ lót vào txtholot, và tên vào txtten Nếu nút lệnh cmd_holot được click thì nội dung của txthoten =txtholot.text Nếu nút lệnh cmd_ten được click thì nội dung của txthoten=txt_ten.text Nếu nút lệnh cmd_hoten được click thì nội dung của txthoten =txt_holot.text & “ “ & txtten.text Nếu double click (sự kiện dlbclick) trên txthoten thì nội dung của txthoten bị xóa. 48 Giáo trình Visual Basic 6.0
  49. 2.Thêm vào bài tập trên với yêu cầu sau: Nội dung của txtholot và txtten được thể hiện ngay trên txtHoTen khi người sử dụng nhập dữ liệu vào txt_holot hay txtten (gợi ý: viết lệnh cho sự kiện change của txtholot và txtten 3.Hãy thiết kế một Form như sau: Đặt tên đối tượng như hình mô tả. Hãy viết lệnh cho các đối tượng để Form có thể hoạt động như sau: Người sử dụng sẽ nhập các giá trị vào txt1, txt2 (là những giá trị số) Nếu nút lệnh cmd1 được click thì nội dung của Lbl_mess=val(txt1.text)+ val(txt2.text) Nếu nút lệnh cmd2 được click thì nội dung của Lbl_mess=val(txt1.text) - val(txt2.text) Giáo trình Visual Basic 6.0 49
  50. Nếu nút lệnh cmd3 được click thì nội dung của lbl_mess=val(txt1.text) * val(txt2.text) Nếu nút lệnh cmd4 được click thì nội dung của lbl_mess=val(txt1.text) * val(txt1.text) Nếu nút lệnh cmd5 được click thì nội dung của lbl_mess=val(txt1.text)* val(txt1.text)* val(txt1.text) Nếu nút lệnh cmd5 được click thì nội dung của lbl_mess=sqr(val(txt1.text)) Nếu nút lệnh cmd_exit được click thì kết thúc chương trình Nếu double click (sự kiện dblclick) trên lbl_mess, hoặc txt1 hoặc txt2 thì xóa nội dung đang có của hai textbox txt1, txt2 và label lbl_mess. 4. Hãy tạo một Form như sau: Khung màu trắng là một picture box với appearrance = flat Hình tròn là một shape được vẽ bên trong Picture box Khi chương trình chạy mỗi lần người sử dụng click vào các nút mũi tên thì hình tròn sẽ dịch chuyển một khoảng (tùy 50 Giáo trình Visual Basic 6.0
  51. ý) theo hướng mũi tên đã click (sử dụng thuộc tính left, top của shape) 5. Viết chương trình chọn hình dạng và màu của một shape như sau: Đặt tên Shape là Shp, thiết lập thuộc tính fillStyle của Shp là 0-Solid Viết code để chọn hình dạng (Shape) và màu tô (FillColor) như sau: Sub CmdVuong_Click() Shp.Shape=1 End sub Giáo trình Visual Basic 6.0 51
  52. Sub CmdMauDo_Click() Shp.FillColor=VBRed End sub Cho biết tập các hằng số màu cơ bản của VB như hình. 52 Giáo trình Visual Basic 6.0
  53. CHƯƠNG 3: BIẾN – HẰNG – CẤU TRÚC LỆNH NỘI DUNG: KIỂU DỮ LIỆU - BIẾN – HẰNG - CÁC TOÁN TỬ CÁC HÀM CƠ BẢN CÁC CẤU TRÚC LỆNH OPTION BUTTON – CHECK BOX LIST BOX – COMBO BOX 1. Các Kiểu Dữ Liệu Trong Vb Trong VB6 có rất nhiều kiểu dữ liệu. Tuy vậy, với phạm vi giáo trình này, chỉ một số kiểu dữ liệu quan trọng và hay sử dụng nhất được đề cập. Các kiểu còn lại sinh viên có thể tham khảo thêm tại phần giúp đỡ (Help) của bộ Visual Studio. Kiểu dữ liệu Phạm vi Byte 0. . 255 Boolean True / False Integer -32,768 32,767 Long Cỡ (+-) 2 tỷ (long integer) Double Cỡ (+-)-10308 Date 1/1/100 31/12/9999 Giáo trình Visual Basic 6.0 53
  54. String 2 tỷ ký tự Variant Trong đó: Byte, Integer, Long là các kiểu số nguyên Double là các kiễu số thực. Date lưu giá trị ngày giờ (thứ tự ngày tháng năm phụ thuộc vào quy định của hệ thống trong Control Panel của Windows). Một biến kiểu date có thể chứa giá trị ngày tháng năm, giờ hoặc chỉ chứa giá trị ngày tháng năm Object: để tham chiếu đến một đối tượng nào đó trong chương trình. String: chứa một chuỗi ký tự. Variant: Là loại biến có thể chứa bất kỳ một loại dữ liệu số hoặc chuỗi. Kiểu dữ liệu của nó chỉ xác định khi được gán giá trị. Tùy theo giá trị thực tế, chúng ta sẽ chọn lọai dữ liệu phù hợp. 2. Biến (Variable) Khái niệm: Dùng để lưu các giá trị tính toán được trong quá trình chương trình đang thực hiện. Giá trị lưu trong biến có thể thay đổi trong quá trình sử dụng. Mỗi biến có một tên để phân biệt và thuộc một loại dữ liệu nào đó. Qui tắc đặt tên biến: 54 Giáo trình Visual Basic 6.0
  55. Dài tối đa 255 ký tự, có thể dùng chữ cái, chữ số, dấu _ để đặt tên Bắt đầu bằng một chữ cái Không chứa khoảng trắng và các ký tự: +-*/ ! @ # $ % ^ & * ( ) các dấu chấm câu Không trùng tên với từ khóa Tránh đặt tên biến trùng nhau Tên biến nên rõ ràng, nói lên phần nào mục đích sử dụng của nó Nên bắt đầu bằng ba ký tự viết tắt của kiểu dữ lliệu Khai báo biến: Dim As Ví dụ: Dim X As integer Dim a As Double Dim b As Long, D as Long, E as Long Chú ý: Để khai báo nhiều biến, chúng ta phải đưa kiểu dữ liệu lần lượt vào, không thể viết gom đối với VB6 Ví dụ: o Dim 1a as Integer: khai báo này sai vì tên biến bắt đầu bằng số o Dim a- as Integer: khai báo này sai vì tên biến chứa ký tự đặt biệt “-“ Giáo trình Visual Basic 6.0 55
  56. o Dim a,b,c as Integer: khai báo này không hợp lý (a,b : không phải kiểu Integer) o Dim a as Integer, b as Integer, c as Integer: khai báo này đúng Quản lý biến: Trong VB có thể không cần phải khai báo biến trước khi sử dụng, vì khi bắt gặp một tên biến chưa khai báo thì VB tự động tạo ra biến này. Tuy nhiên điều này dễ phát sinh các lỗi trong chương trình mà rất khó phát hiện. Ví dụ như trong đoạn lệnh sau: o Dim x As Integer o Dim result As Integer o X=10 o Resul=X*2 ‘Dòng lệnh này ta muốn gán giá trị x*2 vào biến result đã khai báo nhưng lại viết thiếu ký tự ‘t’, lúc này VB sẽ tạo ra biến mới Resul. Để tránh tình trạng này ta có yêu cầu VB không tự động tạo ra biến nếu như nó chưa được khai báo bằng cách đặt dòng lệnh Option Explicit trong phần General của cửa sổ code. Vị Trí Khai Báo Và Phạm Vi Sử Dụng Của Biến 56 Giáo trình Visual Basic 6.0
  57. Các biến khai báo trong một hàm (SUB): phạm vi sử dụng của các biến này chỉ tồn tại trong SUB khai báo nó. Những biến này xuất hiện trong bộ nhớ khi SUB được gọi thực hiện và xóa khỏi bộ nhớ khi SUB này thực hiện xong. Biến loại này gọi là biến cục bộ. Các biến khai báo khai báo trong phần General của một Form thì nó có tác dụng với bất kỳ một đoạn lệnh nào có trong Form này. Những biến này xuất hiện trong bộ nhớ khi Form được mở và chỉ xóa khỏi bộ nhớ khi Form được ở bị đóng. Giáo trình Visual Basic 6.0 57
  58. Một biến muốn có phạm vi sử dụng trong toàn bộ project, thì phải khai báo bằng từ khóa public (có thể khai báo trong Form hoặc module). Những biến này tồn tại trong bộ nhớ từ đầu cho đến khi kết thúc chương trình. Lưu ý: Các biến kiểu số khi được khởi tạo trong bộ nhơ có giá trị =0 3. Hằng Ta có thể đặt tên cho các giá trị không đổi và được dùng nhiều trong chương trình theo cú pháp: Const as datatype = value Ví dụ: Cont Pi as Double=3.1416 4. Các Phép Toán Các phép toán trên số: 58 Giáo trình Visual Basic 6.0
  59. Ký hiệu Phép toán ^ Lũy thừa (vd: x=3^8) - Đảo dấu (vd: x= - y) * Nhân (vd: x= Y * 3) / Chia (vd: x= Y / 3) + Cộng (vd: x= Y + 3) - Trừ (vd: x= Y - 3) \ Chia Nguyên (vd: x= 34 \ 3) Mod Lấy dư trong phép chia nguyên Ví dụ: Dim A as Integer A=3^2 ‘ -> A=9 A=12\5 ‘ -> A=2 A = 8 mod 3 -> A=2 Phép toán trên chuỗi (string) : phép nối : & : Dùng để nối 2 chuỗi Các phép toán quan hệ Ký hiệu Quan hệ = Bằng <> Khác < Nhỏ hơn <= Nhỏ hơn hoặc Bằng Giáo trình Visual Basic 6.0 59
  60. > Lớn hơn >= Lớn hơn hoặc Bằng Các phép toán luận lý: Ký hiệu Quan hệ NOT Phủ định AND Và OR Hoặc 5. Các Hàm Cơ Bản Của Vb Các hàm toán học Hàm Mô tả ABS(x) Trả về trị tuyệt đối của x FIX(x) Trả về giá trị là phần nguyên của x INT(x) Trả về giá trị là số nguyên lớn nhất nhỏ hơn hay bằng x EXP(x) Hàm mũ ex LOG(x) Hàm loge x (cơ số e) SQR(x) Căn bậc 2 của x SIN(x) Hàm lượng giác Sin(x) COS(x) Hàm lượng giác Cos(x) TAN(X) Hàm lượng giác Tan(x) ATN(x) Hàm lượng giác Arctg của x 60 Giáo trình Visual Basic 6.0
  61. Hàm tạo số ngẫu nhiên (random) Hàm Mô tả RANDOMIZE khởi động bộ tạo số ngẫu nhiên RND( ) Trả về 1 số ngẫu nhiên từ 0 đến 1 Hàm xử lý chuỗi Hàm Mô tả Trả về giá trị là độ dài của LEN(chuỗi) chuỗi VAL(chuỗi) Đổi chuỗi là ký tự số thành số Lấy ra 1 chuỗi là n ký tự bên LEFT(chuỗi,n) trái của chuỗi nhập vào Lấy ra 1 chuỗi là n ký tự bên RIGHT(chuỗi,n) phải của chuỗi nhập vào Lấy ra 1 chuỗi là n ký tự - bắt MID(chuỗi,vị trí, n) đầu từ vị trí nhập - của chuỗi nhập vào Đổi tất cả ký tự chữ thường UCASE(chuỗi) thành chữ HOA Đổi tất cả ký tự chữ HOA LCASE(chuỗi) thành chữ thường Bỏ tất cả ký tự trắng bên trái LTRIM(chuỗi) chuỗi Giáo trình Visual Basic 6.0 61
  62. Bỏ tất cả ký tự trắng bên phải RTRIM(chuỗi) chuỗi Bỏ tất cả ký tự trắng bên trái và TRIM(chuỗi) bên phải chuỗi + Kiểu = 1: Đổi tất cả ký tự chữ thường thành chữ HOA + Kiểu = 2: Đổi tất cả ký tự STRCONV(chuỗi,kiểu) chữ HOA thành chữ thường + Kiểu = 3: Đổi tất cả ký tự đầu từ thành thành chữ Hoa . Trả về vị trí đầu tiên của chuỗi 1 bên trong chuỗi ( 0 nếu INSTR(chuỗi, chuỗi 1) không có). Dùng để tìm kiếm 1 chuỗi bên trong 1 chuỗi khác. Đổi giá trị của biêu thức số STR(số) thành chuỗi FORMAT(biểu thức số, In giá trị biểu thức số theo chuỗi định dạng) chuỗi định dạng. Hàm kiểm tra giá trị Isnumeric(chuoi) Trả về true/false để xác định chuỗi phải là dạng số hay không IsDate(chuoi) Trả về true/false để xác định chuỗi phải là dạng DateTime hay không Hàm ký tự ASC(ký tự): Trả về giá trị là mã ASCII của ký tự 62 Giáo trình Visual Basic 6.0
  63. CHR(ASCII Code): Trả về ký tự có mã ASCII là ASCII Code SPACE(n): Trả về n ký tự trắng Hàm màu sắc Với Red,Green,Blue có giá trị từ 0 RGB(Red,Green,Blue): đến 255 Với Color có giá trị từ 0 đến 15 0: Black, 1: Blue, 2: Green, 3: Cyan, 4: Red, 5: Magenta, 6: Yellow, 7: White, 8: Gray, QBCOLOR(color): 9:Light Blue, 10: Light Green, 11: Light Cyan, 12: Light Red, 13: Light Magenta, 14: Light Yellow, 15: Light White Hàm nhập dữ liệu inputbox Mục đích: Hiện hộp nhập dữ liệu khi có nhu cầu Cú pháp: Biến = InputBox ( Prompt, Title, Default) Prompt: Câu nhắc (dạng chuỗi) yêu cầu thực hiện việc nhập Title: Tựa đề của hộp nhập dữ liệu Default: Giá trị mặc nhiên khi hiện hộp nhập dữ liệu lên Kết quả của việc nhập liệu được gán vào biến Giáo trình Visual Basic 6.0 63
  64. Ví dụ: n=Inputbox(“Nhap vào một số:”,”Nhập liệu) Nếu người sử dụng Click vào nút Cancel thì kết quả của hàm là một chuỗi rỗng. Ví dụ: Viết chương trình nhập một tên bằng Inputbox và hiển thị lại tên đã nhập Hàm tạo hộp thông báo msgbox Mục đích: Hiện hộp thông báo khi có yêu cầu trong các tình huống khác nhau. 64 Giáo trình Visual Basic 6.0
  65. Cú pháp: Dạng 1: Không nhận về gíá trị sau khi hộp thoại xuất hiện. Thường dùng khi thông báo một thông điệp nào đó. MsgBox “Có Lỗi” Để hiển thị chuỗi thông báo xuống hàng, chúng ta có thể ghép thêm hằng số VBCrlf hay VBNewline hay Chr(13) & Chr(10) ngắt thông báo thành nhiều hàng MsgBox "Chào bạn” & vbCrLf & "DurianGroup” MsgBox "Chào bạn” & VbNewLine & "DurianGroup” MsgBox "Chào bạn” & Chr(13) & Chr(10) & "DurianGroup” Dạng 2: Biến= MsgBox ( Prompt, Style, Title ) Prompt: Câu nhắc (dạng chuỗi) yêu cầu thực hiện việc nhập Title: Tựa đề của hộp nhập dữ liệu Style: Kiểu thể hiện của hộp hội thoại Giá Giá trị do VB định Mục Đích trị số nghĩa 0 VbOKOnly Nút lệnh OK 1 VbOKCancel Nút lệnh OK + CanCel 2 VbAbortRetryIgnore Nút lệnh Abort + Retry + Ignore Giáo trình Visual Basic 6.0 65
  66. 3 VbYesNoCancel Nút lệnh Yes + No + CanCel 4 VbYesNo Nút lệnh Yes + No 5 VbRetryCancel Nút lệnh Retry + Cancel 16 VbCritical Biểu tượng Stop 32 VbQuestion Biểu tượng Question 48 VbExclamation Biểu tượng Exclamation 64 VbInFormation Biểu tượng InFormation Các giá trị trả về cho biến của MsgBox: GIÁ GIÁ TRỊ DO VB ĐỊNH HIỆN TƯỢNG TRỊ NGHĨA SỐ 1 VbOK Nút lệnh được chọn là: OK Nút lệnh được chọn là: 2 VbCancel CanCel Nút lệnh được chọn là: VbAbort 3 Abort Nút lệnh được chọn là: 4 VbRetry Retry 5 VbIgnore Nút lệnh được chọn là: 66 Giáo trình Visual Basic 6.0
  67. Ignore 6 VbYes Nút lệnh được chọn là: Yes 7 VbNo Nút lệnh được chọn là: No Giả sử muốn tạo hộp thoại sau: ta sử dụng lệnh: traloi=MsgBox(“Bạn có muốn tiếp tục không”,VbYesNo+VbQuestion,”Stop”) Hoặc traloi= MsgBox(“Bạn có muốn tiếp tục không”,36,”Stop”) Tuy 2 cách tạo trên là tương đương, nhưng chúng ta nên sử dụng cách thứ nhất vì nó rõ ràng, dễ đọc, và VB giúp chúng ta thực hiện điều này mà không cần phải nhớ số. Giáo trình Visual Basic 6.0 67
  68. 6. Các Cấu Trúc Lệnh A. Cấu trúc rẽ nhánh If – Select case 1. Cấu trúc rẽ nhánh không đầy đủ IF THEN 68 Giáo trình Visual Basic 6.0
  69. Dạng 1: Chỉ làm 1 lệnh duy nhất nếu thỏa điều kiện Ví dụ: Viết code cho nút lệnh Thoát của chương trình. Trước khi thoát, chương trình hiển thị hộp thoại xác nhận việc thoát chương trình. Nếu người sử dụng đồng ý (chọn Yes) thì chương trình kết thúc. Dạng 2: Làm nhiều lệnh nếu thỏa điều kiện Giáo trình Visual Basic 6.0 69
  70. Ví dụ: Viết lại nút lệnh thoát cho ví dụ trên. Nếu nguời sử dụng chọn Yes (đồng ý thoát), chương trình hiển thị lời chào tạm biệt, sau đó thoát chương trình. 70 Giáo trình Visual Basic 6.0
  71. 2. Cấu trúc rẽ nhánh đầy đủ IF THEN ELSE Dạng 1: Thực thi các lệnh a1,a2 aN nếu thỏa điều kiện, ngược lại thực hiện nhóm lệnh b1,b2, bN Ví dụ: Viết chương trình nhập vào 1 số nguyên. Kiểm tra số vừa nhập là số chẵn hay số lẻ. Giao diện được cho như hình dưới. Tên các đối tượng là txtso, cmdKiemTra Giáo trình Visual Basic 6.0 71
  72. Dạng 2: Làm nhiều trường hợp với nhiều điều kiện khác nhau 72 Giáo trình Visual Basic 6.0
  73. Ví dụ: viết chương trình nhập 1 số nguyên của thứ (2, 3, 4 .8). Chương trình sẽ thực hiện đọc sang Thứ tương ứng (THU HAI, THU BA, THU TU ) Giáo trình Visual Basic 6.0 73
  74. 74 Giáo trình Visual Basic 6.0
  75. 7. Bài tập thực hành If Thiết kế một chương trình đăng nhập (Log In) cho phép người sử dụng đánh tên và mật mã (Password) vào sau đó kiểm tra xem password có đúng với chuỗi được quy định trước hay không? Thiết kế giao diện Tạo các control (label, textbox, command button) như hình Đặt tên lần lượt là TxtUser, TxtPassword, cmdOK,CmdCancel Thiết lập thuộc tính PasswordChar cho txtPassword là * (che ký tự nhập vào) Viết code cho chương trình Giáo trình Visual Basic 6.0 75
  76. Ví dụ: Viết chương trình giải phương trình bậc nhất Ax+B=0 Option Explicit Private Sub Form_Load()‘Lưu ý: sử dụng sự kiện load để cài đặt các yếu tố ban đầu lbl_tua.Caption = "CHƯƠNG TRÌNH" & Chr(13) & " GIẢI PHƯƠNG TRÌNH BẬC I Ax+B=0" ‘Sử dụng ký tự chr(13) để xuống dòng txt_A.Text = "" txt_b.Text = "" txt_kq.Text = "" End Sub Private Sub cmd_giai_Click() If txt_A.Text = "" Or txt_b.Text = "" Then MsgBox "Bạn chưa nhập đủ dữ liệu " ElseIf Val(txt_A.Text) <> 0 Then txt_kq.Text = "Nghiệm của PT là: " & Val(txt_b.Text) / Val(txt_A.Text) ElseIf Val(txt_b.Text) = 0 Then txt_kq.Text = "Phương trình vô số nghiệm" Else txt_kq.Text = "Phương trình vô nghiệm" 76 Giáo trình Visual Basic 6.0
  77. End If End Sub Private Sub cmd_moi_Click() txt_A.Text = "" txt_b.Text = "" txt_kq.Text = "" txt_A.SetFocus ‘Chuyển focus về textbox txt_a để tiện lợi cho người sử dụng nhập liệu End Sub Private Sub cmd_kt_Click() End End Sub 3. Cấu trúc lựa chọn SELECT CASE END SELECT Ví dụ: thực hiện lại ví dụ nói trên, xuất ra màn hình chuỗi phát âm của thứ nhập vào Giáo trình Visual Basic 6.0 77
  78. B. Cấu Trúc Lặp For – While – Do While 1. Cấu trúc lặp FOR NEXT Chú ý: Có thể sử dụng lệnh Exit For để thoát sớm khỏi vòng lặp FOR Ví dụ: Viết chương trình nhập vào 1 số (n) và tính tổng: S=1+2+3+ n 78 Giáo trình Visual Basic 6.0
  79. Ví dụ: Viết chương trình nhập vào 1 số (n) và xuất chuỗi các số 1 2 3 n lên màn hình Giáo trình Visual Basic 6.0 79
  80. 2. Cấu trúc lặp DO WHILE LOOP Chú ý: Trong vòng lặp phải có lệnh tác động lên 80 Giáo trình Visual Basic 6.0
  81. điều kiện để vòng lặp không lặp vô tận Chú ý : Vòng lặp Do While thực hiện kiểm tra địều kiện trước. Nếu thỏa điều kiện thì mới thực thi. Ví dụ: Ví dụ: Viết chương trình nhập vào 1 số (n) và xuất chuỗi các số 1 2 3 n lên màn hình Giáo trình Visual Basic 6.0 81
  82. 3. Cấu trúc lặp DO. LOOP UNTIL: Chú ý : Vòng lặp Do Loop Until không thực hiện kiểm tra địều kiện trước, mà thực hiện lệnh trước, sau đó mới kiểm tra điều kiện để quyết định có thực hiện tiếp hay không. Do đó, nó thực hiện ít nhất 1 lần. 82 Giáo trình Visual Basic 6.0
  83. Ví dụ: viết chương trình nhập số bằng hộp thoại Inputbox. Khi người sử dụng nhập 1 số, chương trình hiển thị vào label lblKetqua. Nếu người sử dụng nhập khác số, chương trình kết thúc việc nhập. Giáo trình Visual Basic 6.0 83
  84. Ví dụ: Chương trình xác định số nguyên tố: Option Explicit Private Sub cmd_giai_Click() Dim i As Integer, n As Integer, so As Integer If txt_nhap.Text 0 84 Giáo trình Visual Basic 6.0
  85. i = i + 1 Loop If i > n Then txt_kq = so & " là số nguyên tố" Else txt_kq = so & " không là số nguyên tố" End If Else MsgBox "Bạn chưa nhập số" txt_nhap.SetFocus End If End Sub Private Sub Cmd_kt_Click() End End Sub Ví dụ : Chương trình quay số may mắn Qui luật chơi như sau: Khi bắt đầu chơi số tiền có trong sẳn máy là 10 đồng và số tiền thưởng là 0. Mỗi lần quay số thì người chơi phải bỏ vào 30 đồng (số tiền có trong máy tăng 30) Nếu kết quả quay số =0 > người chơi nhận được cộng 10 đồng vào tiền thưởng Giáo trình Visual Basic 6.0 85
  86. Nếu kết quả quay số =9 > người chơi được cộng 30 đồng vào tiền thưởng Nếu kết quả quay số =7 - -> người chơi được cộng 100 và 50 % số tiền đang có trong máy vào tiền thưởng ( > số tiền trong máy giảm 50%). Khi nút Game mới được ấn thì số tiền thưởng phải có giá trị=0 Khi có thưởng thì chương trình phải hiện dòng thông báo cho biết số tiền thưởng hiện tại là bao nhiêu. Mã lệnh của chương trình như sau: Option Explicit Dim thuong As Long, sotien As Long ‘ Khai báo biến toàn cục Private Sub Form_Load() sotien = 10 thuong = 0 txt_sotien.Text = sotien 86 Giáo trình Visual Basic 6.0
  87. End Sub Private Sub CMD_QUAYSO_Click() Dim i as Long, j as Long, t As Long Randomize If txt_kq.Visible = True Then txt_kq.Visible = False txt_kq.Refresh ‘Cập nhật những thay đổi trên textbox Form1.Refresh ‘Cập nhật những thay đổi trên Form End If sotien = sotien + 30 txt_sotien = sotien txt_sotien.Refresh For i = 1 To 60 Step 1 J= Timer Ba dòng lệnh này có tác dụng delay chương trình Do while Timer<J+1 Loop txt1.Text = Int(Rnd() * 10) txt1.Refresh Next i t = thuong If Val(txt1.Text) = 7 Then t = t + 100 + Int(sotien / 5) Giáo trình Visual Basic 6.0 87
  88. sotien = sotien - Int(sotien / 5) End If If Val(txt1.Text) = 9 Then t = t + 30 If Val(txt1.Text) = 0 Then t = t + 10 If t > thuong Then txt_kq.Visible = True thuong = t txt_kq.Text = "Xin chúc mừng bạn. " & Chr(13) & Chr(10) & "Số tiền bạn được thưởng là: " & thuong txt_kq.Refresh End If End Sub Private Sub Cmd_newgame_click() thuong = 0 txt_sotien.Text = sotien End Sub Private Sub Cmd_kt_Click() End End Sub 88 Giáo trình Visual Basic 6.0
  89. 8. Check Box Là đối tượng được đặt cho phép người sử dụng chọn giá trị bằng cách đánh dấu chọn (check). Hai trạng thái của check box được sử dụng nhiều nhấtr là: được chọn hoặc không được chọn. Các thuộc tính của check box: Name: tên của checkbox với prefix là Chk Aligment: Quy định vị trí của nút chọn: o 0: Left justify o 1: Right justify Caption: Tiêu đề (dòng văn bản hiện kế nút chọn) Value: Giá trị của thuộc tính này quy định trạng thái của check box o 0: Unchecked (không chọn) o 1: Check (Đang chọn) o 2: Grayed (không được phép thay đổi trạng thái của check box. Sự kiện (event) của checkbox Click: xảy ra khi người sử dụng click trên checkbox Giáo trình Visual Basic 6.0 89
  90. Để biết được Checkbox có chọn hay không, người ta kiểm tra thuộc tính Value Ví dụ: Viết chương trình với một checkbox dùng để cho phép một hình trên Form được hiển thị hay không 9. Option Button Có công dụng giống như Chexk box, tuy nhiên khi một nhóm các check box đặt chung với nhau thì ta có thể chọn nhiều trường hợp trong 90 Giáo trình Visual Basic 6.0
  91. nhóm này hoặc không chọn gì cả, còn trong một nhóm option button chúng ta chỉ chọn được một trong các trường hợp này mà thôi. Các Option Button đi thành từng nhóm. Mỗi nhóm được đưa vào một Frame (hay đối tượng chứa khác). Ví dụ Trong hộp thoại trên có hai nhóm Option button, Aligment và Leader thì trong mỗi nhóm ta chỉ chọn được một trường hợp. Các thuộc tính của Option button: Name: tên của Option Button với prefix là Opts Aligment: Quy định vị trí của nút chọn: o 0: Left justify o 1: Right justify Caption: Tiêu đề (dòng văn bản hiện kế nút chọn) Value: Giá trị của thuộc tính này quy định trạng thái của option buton o True: Đang chọn o False: Không chọn. Chú ý: Khi một option trong nhóm có giá trị true thì tất cả các option còn lại sẽ có giá trị false Trong một nhóm các option button, để biết option button nào đang được chọn, chúng ta kiểm tra thuộc tính Value của các option button Giáo trình Visual Basic 6.0 91
  92. hoặc dùng ngay sự kịen click vì khi option button vừa nhận sự kiện click, thì khi đó giá trị Value=True. Ví dụ.Tạo một chương trình với giao diện như sau: Trên Form có Một đối tượng Shape Một mảng Option button đặt vào trong Frame Shape (Tạo Frame Shape trước, sau đó mới đặt các option button vào frame này) Một mảng Option button đặt vào trong Frame Color (Tạo Frame color trước, sau đó mới đặt các option button vào frame này) Một Command button với caption Exit. (Nút này có thuộc tính Cancel bằng True ) dùng để kết thúc chương trình. Khi một option trong nhóm shape được chọn thì dạng hình của đối 92 Giáo trình Visual Basic 6.0
  93. tượng Shape sẽ thay đổi tương ứng (sử dụng thuộc tính shape) Khi một option trong nhóm Color được chọn thì màu của đối tượng Shape sẽ thay đổi tương ứng (sử dụng thuộc tính Fillcolor và hàm Qbcolor) 10. ListBox Đối tượng này dùng để liệt kê một danh sách và cho phép người sử dụng chọn lực các mục trong danh sách này. Các thuộc tính của Listbox: ListCount: Cho biết số mục hiện có trong ListBox. Thuộc tính này không thể thay đổi đưiợc. List: Là thuộc tính chính của listbox. Nó lưu gữ các mục của listbox. Các mục của listbox có thể nhập vào tại giai đoạn thiết kế hoặc trong chương trình. Truy xuất các mục trong listBox thông qua thuộc tính list: Tên_listBox.list(index) Multiselect: o 0: Chỉ cho phép chọn mỗi lúc một mục duy nhất Giáo trình Visual Basic 6.0 93
  94. o 1: Cho phép chọn mỗi lúc nhiều mục bằng chuột o 2: Cho phép chọn mỗi lúc nhiều mục bằng chuột và phím shift hoặc Control ListIndex: Có giá trị là một con số cho biết mục thứ mấy của listBox đang được chọn. Trong trường hợp list box được phép chọn nhiều mục cùng lúc thì thuộc tính này cho biết thứ tự của mục đầu tiên được chọn. Selected: Cho biết trạng thái của một mục trong danh sách hiện có được chọn hay không. Hoặc đặt trạng thái chọn cho một mục nào đó. Cú pháp: Selected(index) Kiểm tra trạng thái của một mục o Select(index)=True/False Đặt trạng chọn hoặc không chọn cho một mục trong danh sách. Text: Nội dung của mục đang chọn trong listbox Sorted: Quy định các mục trong ListBox có sắp xếp theo thứ tự hay không Các phương thức (method) của Listbox: AddItem: Thêm một mục mới vào danh sách. o Cú pháp: Tên_ListBox.AddItem item[,Index] RemoveItem: Xóa một mục trong ListBox o Cú pháp: Tên_ListBox.RemoveItem index o Index: số thứ tự của mục cần xóa. Clear: Xóa toàn bộ các mục trong danh sách. Sau khi xóa giá trị Listcount=0 94 Giáo trình Visual Basic 6.0
  95. Cú pháp: Tên_ListBox.Clear Ví dụ: Viết chương trình nhập danh sách sinh viên theo yêu cầu sau: Các ListBox được phép chọn nhiều mục (kết hợp giữa phím Shift, Control và chuột) Các nút Cmd1 và Cmd3 Khi được Click sẽ sao chép tất cả các mục đang chọn sang ListBox bên kia, sau đó xóa các mục đang chọn Nút lệnh Xóa cho phép xóa các mục đang chọn trong Lst1 (ListBox bên trái) Giáo trình Visual Basic 6.0 95
  96. Option Explicit Private Sub Cmd_exit_Click() End End Sub Private Sub Cmd1_Click() If Lst1.ListIndex <> -1 Then Lst2.AddItem Lst1.List(Lst1.ListIndex) Lst1.RemoveItem Lst1.ListIndex End If End Sub Private Sub Cmd2_Click() Dim i As Integer For i = 0 To Lst1.ListCount - 1 Lst2.AddItem Lst1.List(i) 96 Giáo trình Visual Basic 6.0
  97. Next Lst1.Clear End Sub Private Sub Cmd3_Click() If Lst2.ListIndex <> -1 Then Lst1.AddItem Lst2.List(Lst2.ListIndex) Lst2.RemoveItem Lst2.ListIndex End If End Sub Private Sub Cmd4_Click() Dim i As Integer For i = 0 To Lst2.ListCount - 1 Lst1.AddItem Lst2.List(i) Next Lst2.Clear End Sub Private Sub Command2_Click() Dim Traloi As Byte Traloi = MsgBox("Bạn có chắn chưa ", 32 + 4, "VB msgbox") If Traloi = 6 Then Lst1.Clear End Sub Private Sub Command5_Click() Lst1.AddItem txt1.Text Giáo trình Visual Basic 6.0 97
  98. txt1.Text = "" txt1.SetFocus End Sub Private Sub Lst1_DblClick() If Lst1.ListIndex -1 Then Lst1.AddItem Lst2.List(Lst2.ListIndex) Lst2.RemoveItem Lst2.ListIndex End If End Sub 11. Combo Box Combo Box là một control kết hợp giữa Textbox và Listbox, nên nó có cac đặc tính của cả hai đối tượng này. Combo Box cho phép trình bày, chọn các mục có trong danh sách và có thể nhập thêm các mục mới. Ngoài các thuộc tính giống như ListBox, Combo Box còn có thuộc tính đặc trưng là: 98 Giáo trình Visual Basic 6.0
  99. Style: Dùng để quy định kiểu của ComboBox o 0 : Kiểu ComboBox chuẩn, chỉ trình bày listbox khi kích chuột vào mũi tên bên phải o 1 : Kiểu này luôn thể hiện listbox của nó bên dưới TextBox o 2 : Cách sử dụng giống như một listbox (Không thể nhập trên textbox) chỉ khác ở cách trình bày. Text: Nội dung đang có trong phần Textbox. Ví dụ: Viết chương trình có sử dụng CheckBox và OptionButton theo yêu cầu sau: Thêm trên Form hai Image có tên Img5 và Img6, một ListBox có tên Lst1 (nằm trong frame peripherals), một ComBoBox có tên Cmb1(nằm trong frame Payment method). Các mục của Lst1 và Cmp1 là: Lst1: Extra hard disk Printer Cmb1: US. Dollars Giáo trình Visual Basic 6.0 99 Lst1
  100. Check English Pound Các mục này được đưa vào Lst1 và Cmb1 khi Formload (sử dụng sự kiện Formload) Khi mục Extra hard disk của Lst1 được chọn thì picture trong Img5 là: c:\program files\Microsoft visual studio\ common\ graphics\ metafile\ business \Harddisk.wmf Khi mục Printer của Lst1 được chọn thì picture trong Img5 là: Printer.wmf (cùng folder với file hình trên) Khi mục US.dollars của Cmb1 được chọn thì picture trong Img6 là: dollar.wmf Khi mục Check của Cmb1 được chọn thì picture trong Img6 là: check.wmf Khi mục English Pound của Cmb1 được chọn thì picture trong Img6 là: poundbag.wmf 100 Giáo trình Visual Basic 6.0
  101. Option Explicit Private Sub chk1_Click() If chk1.Value = 1 Then img1.Visible = True Else img1.Visible = False End If End Sub Giáo trình Visual Basic 6.0 101
  102. Private Sub Chk2_Click() If Chk2.Value = 1 Then img2.Visible = True Else img2.Visible = False End If End Sub Private Sub Chk3_Click() If Chk3.Value = 1 Then img3.Visible = True Else img3.Visible = False End If End Sub Private Sub Cmb1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmb1.AddItem cmb1.Text cmb1.Text = "" End If End Sub Private Sub opt1_Click(Index As Integer) Dim i As Byte Select Case Index 102 Giáo trình Visual Basic 6.0
  103. Case 0 Image2.Picture = LoadPicture("c:\program files\Microsoft visual studio\common\graphics\metafile\business\pcomputr.wmf") Case 1 Image2.Picture = LoadPicture(" computer.wmf") ‘đường dẫn như trên Case 2 Image2.Picture = LoadPicture(" laptop2.wmf") End Select End Sub Giáo trình Visual Basic 6.0 103
  104. 12. Bài Tập Lưu ý: Mỗi bài tập nên tạo trên dĩa một folder để lưu những tập tin project, Form của bài tập đó. 1. Viết chương trình giải phương trình bậc 2 : ax2 + bx + c = 0 2. Viết chương trình giải phương trình trùng phương: ax4 + bx2 + c = 0 3. Viết chương trình Đổi năm dương lịch qua năm âm lịch Cho Biết: Năm MOD 10 = 0 9: ==> Canh - Tân – Nhâm – Quý – Giáp – At – Bính – Đinh – Mậu - Kỷ Năm MOD 12 = 0 11: ==> Thân – Dậu – Tuất – Hợi – Tý – Sửu – Dần – Mẹo – Thìn – Tỵ – Ngọ – Mùi 4. Viết chương trình tính tổng N số nguyên dương đầu tiên: 1+ 2+ 3+. .N (N là số nguyên nhập từ bàn phím) 5. Viết chương trình tính tổng N số nguyên dương chẵn đầu tiên: 2 + 4 + 6 + 6. Viết chương trình nhập vào 2 số nguyên a, b. Xuất ra BSCNN và USCLN của a và b. 7. Viết lại chương trình quay số may mắn theo mẫu sau: 104 Giáo trình Visual Basic 6.0
  105. Khi chương trình bắt đầu chạy thì số tiền có trong máy là 100 đồng. Mỗi lần quay số người chơi phải bỏ vào máy 30 đồng (số tiền trong máy tăng 30 đồng mỗi lần quay số) Các hộp chứa chữ số từ trái qua phải có tên như sau: txt1, txt2, txt3. Giá tri trong hộp số được tạo bởi công thức: txt1.Text = Int(Rnd() * 7) txt2.Text = Int(Rnd() * 8) txt3.Text = Int(Rnd() * 10) Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 100 +50% số tiền đang có trong máy (số tiền trong máy giảm 50%) Nếu kết quả của txt2 = 7 thì số tiền được thưởng là 30 +10% số tiền đang có trong máy (số tiền trong máy giảm 10%) Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 10. Khi trúng thưởng thì số tiền thưởng được cộng dồn và sẽ hiện lên màn hình cho người chơi biết số tiền thưởng mà họ đang có. Giáo trình Visual Basic 6.0 105
  106. Khi nút Game mới được click (bắt đầu cho một người chơi khác) thì số thưởng quay về 0 8. Viết chương trình tạo một Form như sau: Nút cập nhật có thuộc tính Default=true Nút Kết thúc có thuộc tính Cancel=true Khi người sử dụng nhập một số vào textbox rồi Enter hoặc nhấp vào nút cập nhật thì số này được thêm vào listbox, đồng thời nội dung trong textbox bị xóa và focus được chuyển về textbox Tính tổng các phần tử của List (hiển thị kết quả trên msgbox) Xóa phần tử đầu và cuối Xóa phần tử đang chọn 106 Giáo trình Visual Basic 6.0
  107. Tăng mỗi phần tử lên 2 đơn vị Thay thế mỗi phần tử bằng bình phương của chính nó Chọn phần tử chẳn Chọn phần tử lẻ 9. Viết chương trình đổi màu của Form như sau: khi chọn vào Option nào, thì màu của Form sẽ thay đổi tương ứng với màu của Option đó. 10. Viết chương trình thay đổi font chữ của textbox Yêu cầu: Khi chọn vào thanh cuốn, Option, hay CheckBox nào, thì thuộc tính tương ứng của TextBox sẽ thay đổi tương ứng với các mục chọn lựa. Giáo trình Visual Basic 6.0 107
  108. 11. Viết chương trình thay đổi hình dạng – kiểu tô nền của hình (Shape) Các Option button dùngđể thay đổi hình dạng hay kiểu tô nền của hình vẽ. 12. Yêu cầu: Khi chọn các Options ứng với các quốc gia khác nhau, thì sẽ hiển thị cờ tương ứng với quốc gia đó. (Các icon hình ảnh trong thư mục: Graphics\icons\flags) 108 Giáo trình Visual Basic 6.0
  109. 13. Viết chương trình theo yêu cầu: Chọn tên người bạn có sẵn từ combobox Chương trình tự tìm số điện thoại và địa chỉ. Giáo trình Visual Basic 6.0 109
  110. 110 Giáo trình Visual Basic 6.0
  111. CHƯƠNG 4: THỦ TỤC NỘI DUNG: HÀM FORMAT THỦ TỤC – HÀM - MẢNG – CHUỖI MẢNG ĐỐI TƯỢNG TIMER DEBUG VÀ IN ẤN CHƯƠNG TRÌNH 1. Hàm Format Công dụng của hàm là định dạng một giá trị theo một mẫu nào đó. Kết quả của hàm là chuỗi giá trị đã định dạng. Cú pháp của hàm: Format(Value, Format). Value: Giá trị muốn định dạng Format: Mẫu định dạng, sẽ chứa những ký tự định dạng như: 0 - Tại vị trí này là một chữ số. Nếu con số mà chúng ta cần định dạng không có giá trị tại vị trí này thì chữ số 0 sẽ được điền vào. o Ví dụ: Format$(123,”0000”)=”0123” # - Quy định tại vị trí đó là một con số bất kỳ. . - Dấu ngăn cách phần thập phân với phần nguyên , - Dấu cách ngàn % - Nếu có ký hiệu này trong chuỗi định dạng thì con số sẽ được nhân lên 100 và thêm ký hiệu % phía sau Giáo trình Visual Basic 6.0 111
  112. Ngoài các ký tự trên nếu trong chuỗi định định dạng chứa bất kỳ một ký tự nào khác thì ký tự đó sẽ được chèn vào trong chuỗi kết quả. Các ví dụ: Format$(8315.4,”######.##”)=”8315.4” Format$(8315.4,”###,###.00”)=”8,315.40” Format$(8315.4,”$######.00”)=”$8,315.40” Format$(0.5 ,”000%”)=”050%” 2. Thủ Tục – Hàm Ngoài các thủ tục sự kiện gắn liền với các đối tượng đôi khi người lập trình cần phải xây dựng thêm các thủ tục của riêng mình để dễ dàng trong việc lập chương trình, chẳng hạn như giảm bớt mã lệnh, tránh viết lập đi lặp lại một đoạn lệnh nào đó. 1. Thủ tục (Sub): Ta có thể viết một thủ tục trong cửa sổ Code với cú pháp khai báo như sau: Private Sub [(danh sách tham số)] Lệnh của thủ tục End sub Thủ tục được khai báo với từ khóa private thì chỉ có thể dùng được trong phạm vi Form chứa nó mà thôi. Nếu muốn thủ tục có thể sử dụng trong toàn bộ chương trình (các Form khác đều sử dụng được) thì phải khai báo với từ khóa Public Public Sub [(danh sách tham số)] 112 Giáo trình Visual Basic 6.0
  113. Lệnh của thủ tục End sub Ví dụ: Private Sub Hienthi(x As Integer) Print x*x*x Sub Lời gọi thủ tục: Ta có thể dùng lệnh call để gọi thực hiện một thủ tục theo cú pháp: call Tham số của thủ tục: Tham số của thủ tục được khai báo trong ngoặc sau tên thủ tục. Nếu là tham số dạng tham trị thì có thêm từ khóa byval trước tên tham số. Giá trị không thể thay đổi sau khi ra khỏi hàm. Nếu là tham số dạng tham biến thì có thêm từ khóa byref trước tên tham số. Giá trị được thay đổi sau khi ra khỏi hàm. Giáo trình Visual Basic 6.0 113
  114. Nếu không chỉ rõ là tham trị hay tham biến thì xem như tham biến. Ví dụ: Chương trình gọi hàm với tham biến (byref) và tham trị (byval) Trong hàm sub1(A as Integer,Byval B as Integer) thì A là tham biến, B là tham trị. Do đó, chỉ có kết quả của txt3 khác giá trị txt1 (gấp 10 lần) còn giá trị của txt4 và txt2 là bằng nhau. 114 Giáo trình Visual Basic 6.0
  115. Ví dụ: viết chương trình đếm số lần Click trên một Form. Khi người sử dụng Click chuột trên Form, chương trình sẽ tăng biến đếm số click, và reset về 0 khi số lần click quá 4. o Chương trình sử dụng hàm CheckNumberofClick với 1 tham biến là Numclick. Ở đây không cần khai báo byref do mặc định là byref. Giáo trình Visual Basic 6.0 115
  116. 1. Hàm (Function): Việc viết một hàm cũng giống như thủ tục chỉ khác ở phần khai báo và trong nội dung của hàm sẽ có một câu lệnh trả giá trị về cho hàm. Ta có thể viết một hàm trong cửa sổ Code với cú pháp khai báo như sau: [Private/Public] Function [(danh sách tham số)] As Lệnh của hàm Tên hàm=Giá trị trả về End Funtion 116 Giáo trình Visual Basic 6.0
  117. Ví dụ: Viết chương trình tính cạnh huyền tam giác sử dụng function Ví dụ: viết hàm tính giai thừa n!=1*2*3* .n và vận dụng hàm này để viết chương trình sau đây. Giáo trình Visual Basic 6.0 117
  118. Option Explicit Private Function Giaithua(ByVal K As Integer) As Double Dim I As Integer Dim Kq As Double Kq = 1 For I = 1 To K Kq = Kq * I Next Giaithua = Kq End Function Private Sub Cmd_exit_Click() End End Sub Private Sub Cmd_N_Click() Txt_ketqua = Txt_nhaplieu.Text & "!= " & Format(Giaithua(Val(Txt_nhaplieu.Text)), "#") Txt_nhaplieu.Setfocus End Sub Private Sub Cmd_n1_Click() Dim N As Integer N = Val(Txt_nhaplieu.Text) 118 Giáo trình Visual Basic 6.0
  119. Txt_ketqua = N & "! /" & N + 1 & "! =" & Format(Giaithua(N) / Giaithua(N + 1), "0.###") Txt_nhaplieu.Setfocus End Sub Chú ý là, ở nút lệnh thứ hai, nếu để ý thì chúng ta thấy rằng kết quả không cần tính dài dòng như vậy mà chỉ là 1/(n+1). Tuy nhiên, chương trình này có ý đồ mô tả cách sử dụng là nhiều lần khi viết một hàm. Ví dụ: cho biết kết quả xuất ra sau khi thực hiện chương trình sau đây là gì Giáo trình Visual Basic 6.0 119
  120. 3. Mảng Mảng tĩnh 1 chiều Khai báo: Dim ArrayName(LowerIndex To UperIndex) As Ví dụ: Dim strTen(0 to 25) As String: strTen(0), strTen(1), strTen(25) Dim SoThuc(1 to 100) As Double: SoThuc(1), SoThuc(2) SoThuc(100) Dim Volume(-10 to 10) As Long: Volume(-10), Volume(-9), Volume(10) Ví dụ: Mảng numbers chứa các số nguyên được đánh số từ 0 5 Lưu ý: Khi truy xuất mảng phải truy xuất đúng với cận trên và cận dưới đã khai báo. Ví dụ: nếu khai báo Dim a(10 to 20) Thì không có phần tử a(1),a(2) a(9). Để xác định cận dưới của mảng dùng Hàm Lbound(TênMảng) : Để Xác định cận trên của mảng: Hàm Ubound(TênMảng) : Text1.Text=Ubound(StrTen) 120 Giáo trình Visual Basic 6.0
  121. Khi khởi tạo, các giá trị trong mảng được khởi tạo mặc định bằng 0 (đối với kiểu số) hay bằng chuỗi rỗng (đối với kiểu chuỗi). Truy xuất mảng Để truy xuất một phần tử trong mảng ta truy xuất theo cú pháp TenMang(chỉ số) Để duyệt hết mảng, sử dụng vòng lặp For Next với 1 biến chạy Ví dụ: Viết chương trình xử lý mảng như sau Nhập xuất mảng: Option Explicit Dim a(1 To 10) As Integer Sub Cmd_nhap_Click() Dim i As Integer Txt_xuat.Visible = False For i = 1 To 10 Step 1 a(i) = Val(InputBox("a(" & Str(i) & ")= ", "Nhap mang")) Next End Sub Sub Cmd_xuat_Click() Dim i As Integer Txt_xuat.Visible = True For i = 1 To 10 Giáo trình Visual Basic 6.0 121
  122. Txt_xuat.Text = Txt_xuat.Text & Str(a(i)) & " " Next End Sub Private Sub Form_Load() Txt_xuat.Visible = False End Sub Ví dụ: Nhập và xuất mảng ra ListBox Khi chương trình vừa thực hiện: Khi nút nhập mảng được bấm: 122 Giáo trình Visual Basic 6.0
  123. Khi đã nhập xong: Giáo trình Visual Basic 6.0 123
  124. Khi bút Xuất mảng được ấn: Mảng nhiều chiều tĩnh Có thể là mảng 2 chiều, 3 chiều. Mảng 2 chiều có thể được coi như ma trận. Khai báo: Tương tự mảng 1 chiều: o Dim a(1 to 2,1 to 3) As Integer o A(1,1), A(1,2), A(1,3) ; A(2,1), A(2,2), A(2,3) Xác định cận dưới của mảng: Hàm Lbound(TênMảng,chiều) : Text1.Text=Lbound(A,1) Xác định cận trên của mảng: Hàm Ubound(TênMảng, chiều) : Text1.Text=Ubound(A,2) 124 Giáo trình Visual Basic 6.0
  125. Khi duyệt mảng nhiều chiều sử dụng các vòng lặp lồng vào nhau. Ví dụ: để duyệt nửa trên ma trận 2 chiều, không tính đường chéo chính Ví dụ: để duyệt nửa trên ma trận 2 chiều, tính cả đường chéo chính Giáo trình Visual Basic 6.0 125
  126. Mảng động Mảng tĩnh là mảng có số phần tử không đổi sau khi khai báo mảng Mảng động là mảng có số phần tử có thể thay đổi được sau khi khai báo mảng, trong quá trình thực thi chương trình. Khai báo mảng động: o Dim A() as Integer Thay đổi số phần tử trong mảng: tương tự khai báo mảng o ReDim A(5 To 10) o ReDim A(1 to 10) Do đó, sau khi khai báo mảng động : Dim A() as Integer, chưa thể dùng ngay mà phải khai báo số phần tử mảng động lúc đầu tiên: 126 Giáo trình Visual Basic 6.0
  127. ReDim A(10). Đến lúc nào cần thay đổi kích thước vị trí mảng thì ReDim lại. Xác định cận dưới của mảng: Hàm Lbound(TênMảng,chiều) Xác định cận trên của mảng: Hàm Ubound(TênMảng, chiều) Private Sub Private Sub Command4_Click() Command1_Click() ReDim b(5) ReDim b(3) For i = 0 To 5 For i = 0 To 3 b(i) = i b(i) = i Next Next End Sub End Sub Ví dụ: Chương trình nhập mảng động bằng InputBox Khi nút Nhập mảng được chọn: Giáo trình Visual Basic 6.0 127
  128. Mã lệnh: Option Explicit Dim a() As Integer Dim n As Integer Private Sub Cmd_ketthuc_Click() End End Sub Private Sub Cmd_nhap_Click() Dim i As Integer n = Val(InputBox("nhap mang bao nhieu phan tu")) ReDim a(n) Txt_xuat.Visible = False For i = 1 To n a(i) = Val(InputBox("a(" & Str(i) & ")= ", "Nhap mang")) Next End Sub Private Sub Cmd_xuat_Click() Dim i As Integer 128 Giáo trình Visual Basic 6.0
  129. Txt_xuat.Visible = True Txt_xuat.Text = "" For i = 1 To n Txt_xuat.Text = Txt_xuat.Text & Str(a(i)) & " " Next End Sub Private Sub Form_Load() Txt_xuat.Visible = False End Sub 4. Các Thuật Toán Cơ Bản Cộng dồn Lặp lần lượt một thao tác, trong đó các giá trị được dồn vào một biến. Trước khi thực hiện cộng dồn, gán giá trị biến dồn bằng giá trị khởi tạo. (Nếu tính tổng thì khởi tạo thường là bằng 0, nếu tính tích thì khởi tạo thường là bằng 1. Giá trị khởi tạo phụ thuộc vào thuật toán). Ví dụ: thuật toán cộng dồn cho chuỗi các số Giáo trình Visual Basic 6.0 129
  130. Tính tổng Sum = 1 + 2+ 3 + n Ví dụ: sử dụng thuật toán cộng dồn cho kiểu string Chúng ta xuất một mảng các số nguyên vào textbox Ví dụ: cộng dồn cho mảng một chiều Tương tự cho việc tính cộng dồn trên chuỗi các số 130 Giáo trình Visual Basic 6.0
  131. Cộng dồn theo điều kiện Lặp lần lượt một thao tác, trong đó các giá trị được dồn vào một biến nếu thỏa điều kiện nào đó. Trước khi thực hiện cộng dồn, gán giá trị biến dồn bằng giá trị khởi tạo. Chương trình sẽ có lệnh rẽ nhánh (If then, Select case ) lồng trong vòng lặp. Ví dụ: Cộng dồn trên mảng 1 chiều Ví dụ: Cộng dồn trên mảng 2 chiều: cần 2 vòng lặp Giáo trình Visual Basic 6.0 131
  132. Tìm kiếm tuần tự Thực hiện lặp lại việc duyệt lần lượt từng phần tử trong danh sách. Nếu thỏa mãn điều kiện thì lưu lại vị trí cần tìm (và có thực hiệp lặp tiếp hay không tùy thuật toán. Có thể thoát sớm vòng lặp ngay sau khi tìm thấy). Ví dụ: tìm kiếm phần tử trong mảng 132 Giáo trình Visual Basic 6.0
  133. Tìm phần tử nhỏ nhất – lớn nhất Ví dụ: tìm giá trị lớn nhất trong mảng Sắp xếp mảng Sắp xếp (Sort) một danh sách là việc thường xuyên của một người viết chương trình. Có nhiều kỹ thuật sắp xếp khác nhau. Tuy nhiên, trong nội dung môn học này yêu cầu bạn chỉ cần nắm rõ một thuật toán dùng cho việt sắp xếp trên mảng. Việc sắp xếp tăng hay giảm do cách so sánh giữa các phần tử trong mảng. Ví dụ: sắp xếp mảng 1 chiều tăng dần Cho mảng một chiều Arr với khởi tạo như sau Giáo trình Visual Basic 6.0 133
  134. Thực hiện sắp xếp mảng Arr tăng dần. Lưu ý các giá trị đầu và cuối của i và j. 134 Giáo trình Visual Basic 6.0
  135. 5. Sử Dụng Một Số Hàm Xử Lý Chuỗi Khai báo chuỗi: Dim Biến as string thì đây là biến chuỗi có chiều dài thay đổi và nó có thể chứa khoảng hơn 2 tỉ ký tự. Hàm Len, Left, Right, Mid: Cú pháp: Len(S): Cho biết chiều dài thực của chuỗi S Left(S,N): Lấy N ký tự bên trái của chuỗi StringExpression Right(S,N): Lấy N ký tự bên phải của S Mid(S,M,N): Lấy N ký tự của S bắt đầu từ vị trí thứ M Ví dụ: Viết chương trình xử lý chuỗi như sau Khi chương trình bắt đầu thực hiên: Giáo trình Visual Basic 6.0 135
  136. Khi nút Nhập dữ liệu vào danh sách được chọn: Khi dữ liệu được nhập vào textbox và Enter (tương ứng nút cập nhật được chọn): Khi nút chọn dữ liệu theo mẫu được chọn: 136 Giáo trình Visual Basic 6.0
  137. Mã lệnh: Option Explicit Private Sub Cmd_boChon_Click() Lbl_nhap.Caption = "Mẫu dữ liệu: " txt_nhap.Text = "" cmd_capnhat.Caption = "&Bỏ chọn" txt_nhap.Visible = True Lbl_nhap.Visible = True txt_nhap.SetFocus End Sub Private Sub Cmd_cMau_Click() Lbl_nhap.Caption = "Mẫu dữ liệu: " txt_nhap.Text = "" cmd_capnhat.Caption = "&Chọn" txt_nhap.Visible = True Lbl_nhap.Visible = True txt_nhap.SetFocus End Sub Private Sub Cmd_cTat_Click() For i = 0 To Lst_dulieu.ListCount - 1 Lst_dulieu.Selected(i) = True Next Giáo trình Visual Basic 6.0 137
  138. End Sub Private Sub Cmd_ketthuc_Click() End End Sub Private Sub Cmd_nhap_Click() Lbl_nhap.Visible = True Lbl_nhap.Caption = "Nhập dữ liệu: " cmd_capnhat.Visible = True cmd_capnhat.Caption = "&Cập nhật" txt_nhap.Visible = True txt_nhap.Text = "" txt_nhap.SetFocus End Sub Private Sub Cmd_capnhat_Click() Dim i As Integer If cmd_capnhat.Caption = "&Cập nhật" Then Lst_dulieu.AddItem txt_nhap.Text txt_nhap.Text = "" txt_nhap.SetFocus End If If cmd_capnhat.Caption = "&Chọn" Then For i = 0 To Lst_dulieu.ListCount - 1 If UCase(Left(Lst_dulieu.List(i), Len(txt_nhap.Text))) = UCase(txt_nhap.Text) Then 138 Giáo trình Visual Basic 6.0
  139. Lst_dulieu.Selected(i) = True End If Next End If If cmd_capnhat.Caption = "&Bỏ chọn" Then For i = 0 To Lst_dulieu.ListCount - 1 If UCase(Left(Lst_dulieu.List(i), Len(txt_nhap.Text))) = UCase(txt_nhap.Text) Then Lst_dulieu.Selected(i) = False End If Next End If End Sub Private Sub Form_Load() Lbl_nhap.Visible = False txt_nhap.Visible = False cmd_capnhat.Visible = False Lst_dulieu.Clear Cmd_nhap.TabIndex = 0 End Sub Giáo trình Visual Basic 6.0 139
  140. 6. Gỡ Rối Chương Trình Khi ta chạy thử chương trình bằng cách bấm F5 , nếu chương trình có lỗi thì chương trình sẽ dừng lại và hiện ra hộp thoại để cho biết chương trình đã bị lỗi gì: Lúc này nếu ta bấm End thì chương trình kết thúc, Nếu bấm Debug thì màn hình sẽ quay về cửa sổ lệnh và dòng lệnh phát sinh lỗi sẽ có màu khác. Đôi khi dòng này không có lỗi, nhưng do lỗi ỡ câu lệnh nào đó phía trên làm cho câu lệnh này không thực hiện được. Khi đã tạm dừng (Debug) thì cửa sổ Immediate hiện ra. Cửa sổ này cho phép ta thực hiện từng câu lệnh để phát hiện ra lỗi. Muốn xem giá trị của một biến hoặc một thuộc tính thì ta gỏ tên biến hoặc thuộc tính cần xem sau dấu ?. Dựa vào các giá trị này ta có thể lần ra được lỗi. 7. In Ấn Khi cần in nội dụng của một chương trình ta chọn lệnh: 140 Giáo trình Visual Basic 6.0
  141. File – Print thì hộp thoại in xuất hiện: Ý nhgĩa các mục trong hộp thoại: Range: Selection:In phần đang chọn Current module: In mã lệnh của module đang chọn Project Curent: In nội dung của Project hiện hành Print What: In mã lệnh của chương trình Form as text: In thông tin về Form và các đối tượng trên Form. Print Quality: Chất lượng in Print to file: In kết quả ra một tập tin 8. Mảng Đối Tượng Khi đặt một control mới lên Form nếu ta đặt tên cho nó trùng với một đối tượng đã có, hoặc khi ta tạo một đối tượng mới bằng cách sao chép từ một đối tượng đã có thì VB sẽ hỏi chúng ta có muốn tạo các đối tượng này thành một mảng hay không? Giáo trình Visual Basic 6.0 141
  142. Nếu chúng ta chọn Yes thì các đối tượng này sẽ có cùng tên và khi đó chúng sẽ được phân biệt thông qua tên và chỉ số (index). Ví dụ: nếu chúng ta có một option button tên opt sau đó ta sao chép thành mảng 3 option button nữa thì các nút sẽ được phân biệt như sau: opt(0), opt(1), opt(2), opt(3). Để phân biệt một đối tượng có họat động ở chế độ mảng đối tượng hay không, chúng ta xem xét thuộc tính Index của nó. Nếu Index là rỗng, thì đối tượng đó là dạng mảng. Khi muốn tạo một mảng các đối tượng ta cũng có thể làm bằng cách tạo ra các đối tượng này sau đó đặt tên của chúng giống nhau Lưu ý: Trong các thủ tục sự kiện của một mảng đối tượng luôn có một tham số index để cho biết sự kiện đã xảy ra trên thành viên thứ 142 Giáo trình Visual Basic 6.0
  143. mấy của mảng. Căn cứ trên giá trị Index này, chúng ta biết được đối tượng nào trong mảng control kích họat sự kiện đó. Ví dụ: Viết chương trình đổi màu cho control shape Shp từ mảng các option button Ở đây chúng ta giả sử các Option button đã được đặt vào mảng đối tượng có tên là Opt2 có chỉ số là Opt(0) Opt(3). Khi đó, cả 3 button này đều có chung hàm sự kiện là Private Sub Opt2_Click(Index As Integer) Private Sub Opt2_Click(Index As Integer) Select Case Index Case 0: Shp1.FillColor = QBColor(12) Case 1: Shp1.FillColor = QBColor(1) Case 2: Giáo trình Visual Basic 6.0 143
  144. Shp1.FillColor = QBColor(5) Case 3: Shp1.FillColor = QBColor(14) End Select End Sub Phần lệnh chọn lọai hình (shape) của shape Shp sinh viên tự thực hiện bằng mảng. 9. Đối Tượng Timer Là bộ đếm thời gian. Sau một khỏang thời gian nhất định do người lập trình chỉ định, timer sẽ tự động thực thi hàm sự kiện Timer_Timer. Sau một khoảng thời gian nhất định (do người lập trình cài đặt tại thuộc tính Interval) nó sẽ phát ra một sự kiện gọi là sự kiện thời gian - Timer_Timer, và người lập trình sẽ viết lệnh để thực hiện các xử lý mỗi khi sự kiện này xảy ra. Khi ta đặt đối tượng này lên Form nó sẽ không hiện lên màn hình. Các thuộc tính của timer: Enabled: Cho phép hoặc không cho phép Timer phát sự kiện thời gian Interval: thời gian nhảy của timer. Đơn vị là Milisecond (1/1000 giây) Chú ý: Để timer họat động thì: Thuộc tính Enabled=True 144 Giáo trình Visual Basic 6.0
  145. Thuộc tính Interval>0 Ví dụ: Viết chương trình cho 1 lablel tự động di chuyển từ trái sang phải của Form Sub Timer1_Timer() Lbl1.Left=Lbl1.Left + 50 End Sub Ví dụ: Viết chương trình với cột đèn giao thông tự động chuyển đèn theo thứ tự Xanh – Vàng - Đỏ Option Explicit Private Sub Form_DblClick() Timer1.Enabled = False End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Shift = 0 Then Image1.Move X, Y Else Timer1.Enabled = True End If End Sub Private Sub Timer1_Timer() Static count As Integer DoEvents Giáo trình Visual Basic 6.0 145
  146. If count = 0 Then Image1.Picture = LoadPicture("c:\program files\microsoft visual _ studio\common\graphics\icons\traffic\trffc10a.ico") count = count + 1 ElseIf count = 1 Then Image1.Picture = LoadPicture(" \trffc10b.ico") count = count + 1 Else Image1.Picture = LoadPicture(" \trffc10c.ico") count = 0 End If End Sub 146 Giáo trình Visual Basic 6.0
  147. 10. Bài tập 1. Chương trình tìm ước số của một số nhập vào Khi chương trình bắt đầu thực hiện thì textbox nhập số được Setfocus (Gợi ý: Dùng sự kiện FormLoad và thực hiện lệnh TextBox_name.TabIndex=0. Lưu ý trong sự kiện này không thể sử dụng Phương thức SetFocus) Sau khi nhập số nếu ấn Enter hoặc Click vào nút thực hiện thì hiện kết quả lên TextBox kết quả, và TextBox nhập vẫn được Focus Nếu ấn Esc hoặc click vào nut1 kết thúc thì dừng chương trình Giáo trình Visual Basic 6.0 147
  148. 2. Viết chương trình làm toán cơ bản theo yêu cầu sau: Lưu ý: Xây dựng các hàm tính 1+2+ +N, Tính 1*2+2*3+ +N*(N+1) 3. Viết chương trình sử dụng mảng với các chức năng được trình bày trên Form như sau: Việc nhập giá trị cho các phần tử của mảng thực hiện bởi inputbox Làm lại bài trên với mảng động và giá trị của mảng được tạo ngẫu nhiên. 148 Giáo trình Visual Basic 6.0
  149. 4. Viết chương trình có giao diện và thực hiện các yêu cầu sau: Giao diện: Giáo trình Visual Basic 6.0 149
  150. Khi Form được load lên màn hình thì chỉ có nút Nhập dữ liệu, nút Kết thúc là sử dụng được, và nút Nhập dữ liệu được Focus. Gợi ý: Sử dụng sự kiện Formload, cho giá trị Enabled của các đối tượng muốn mờ bằng false, Gán thuộc tính Tabindex của nút nhập dữ liệu =0 Khi nút Nhập dữ liệu được ấn thì các nút lệnh được sáng lên, xóa nội dung của Textbox nhậo liệu và Setfocus cho textbox này (sử dụng phương thức setfocus). Ví dụ hình bên dưới là khi nút Nhập dữ liệu được ấn. (hình 1) Khi một trong các nút (ngoại trừ nút Nhập dữ liệu và nút Kết thúc) được chọn thì kết quả sẽ hiện lên textbox và các nút lệnh sẽ bị mờ ngay cả nút vừa ấn. Ví dụ hình bên dưới là kết quả khi nút inchữ hoa được ấn. (hình 2) (Hình 1) 150 Giáo trình Visual Basic 6.0
  151. (Hình 2) Trong các thủ tục muốn lấy một ký tự ra để xử lý ta dùng hàm mid với số ký tự cần lấy là 1. 5. Dựa vào chương trình các ví dụ trên chuỗi (đã học trên lớp) hãy tạo một chương trình được trình bày và thực hiện thao những yêu cầu sau: Giáo trình Visual Basic 6.0 151
  152. ListBox chứa dữ liệu có thuộc tính Sorted=True Khi khởi động thì thuộc tính Enabled của nút phục hồi = false Chúc năng nhập dữ liệu vào danh sách giống như ví dụ trên lớp Chức năng chọn dữ liệu theo mẫu có thêm phần: Nếu nội dung của mẫu chọn =”*” thì chọn tất cả các mục đang có trong ListBox dữ liệu Chức năng bỏ chọn dữ liệu theo mẫu có thêm phần: Nếu nội dung của mẫu chọn =”*” thì bỏ chọn tất cả các mục đang có trong ListBox dữ liệu Chức năng xóa các mục đang chọn sẽ xóa các mục đang chọn trong ListBox dữ liệu. (xem lại thuật giải xóa các mục trong listbox ở các ví dụ trước). Tuy nhiên để có thể 152 Giáo trình Visual Basic 6.0
  153. phục hồi các mục đã xóa thì trước khi xóa một mục ta phải lưu nội dung của mục này vào một mảng. Sau khi xóa thì sẽ bật thuộc tính Enabled của nút phục hồi =True Gợi ý: Khai báo một mảng động kiểu chuỗi (dài khoảng 25 ký tự) và một biến SPT kiểu Integer. Các biền này là những biến toàn cục. Trước khi xóa một mục thì đưa nội dung của đó vào một phần tử của mảng này rồi tăng biến SPT lên 1. Chức năng phục hồi sẽ sử dụng phương thức AddItem đưa các mục đang có trong mảng toàn cục vào LixtBox dữ liệu. Sau khi đã đưa hết các phần tử của mảng vào ListBox thì Redim mảng toàn cục về 0 và cho giá trị của biến SPT về 0, đồng thời cho thuộc tính Enabled của nút phục hồi = false 6. Viết chương trình nhập N số tự nhiên đầu tiên: từ 1 N vào ListBox. Khi người sử dụng chọn 1 số, thì các ước số tự nhiên của số được chọn được hiển thị trong ListBox thứ 2. Giáo trình Visual Basic 6.0 153
  154. 7. Viết chương trình nhập N số tự nhiên đầu tiên: từ 1 N vào ListBox. Khi người sử dụng chọn 1 số trong Listbox thứ nhất, thì số được chọn được phân tích thành thừa số nguyên tố và được hiển thị trong ListBox thứ 2 154 Giáo trình Visual Basic 6.0
  155. 8. Viết hàm tính n! ( n!=1.2.3 n ) Sử dụng hàm trên để tính chuỗi: S = 1 + 1/2! + 1/3! + 1/4! + +1/n! 9. Viết hàm kiểm tra 1 số có phải là số nguyên tố hay không? (Function KiemTraSNT(n): tra về 0 nếu n không phải là số nguyên tố, 1 nếu n là số nguyên tố.) 10.Sử dụng hàm số trên để tìm M số nguyên tố đầu tiên(M>0: số nhập vào) 11. Viết hàm tính tổng các ước số của 1 số nguyên dương n nhập vào (TongUoc(6)=6) 12. Viết hàm giải phương trình bậc 1. (GiaiPTB1(a,b,x1) as Integer). Hàm này trả về 0 nếu VN, 1 nếu 1 nghiệm, và 2 nếu VSN. 13. Bút chì tự động đổi màu (nhấp nháy) từ xanh -> đỏ . Tốc độ nháy do người sử dụng chỉnh trên thanh cuộn, (Các icon bút chì trong thư mục: Graphics\icons\writings) Giáo trình Visual Basic 6.0 155
  156. 14. Viết chương trình làm mặt trăng xoay tròn. Tốc độ nháy do người sử dụng chỉnh trên thanh cuộn, (Các icon trong thư mục: Graphics\icons\elements) 15. Viết chương trình: quả bóng dội lên xuống không ngừng trong một Form. 16.Viết hàm tìm phần tử là số nguyên tố trong tất cả các phần tử của mảng. 156 Giáo trình Visual Basic 6.0
  157. 17. Viết chương trình nhập vào một dãy n số thực a[0], a[1], , a[n-1], sắp xếp dãy số theo thứ tự từ lớn đến nhỏ. In dãy số sau khi sắp xếp. 18. Viết một hàm đảo ngược thứ tự các phần tử của một mảng số thực: 19. Tìm phần tử lớn nhất/nhỏ nhất trong mảng. 20. Viết chương trình tạo ra ma trận vuông n x n, với n đc nhập vào (3<=n<=10) và giá trị các phần tử trong mảng là ngẫu nhiên(từ 1 đến 100). In mảng số vừa có ra màn hình. Sau đó: in ra phần tử lớn nhất phần tử bé nhất tổng các phần tử của ma trận in ra các phần tử trên đường chéo chính của ma trận in ra các phần tử chẵn các phần tử lẻ có trong ma trận in ra các số có xuất hiện trong dãy đó 21. Viết chương trình nhập vào một mảng, hãy xuất ra màn hình: Phần tử lớn nhất của mảng. Phần tử nhỏ nhất của mảng. Tính tổng của các phần tử trong mảng. 22. Viết chương trình nhập vào một mảng số tự nhiên. Hãy xuất ra màn hình: Dòng 1 : gồm các số lẻ, tổng cộng có bao nhiêu số lẻ. Giáo trình Visual Basic 6.0 157
  158. Dòng 2 : gồm các số chẵn, tổng cộng có bao nhiêu số chẵn. Dòng 3 : gồm các số nguyên tố. Dòng 4 : gồm các số không phải là số nguyên tố 23. Viết chương trình tính tổng bình phương của các số âm trong một mảng các số nguyên. 24. Viết chương trình thực hiện việc đảo một mảng một chiều. Ví dụ : 1 2 3 4 5 7 9 10 đảo thành 10 9 7 5 4 3 2 1. 25. Viết chương trình nhập vào mảng, hãy xuất ra màn hình: Dòng 1: Phần tử âm lớn nhất của mảng. Dòng 2: Phần tử dương nhỏ nhất của mảng. Dòng 3: Tổng các phần tử có căn bậc hai nguyên. Dòng 4: Gồm các số lẻ, tổng cộng có bao nhiêu số lẻ. Dòng 5: Gồm các số chẵn, tổng cộng có bao nhiêu số chẵn. Dòng 6: Gồm các số nguyên tố. Dòng 7: Gồm các số không phải nguyên tố. 26 Viết chương trình nhập vào một số nhỏ hơn 1000. Trình bày dòng chữ cho biết giá trị của số đó. 158 Giáo trình Visual Basic 6.0
  159. CHƯƠNG 5: CHƯƠNG TRÌNH NHIỀU FORM NỘI DUNG: CHƯƠNG TRÌNH CÓ NHIỀU FORM FORM MDI –SPLASH FORM MENU CÁC HÀM VỀ DỮ LIỆU NGÀY GIỜ 1. Chương Trình Nhiều Form Thêm Form vào project Một chương trình có thể chứa nhiều Form. Để thêm một Form vào chương trình ta chọn Project – AddForm. Từ cửa sổ Add Form – chọn biểu tượng Form –> Open Giáo trình Visual Basic 6.0 159
  160. Ta cũng có thể thêm một Form đã có vào Project bằng cách: Chọn Project - Add File – Chọn tập tin Form có sẵn. 160 Giáo trình Visual Basic 6.0
  161. 2. Quản lý Project Khi một Project đã có nhiều Form, module , để dễ dàng trong việc quản lý chúng ta thường sử dụng cửa sổ Project Explorer Để hiện cửa sổ này ta chọn: View – Project Explorer (hoặc Ctrl+R) Trong cửa sổ này chứa các thành phần đang có của Project như Form, Module Ta có thể cho nội dung của một thành phần nào đó hiện lên màn hình bằng cách nhấp kép trên tên thành phần đó. Ta cũng có thể Click phải trên một thành phần rồi chọn chọn chức năng cần thiết như: View Object, View Code, Save, Save As, Remove Lưu ý: Khi ta remove một thành phần nào đó trong cửa sổ Windows Explorer thì xem như tập tin lưu thành phần này trên dĩa cũng bị xóa. Giáo trình Visual Basic 6.0 161
  162. 3. Vấn đề sử dụng biến, thủ tục và đối tượng có trong các Form Biến – Thủ tục : Biến, Thủ tục khai báo trong một Form nào đó muốn sử dụng được trong các Form khác thì ta phải khai báo với từ khóa Public Ví dụ: Public V as integer Public Sub1() End sub Lưu ý: o Các biến Public phải khai báo trong phần General cùa Form. Muốn truy xuất đến một biến hoặc gọi một thủ tục Public trong Form khác ta phải thêm tên Form chứa biến và thủ tục phía trước và cách nhau bởi dấu chấm. Ví dụ: o Form2.v=100 ‘Gán giá trị 1000 vào biến V được khai báo trong Form2 o Form2.sub1 Truy xuất đến các đối tượng của Form khác: Muốn truy xuất đến các đối tượng và thuộc tính của đối tượng nằm trên một Form khác ta phải đặt thêm tên Form phía trước tên đối tượng và cách nhau bới dấu chấm. Ví dụ: Form2.text1.text=”DurianGroup” 162 Giáo trình Visual Basic 6.0
  163. Form2.shape.Fillcolor=QBColor(Rnd() * 10) 4. Quy định Form thực hiện trước Khi một Project có nhiều Form ta phải quy định Form nào thực hiện trước (Fom sẽ hiện lên màn hình đầu tiên khi chương trình thực hiện). Cách thực hiện: Chọn menu Project – Project properties Chọn General Chọn tên Form chính trong Combo box Star Object Giáo trình Visual Basic 6.0 163
  164. 5. Hiện Form lên màn hình Khi chương trình thực hiện nó chỉ hiện Form chính lên màn hình. Trong quá trình xử lý, nếu muốn một Form khác xuất hiện ta phải gọi phương thức Show của Form đó theo cú pháp : tênForm.show Một Form được hiển thị lên màn hình theo một trong hai trạng thái: Modeless: Sau khi Form được show lên màn hình các câu lệnh sau lệnh show sẽ được thực hiện tiếp. Đây là trạng thái mặc nhiên. Modal: Nếu Form được Show theo trạng thái này thì sau khi Form hiện ra thì chương trình chỉ làm việc với Form này cho đến khi nào Form này đóng lại thì mới thực hiện tiếp các câu lệnh sau show. Thông thường các hộp thoại trong các chương trình úng dụng được Show ở trạng thái Modal. Để hiển thị Form ở trạng thái modal ta thêm số một (1) hoặc hằng số VBmodal sau show o Vd: Form2.Sow 1 Nạp và hủy Form Lệnh Load: Lệnh này để load một Form vào bộ nhớ nhưng không hiện Form lên màn hình. Lệnh này thường được sử dụng khi ta cần lấy các giá trị được tạo ra khi Form này được load vào bộ nhớ mà không cần nó hiện lên màn hình. Lệnh Unload: Khi muốn hủy bỏ một Form ra khỏi bộ nhớ, chúng ta dùng lệnh Unload theo cú pháp Unload o Ví dụ: unload Form2 164 Giáo trình Visual Basic 6.0
  165. Trong trường hợp chỉ muốn làm cho Form không hiển thị trên màn hình nhưng vẫn tồn tại trong bộ nhớ ta có thể dùng lệnh hide o Ví dụ: Form2.Hide Từ khóa Me: Từ khóa này có dùng để thay thế cho tên Form trong các câu lệnh được viết trong Form này Ví dụ: Trong Form2 thay vì ghi câu lệnh unload Form2 ta có thể ghi unload me Ví dụ: Viết chương trình sư dụng 2 Form. Form đầu sẽ dùng để điều khiển Form thứ 2 như các mô tả dưới đây: Trong Form thứ 2 có 1 biến toàn cục V và 1 hàm Sub1 Form thứ 1 sẽ gọi và hiển thị Form 2 dạng Modelesss Form thứ 1 sẽ thay đổi biến V của Form 2 Form thứ 1 sẽ gọi hàm Sub1 của Form 2 Form thứ 1 đổi màu nền Form 2 Code của Form1 Option Explicit Private Sub cmd_show_Click() Form2.Show 'vbModal Cmd1.SetFocus End Sub Private Sub Cmd1_Click() Form2.V = Form2.V + 1000 Giáo trình Visual Basic 6.0 165
  166. End Sub Private Sub Cmd2_Click() Form2.Sub1 End Sub Private Sub Cmd3_Click() Form2.Shape1.FillColor = QBColor(Rnd() * 10) End Sub Private Sub Cmd4_Click() Unload Form2 End 166 Giáo trình Visual Basic 6.0
  167. End Sub Private Sub Form_Click() cmd_show.Caption = Form2.V + 2000 End Sub Private Sub Form_Load() Load Form2 End Sub Code của Form2 Option Explicit Public V As Integer Private Sub Cmd_unload_Click() Unload Form2 'unload me 'Hide End Sub Private Sub Form_Load() V = 1000 txt1.Text = V End Sub Public Sub Sub1() txt1.Text = V End Sub Giáo trình Visual Basic 6.0 167
  168. 3. FORM MDI (Multi Document Interface) 1. Đặc điểm của một MDI Form: Là một cửa sổ mà bên trong có thể chứa nhiều Form con khác (các Form dạng SDI (Single document interface). Trong một Project chỉ có thể có một Form MDI duy nhất Các Form con của Form MDI luôn nằm bên trong Form MDI và kích thước luôn nhỏ hơn hoặc bằng Form MDI Khi một Form con của Form MDI được cực tiểu thì icon của nó nằm trên Form MDI chứ không nằm trên Desktop Khi di chuyển Form MDI thì các Form con của nó sẽ di chuyển theo 2. Đưa Form MDI vào project: Chọn Project – Add MDI Form 168 Giáo trình Visual Basic 6.0
  169. 3. Các thuộc tính và phương thức cơ bản của Form MDI: Thuộc tính Active Form: Cho phép truy xuất đến Form đang trong trạng thái hoạt động Phương thức Arrange: Sắp xếp các Form bên trong Form MDI o Cú pháp Arrange n . n: là một trong các giá trị từ 0 > 3 cho biết cách sắp xếp. 4. Quy định một Form là Form con của Form MDI: Để quy định một Form là Form con của Form MDI thì ta đặt thuộc tính MDIchild của Form này là true Giáo trình Visual Basic 6.0 169
  170. 5. Tạo một Form mới trong chương trình: Khi chương trình đang chạy, nếu muốn tạo thêm một hay nhiều Form mới giống như một mẫu Form đã thiết kế ta thực hiện các dòng lệnh sau: Dim As New Sau đó nếu muốn nạp Form mới vào bộ nhớ dùng lệnh: Load Muốn hiện Form lên màn hình .Show Ví dụ: Dim frm as new Form2 Load Form2 Frm.Show 4. Splash Screen Là một Form thường xuất hiện trên màn hình trong thời gian vài giây khi chương trình vừa khởi động. Thông tin trên Form này tóm tắt một vài thông tin về chương trình, ngoài ra Form này còn có mục đích lấp bớt khoảng trống trong khi các phần của chương trình đang nạp vào bộ nhớ (Form này sẽ được nạp ở chế độ Modeless) Mục đích của Splash Screen Giới thiệu thông tin về phần mềm, tác giả phần mềm 170 Giáo trình Visual Basic 6.0
  171. Làm cho người sử dụng bớt có cảm giác chương trình khởi động chậm hoặc không chạy Một splash screen có các đặc tính: Hiện lên màn hình trong một khoảng thời gian nào đó rồi tự đóng lại nhường chổ Form chính của chương trình. Trong thời gian này nếu có một phím được ấn, hoặc click chuột thì splash screen cũng được đóng lại. (Tùy chọn) Tạo Spalsh Screen Một Project có splash screen thì thường được khởi đầu bằng thủ tục sub main (khai báo trong module) Để chèn một module vào chưong trình ta thực hiện: Project – add module Ta có thể tự tạo ra Form này theo ý riêng hoặc có thể sử dụng chức năng : o Project – Add Form – Splash Screen o Sau đó thay đổi một số mục cho vừa ý Giáo trình Visual Basic 6.0 171
  172. Để ấn định thời gian xuất hiện của Form trên màn hình ta có thể sử dụng đối tượng Timer Ví dụ: Chương trình sau gồm một splash screen, một MDI Form, một Form mẫu có tên Form1, một module1 trong đó có Sub main() Option Explicit Sub Form_KeyPress(KeyAscii As Integer) Unload Me End Sub Sub Form_Unload(Cancel As Integer) MDIForm1.Show End Sub Private Sub Frame1_Click() Unload Me 172 Giáo trình Visual Basic 6.0
  173. End Sub Sub Timer1_Timer() Unload Me End Sub Option Explicit Private Sub MDIForm_DblClick() Me.Arrange 2 End Sub Private Sub MDIForm_click() Static n As Integer Dim newForm As New Form1 n = n + 1 newForm.Caption = "Form thu" & Str(n) newForm.Show End Sub Module1.bas Option Explicit Sub main() Giáo trình Visual Basic 6.0 173
  174. frmSplash.Show Load MDIForm1 End Sub 5. Tạo Menu Cho Một Form Menu là đối tượng thường được xử dụng do tính phân cấp và sự gọn gàng của nó. Để tạo menu cho một Form ta thực hiện các sau: Chọn Tools – Menu Editor (Hoặc bấm Ctrl_E) Nhập nội dung của menu vào ô caption nếu muốn tạo phím tắt thì thêm & phía trước ký tự muốn tạo phím tắt. 174 Giáo trình Visual Basic 6.0
  175. Nếu muốn tạo một vạch ngang trên menu thì caption - dấu trừ Đặt tên cho menu vào ô Name. Nếu có nhiều mục menu trùng nhau thì ta phải quy định thêm index của mỗi mục menu Nhấp vào nút next rồi lập lại các bước trên cho một mục menu mới. Nếu muốn một mục menu là con của một menu khác thì chọn trước khi nhập nội dung của menu Dùng các phím mũi tên để sắp xếp lại vị trí các menu Sau khi đã định nghĩa xong menu thì click vào nút OK Viết lệnh cho menu: Trên màn hình thiết kế click chuột vào mục muốn viết lệnh thì cửa sổ code hiện ra để ta viết lệnh Các thuộc tính của menu Thuộc tính Caption: có thể thay đổi lúc Run Time hoặc Design Time Thuộc tính Enabled: o Khi muốn một Menu trở nên mất tác dụng (bị mờ, không chọn được), sử dụng thuộc tính Enabled và chỉ định giá trị FALSE: . MnuFileExit.Enabled = False Thuộc tính Visible: Giáo trình Visual Basic 6.0 175
  176. o Khi muốn ẩn một Menu, sử dụng thuộc tính Visible và chỉ định giá trị FALSE. Khi menu mẹ bị ẩn đi, các menu con cũng bị ẩn theo: o MnuFile.Visible = False Thuộc tính Checked: o Một menu có thể chứa 1 Check mark. Check mark thường được sử dụng như 1 Option chọn lựa có 2 trạng thái: On hay Off. Khi muốn hiện một Check mark, sử dụng thuộc tính Checked và chỉ định giá trị TRUE. Ví dụ: Viết chương trình gồm có một menu Format – Bold dùng để định dạng một textbox là in đậm hay in thường. Khi người sử dụng click vào menu Bold, thì tùy theo trạng thái đang chọn của menu Bold mà textbox và menu sẽ chuyển sang trạng thái còn lại. 176 Giáo trình Visual Basic 6.0
  177. 6. End Sub Context menu Menu xuất hiện khi người sử dụng bấ, right- click Sử dụng Lệnh Popupmenu: o Lệnh này cho xuất hiện menu ở tại vị trí hiện hành của mouse Cú pháp Popupmenu Ví dụ: Chương trình sau có 3 Form: splash Form, MDI Form, Form1. Trong đó Form1 là Form mẫu. Trên MDIForm có một menu cho phép tạo ra Form mới, đóng Form và kết thúc chương trình Nội dung lệnh của Form splash , module1.bas cũng giống như bài trước Giáo trình Visual Basic 6.0 177
  178. Option Explicit Dim n As Integer Private Sub MDIForm_DblClick() Me.Arrange 2 End Sub Private Sub MDIForm_click() Dim newForm As New Form1 n = n + 1 newForm.Caption = "Form thu" & Str(n) newForm.Show End Sub Private Sub MDIForm_Load() n = 0 End Sub 178 Giáo trình Visual Basic 6.0
  179. Private Sub MDIForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu mnu_qlForm End Sub Private Sub mnu_end_Click() End End Sub Private Sub mnu_tao_Click() Dim newForm As New Form1 n = n + 1 newForm.Caption = "Form thu" & Str(n) newForm.Show End Sub Private Sub mnu_xoa_Click() If n > 0 Then Unload MDIForm1.ActiveForm n = n - 1 End If End Sub 7. Các Hàm Về Dữ Liệu Ngày Giờ Hàm Date Trả về ngày hệ thống (dạng thể hiện phụ thuộc vào Regional setting) Giáo trình Visual Basic 6.0 179
  180. Hàm Now trả về ngày giờ hệ thống (12/07/97 10:41:10 PM) Cdate(Variable or Property or Constant ) Chuyển một giá trị (chuỗi hoặc số) sang dạng date. o Ví dụ: CDate("12/31/1899")=#12/31/1899# o cdate(1)=#12/31/1899# 180 Giáo trình Visual Basic 6.0