Lập trình windows visual basic

Tài liệu Lập trình windows visual basic: 9/14/2011 1 Lập trình Windows Visual Basic Viện CNTT&TT – Trường ĐHBK Hà Nội  Phạm Ngọc Hưng  Bộ môn Kỹ thuật M|y tính, Viện Công nghệ Thông tin & Truyền thông, Trường Đại học B|ch Khoa H{ Nội  Email: hungpn@soict.hut.edu.vn  www.soict.hut.edu.vn PNH-HUT2 Thông tin liên hệ Mục tiêu Môn học: Kỹ thuật lập trình trên Windows Cung cấp kỹ năng cơ bản trong lập trình trên Windows:  Lập trình giao diện đồ họa – người dùng (GUI)  Lập trình cơ sở dữ liệu  Sử dụng ActiveX, Component Hiểu biết về công nghệ lập trình của Microsoft (Visual Basic, Visual C++, Visual C#, .NET) Ngôn ngữ minh họa cụ thể: Visual Basic (Version 6.0, 8.0 (2005), 9.0 (2008)) PNH-HUT3 Thời lượng môn học Thời lượng: 75 tiết = 38LT + 37TH Từ 17/09 – 24/09/2011 C|ch thức tiến h{nh:  B{i giảng c|c vấn đề về lý thuyết  C|c b{i thực h{nh có hướng dẫn, b{i tập tự l{m  (Minh họa bằng VB6 hoặc VB2005/2008) PNH-HUT4 9/14/2011 2 Nội dung  Chương 1. Giới thiệu chung  Chương 2...

pdf84 trang | Chia sẻ: Khủng Long | Lượt xem: 1444 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Lập trình windows visual basic, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
9/14/2011 1 Lập trình Windows Visual Basic Viện CNTT&TT – Trường ĐHBK Hà Nội  Phạm Ngọc Hưng  Bộ môn Kỹ thuật M|y tính, Viện Công nghệ Thông tin & Truyền thông, Trường Đại học B|ch Khoa H{ Nội  Email: hungpn@soict.hut.edu.vn  www.soict.hut.edu.vn PNH-HUT2 Thông tin liên hệ Mục tiêu Môn học: Kỹ thuật lập trình trên Windows Cung cấp kỹ năng cơ bản trong lập trình trên Windows:  Lập trình giao diện đồ họa – người dùng (GUI)  Lập trình cơ sở dữ liệu  Sử dụng ActiveX, Component Hiểu biết về công nghệ lập trình của Microsoft (Visual Basic, Visual C++, Visual C#, .NET) Ngôn ngữ minh họa cụ thể: Visual Basic (Version 6.0, 8.0 (2005), 9.0 (2008)) PNH-HUT3 Thời lượng môn học Thời lượng: 75 tiết = 38LT + 37TH Từ 17/09 – 24/09/2011 C|ch thức tiến h{nh:  B{i giảng c|c vấn đề về lý thuyết  C|c b{i thực h{nh có hướng dẫn, b{i tập tự l{m  (Minh họa bằng VB6 hoặc VB2005/2008) PNH-HUT4 9/14/2011 2 Nội dung  Chương 1. Giới thiệu chung  Chương 2. C|c đối tượng trong Visual Basic  Chương 3. Kiểu dữ liệu, hằng, biến v{ mảng  Chương 4. C|c cấu trúc điều khiển  Chương 5. C|c lệnh v{ h{m căn bản  Chương 6. Thủ tục v{ h{m  Chương 7. C|c điều khiển hình ảnh, timer, duyệt file, thư mục.  Chương 8. Sử dụng menu, toolbar v{ hộp thoại  Chương 9. Xử lý tệp tin  Chương 10. Ứng dụng dạng MDI  Chương 11. Lập trình Cơ sở dữ liệu PNH-HUT5 T{i liệu tham khảo Microsoft Visual Basic 6.0 và Lập trình Cơ sở dữ liệu - Nguyễn Thị Ngọc Mai (chủ biên), Nh{ xuất bản Gi|o dục - 2000. Giáo trình thực hành Visual Basic 6.0 – Lâm Hoài Bảo Phần mềm tra cứu VB6 Function – Phan Hải Tú, VBLib,   PNH-HUT6 Chương 1 Giới thiệu chung PNH-HUT7 Nội dung 1.1. Lập trình Windows 1.2. C|c control chuẩn của Windows 1.3. Giới thiệu về Visual Basic 1.4. Môi trường ph|t triển VB6 PNH-HUT8 9/14/2011 3 1.1. Lập trình Windows Windows:  Hệ điều h{nh đồ họa trực quan (GUI – Graphics User Interface), giao tiếp với người sử dụng qua giao diện đồ họa (cửa sổ, nút bấm, hộp thoại, )  C|c t{i nguyên hệ thống cung cấp rất đa dạng: - C|c h{m thao t|c với tập tin, thư mục, ổ đĩa - Giao tiếp với thiết bị phần cứng (m|y in, truyền thông nối tiếp,) - v.v PNH-HUT9 1.1. Lập trình Windows Ứng dụng trên Windows th}n thiện với người dùng thông qua giao diện đồ họa sẵn có của Windows. PNH-HUT10 1.1. Lập trình Windows Đa số c|c ứng dụng trên Windows có chung kiểu giao diện tương t|c với người sử dụng.  Thanh thực đơn có c|c mục File, Edit, Tool, Help,  Hộp thoại chứa c|c phần điều khiển chung như: Edit Box, Button, CheckBox, PNH-HUT11 1.1. Lập trình Windows Trên Windows cung cấp c|c phương ph|p lập trình đồ họa đa dạng, c|ch xử lý đa nhiệm, đa luồng. (Visual Basic,Visual C#, Visual C++, ) Ph|t huy c|c sức mạnh t{i nguyên của Windows giúp x}y dựng những ứng dụng mạnh mẽ đa dạng, th}n thiện v{ dễ sử dụng. PNH-HUT12 9/14/2011 4 1.1. Lập trình Windows Cần biết:  Kỹ năng lập trình cơ bản (C, C++, )  Sử dụng công cụ lập trình trực quan (Visual)  Hiểu biết về Windows  Thẩm mỹ trình b{y hình ảnh, điều khiển, thiết kế giao diện tiện lợi, rõ r{ng, th}n thiện. PNH-HUT13 1.1. Lập trình Windows - API Windows OS cung cấp h{m trăm h{m cho c|c ứng dụng có thể sử dụng để truy cập c|c t{i nguyên trong hệ thống, gọi l{ giao diện lập trình ứng dụng API (Application Programming Interface). PNH-HUT14 1.1. Lập trình Windows - API C|c h{m API chứa trong thư viện liên kết động DLL (Dynamic Link Library). PNH-HUT15 Khi biên dịch chương trình, mã lệnh hàm API không được thêm vào mà chỉ thêm DLL chứa hàm và tên hàm đó. Khi chương trình thực thi, nó mới được nạp vào bộ nhớ để thực hiện. 1.1. Lập trình Windows - GDI Trong API có một số h{m có chức năng duy trì độc lập của thiết bị đồ họa, gọi l{ giao diện thiết bị đồ họa GDI (Graphics Device Interface). C|c h{m GDI cho phép c|c ứng dụng có thể l{m việc tốt với nhiều thiết bị đồ họa kh|c nhau. PNH-HUT16 9/14/2011 5 1.1. Lập trình Windows – Message Ứng dụng trên Windows xử lý theo c|c sự kiện (event – driven), c|c ứng dụng liên tục chờ hệ điều h{nh truyền sự kiện v{o. C|c sự kiện như:  Sự kiện chuột (click, double click, drag,drop, scroll).  Sự kiện ấn phím  Sự kiện thời gian  v.v Mỗi cửa sổ ứng dụng có h{m xử lý cửa sổ được gọi khi có dữ liệu nhập n{o đó được truyền đến. PNH-HUT17 1.1. Lập trình Windows – Message Hệ thống quản lý việc truyền dữ liệu đến cửa sổ v{ gọi h{m xử lý của cửa sổ tương ứng thông qua hình thức thông điệp (message). Thông điệp được ph|t sinh từ ứng dụng v{ hệ thống. PNH-HUT18 1.1. Lập trình Windows – Message Hệ thống sẽ ph|t sinh một thông điệp khi có một sự kiện nhập v{o (input even). Ví dụ: ấn phím, di chuyển chuột, thanh cuộn, click nút bấm, Hệ thống cũng ph|t sinh ra thông điệp để phản ứng lại một sự thay đổi của hệ thống do một ứng dụng mang đến. Ví dụ: ứng dụng l{m cạn kiệt t{i nguyên hay ứng dụng tự thay đổi kích thước của cửa sổ. Một ứng dụng có thể ph|t sinh ra thông điệp khi cần yêu cầu c|c cửa sổ của nó thực hiện một nhiệm vụ n{o đó hay dùng để thông tin giữa c|c cửa sổ. PNH-HUT19 1.2. C|c Control chuẩn của Windows Cửa sổ (Window):  Vùng hình chữ nhật trên m{n hình.  Ứng dụng hiển thị thông tin ra, nhận thông tin v{o. PNH-HUT20  Nhiệm vụ đầu tiên của ứng dụng đồ họa trên Windows là tạo một cửa sổ.  Cửa sổ chia sẻ màn hình với các cửa sổ khác trong cùng ứng dụng hoặc các ứng dụng khác.  Tại một thời điểm chỉ có một cửa sổ nhận được thông điệp từ người dùng. 9/14/2011 6 1.2. C|c Control chuẩn của Windows (tt) Hộp thoại v{ c|c điều khiển:  Hộp thoại (Dialog) dùng để tương t|c với người dùng trong một chương trình ứng dụng. Một hộp thoại thường chứa nhiều c|c đều khiển như: • Ô nhập văn bản (edit text) • Nút bấm (button) • Ghi chú (static) • Hộp danh s|ch liệt kê (list box) • Hộp danh s|ch thả xuống (Combo box) • Nút lựa chọn (Radio button) • Nút kiểm (check button), PNH-HUT21 1.2. C|c Control chuẩn của Windows (tt) Hộp thoại v{ c|c điều khiển (tiếp): PNH-HUT22 1.2. C|c Control chuẩn của Windows (tt) Hộp thoại v{ c|c điều khiển (tiếp):  Thực đơn (menu): l{ một danh s|ch chứa c|c thao t|c với một định danh m{ người dùng có thể chọn. Hầu hết c|c ứng dụng có cửa sổ thì không thể thiếu thực đơn.  Thanh công cụ (toolbar): đ}y l{ một dạng menu nhưng chỉ chứa c|c thao t|c cần thiết dưới dạng c|c biểu tượng đặc trưng.  Ngo{i ra còn rất nhiều c|c điều khiển m{ c|c công cụ lập trình cung cấp cho người lập trình hay tự họ tạo ra dựa trên những th{nh phần được cung cấp sẵn. PNH-HUT23 1.3. Giới thiệu Visual Basic Visual Basic cung cấp bộ công cụ ho{n chỉnh, giúp nhanh chóng v{ đơn giản hóa lập trình ứng dụng trên Windows. Visual Basic ? Visual – đề cập phương ph|p sử dụng để tạo giao diện đồ họa người dùng GUI (Graphics User Interface). Cung cấp sẵn c|c đối tượng, điều khiển, người dùng sắp đặt vị trí, thiết lập thuộc tính, trên một khung màn hình (form). PNH-HUT24 9/14/2011 7 1.3. Giới thiệu Visual Basic Basic ? Đề cập đến ngôn ngữ BASIC (Beginer All purpose Symbolic Instruction Code). Đơn giản, dễ học, dễ sử dụng. Ban đầu, MSBasic, do hãng Microsoft viết từ thời dùng cho máy tính 8 bits 8080 hay Z80. Hiện nay chứa h{ng trăm c}u lệnh (commands), h{m (functions) v{ từ khóa (keywords). Rất nhiều commands, functions liên hệ trực tiếp đến MSWindows GUI. PNH-HUT25 1.3. Giới thiệu Visual Basic Visual Basic còn có hai dạng kh|c: Visual Basic for Application (VBA) và VBScript. VBA l{ ngôn ngữ nằm phía sau c|c chương trình Word, Excel, MSAccess, MSProject, .v.v.. còn gọi l{ Macros. VBScript được dùng cho Internet v{ chính Operating System. PNH-HUT26 1.3. Giới thiệu Visual Basic C|c phiên bản:  VB 1.0 năm 1991: Kết hợp BASIC với môi trường lập trình ph|t triển lập trình hình ảnh GUI.  VB 3.0: Thiết kế ứng dụng liên quan đến cơ sở dữ liệu (database).  VB 4.0 & 5.0 tiếp tục mở rộng, nhắm đến hệ điều h{nh Windows 95.  VB 6.0: phương ph|p lập trình mới, thiên về đối tượng (Object Oriented), thủ tục xử lý theo tình huống, phương thức.  VB 8.0 (2005) và VB 9.0 (2008), VB 2010 (.NET framework) PNH-HUT27 1.4. Môi trường ph|t triển VB6 Môi trường ph|t triển tích hợp (IDE) PNH-HUT28 Project Explorer Properties Form Layout FormToolBox 9/14/2011 8 1.4. Môi trường ph|t triển VB6 MenuBar  Chứa đầy đủ các commands sử dụng để l{m việc với VB6, kể cả menu để truy cập c|c chức năng đặc biệt d{nh cho việc lập trình chẳng hạn như Project, Format, hoặc Debug.  Trong Menu Add-Ins có Add-Ins Manager cho phép gắn thêm những menu con để chạy c|c chương trình lợi ích cho việc lập trình. PNH-HUT29 1.4. Môi trường ph|t triển VB6 Toolbars (Debug, Edit, form Editor, Standard)  Thanh công cụ chuẩn  Thanh công cụ gỡ rối (Debug)  Thanh công cụ soạn thảo (Edit) PNH-HUT30 1.4. Môi trường ph|t triển VB6 Toolbox :hộp đồ nghề với c|c công cụ, gọi l{ controls, đặt lên form trong lúc thiết kế (design). PNH-HUT31 1.4. Môi trường ph|t triển VB6 Project Explorer:  Liệt kê c|c forms v{ c|c modules trong project hiện h{nh.  Project – tập hợp c|c file tạo một trình ứng dụng.  Viết một chương trình l{ triển khai một project. PNH-HUT32 9/14/2011 9 1.4. Môi trường ph|t triển VB6 Properties Window:  Liệt kê c|c đặc tính của c|c forms hoặc controls được chọn.  Một property l{ một đặc tính của một object chẳng hạn như size, caption, hoặc color. PNH-HUT33 1.4. Môi trường ph|t triển VB6 Form Layout  Dùng Form Layout để chỉnh vị trí của c|c forms khi form hiện ra lần đầu lúc chương trình chạy.  Dùng context command Resolution Guides để thấy nếu dùng một m{n ảnh với độ mịn (resolution) tệ hơn, thí dụ như 640 X 480, thì nó sẽ nhỏ như thế nào. PNH-HUT34 1.4. Môi trường ph|t triển VB6 Form Designer  Dùng để thiết kế giao diện lập trình. Mỗi form trong trình ứng dụng của bạn có designer form riêng của nó. Khi maximize một form designer, nó chiếm cả khu l{m việc. Muốn l{m cho nó trở lại cỡ bình thường v{ đồng thời để thấy c|c form designers khác, click nút Restore Window ở góc bên phải, phía trên. PNH-HUT35 1.4. Môi trường ph|t triển VB6 Immediate Window  Dùng để gỡ rối (debug) trình ứng dụng.  Có thể hiện dữ kiện trong khi chạy chương trình ứng dụng. Khi chương trình đang tạm ngừng ở một break point, có thể thay đổi gi| trị c|c variables hay chạy một dòng chương trình. PNH-HUT36 9/14/2011 10 Cấu trúc một chương trình VB  Trong VB, về cơ bản một chương trình ứng dụng (project) sẽ chứa một hay nhiều Biểu mẫu giao tiếp (Form). Ngo{i những m{n hình giao tiếp ra, ứng dụng còn có thể có c|c thư viện (Module) lưu trữ c|c th{nh phần dùng chung của to{n bộ ứng dụng như biến, thủ tục, h{m, PNH-HUT37 Biểu mẫu 1 Điều khiển 1 Điều khiển 2 Điều khiển n Biểu mẫu 2 Điều khiển 1 Điều khiển 2 Điều khiển k Thư viện 1 Cấu trúc một chương trình VB Khi lưu trên đĩa, một ứng dụng VB gồm c|c tập tin:  Tập tin project (.VBP): Tập tin chứa thông tin chung của một ứng dụng. Mỗi một ứng dụng khi lưu trữ sẽ chỉ có đúng một tập tin n{y.  Tập tin Biểu mẫu (.FRM): Tập tin văn bản chứa thông tin, c|c thủ tục xử lý biến cố, biến, thủ tục, h{m của một m{n hình giao tiếp.  Tập tin thư viện (.BAS): Tập tin văn bản chứa khai b|o c|c hằng, biến to{n cục, c|c h{m thủ tục dùng chung của to{n bộ ứng dụng. PNH-HUT38 Môi trường ph|t triển VB2005, 2008 PNH-HUT39 Chương 2. Đối tượng trong Visual Basic PNH-HUT40 9/14/2011 11 Nội dung 2.1. C|c kh|i niệm 2.2. Sử dụng Properties Window 2.3. Sử dụng thuộc tính, phương thức 2.4. Một số đối tượng cơ bản PNH-HUT41 2.1. C|c kh|i niệm  Form – Biểu mẫu  Controls – C|c điều khiển  Properties – Thuộc tính Method – Phương thức  Event – Sự kiện PNH-HUT42 Form – Biểu mẫu  Tạo ra cửa sổ chương trình (m{n hình giao tiếp của ứng dụng)  Chứa c|c đối tượng kh|c (điều khiển) để x}y dựng giao diện chương trình.  Quản lý Form: PNH-HUT43 Controls – C|c điều khiển  C|c th{nh phần có sẵn, tạo giao diện tương t|c với người sử dụng.  Mỗi điều khiển thực chất l{ một đối tượng (object), gồm c|c đặc trưng: - Thuộc tính (properties) - Phương thức (method) - Sự kiện (event) PNH-HUT44 9/14/2011 12 Thuộc tính – Properties C|c đặc trưng của điều khiển tạo nên d|ng vẻ của điều khiển đó. Ví dụ: C|c thuộc tính tạo d|ng vẻ cho nút lệnh PNH-HUT45 Ví dụ thuộc tính TextBox PNH-HUT46 Phương thức - Method C|c điều khiển có thể thực thi t|c vụ n{o đó. C|c t|c vụ được định nghĩa sẵn trong phương thức (chương trình con: h{m, thủ tục) Được gọi khi cần thực thi. Ví dụ: Đóng/mở cửa sổ Mở hộp thoại Di chuyển vị trí PNH-HUT47 Ví dụ phương thức trên Form PNH-HUT48 9/14/2011 13 Sự kiện – Events  L{ c|c h{nh động của người dùng t|c động nên ứng dụng đang thực thi.  Ví dụ: click chuột v{o nút bấm, nhập ký tự v{o ô text box,  C|c th{nh phần giao diện có khả năng đ|p ứng sự kiện.  Ứng dụng trên Windows thường thực hiện việc đ|p ứng sự kiện người dụng. PNH-HUT49 Lập trình sự kiện  C|c th{nh phần giao diện có khả năng nhận biết sự kiện từ phía người dùng. Tuy nhiên khả năng đ|p ứng lại sự kiện phải được thực hiện bởi lập trình.  X|c định h{nh động của th{nh phần giao diện để đ|p ứng sự kiện cụ thể, viết đoạn m~ lệnh thực thi.  Ví dụ: Sự kiện click chuột v{o nút được lập trình để thực hiện công việc xử lý n{o đó. PNH-HUT50 2.2. Sử dụng Properties Window Mở cửa sổ Properties cho một đối tượng:  Chọn đối tượng (chuột tr|i)  Hoặc chuột phải v{o đối tượng, chọn Properties  Hoặc chọn đối tượng trong hộp combo box của cửa sổ. PNH-HUT51 2.2. Sử dụng Properties Window C|c thuộc tính của đối tượng được liệt kê theo bảng gồm 2 cột: Thẻ Alpabetic: Xem c|c thuộc tính theo thứ tự abc Thẻ Categorized: Xem c|c thuộc tính theo phân nhóm (Appearance, Behavior, Font, ) PNH-HUT Tên, kiểu thuộc tính Giá trị tương ứng 52 9/14/2011 14 2.2. Sử dụng Properties Window Thuộc tính Name (tên):  Có ở tất cả c|c đối tượng, để x|c định tên đối tượng.  Quan trọng trong nhiều trường hợp: lấy/hiện dữ liệu, xử lý tương t|c sự kiện,  Dùng để truy xuất đến c|c thuộc tính kh|c.  Qui tắc đặt tên: • D{i từ 1 – 40 ký tự • Bắt đầu bằng ký tự chữ • Nên đặt theo viết tắt loại đối tượng + gợi nhớ chức năng để tiện lập trình. Ví dụ: frmLogin, btnThoat, txtHoten, v.v PNH-HUT53 2.3. Sử dụng thuộc tính, phương thức trong chương trình L{m việc với thuộc tính:  .  Ví dụ: btnThoat.Visiable = False L{m việc với phương thức:  .[(<c|c tham số nếu có>)]  Ví dụ: img.Move(x,y) PNH-HUT54 2.4. Một số đối tượng cơ bản Có nhiều điều khiển kh|c nhau phục vụ x}y dựng ứng dụng. Biểu mẫu (Form) dùng để chứa c|c điều khiển (Controls). C|c điều khiển thường dùng:  Nhãn (Label)  Khung (Frame)  Nút lệnh (Button)  Ô nhập liệu (Textbox)  ListBox/Combo Box  Check box  Radio button, PNH-HUT55 2.4.1. Biểu mẫu - Form Kh|i niệm:  Giao diện chương trình giao tiếp với người sử dụng (form, windows), chứa c|c điều khiển (controls).  Được lập trình nhằm hiển thị dữ liệu v{ nhận thông tin từ người sử dụng. Thuộc tính:  Name: Định danh biểu mẫu, truy xuất đến thuộc tính kh|c, v{ phương thức thao t|c trên biểu mẫu.  Caption: Chuỗi hiển thị trên thanh tiêu đề biểu mẫu  Icon: Biểu tượng dùng trên thanh tiêu đề của biểu mẫu. PNH-HUT56 9/14/2011 15 2.4.1. Biểu mẫu - Form Thuộc tính (tiếp):  Windowstate: x|c định biểu mẫu sẽ có kích thước bình thường (Normal=0), hay Minimized (=1), Maximized =(2).  Font: x|c lập Font cho biểu mẫu. Thuộc tính n{y sẽ được c|c điều khiển nằm trên nó thừa kế. Tức l{ khi ta đặt một điều khiển lên biểu mẫu, thuộc tính Font của điều khiển ấy sẽ tự động trở nên giống y của biểu mẫu.  BorderStyle: x|c định dạng của biểu mẫu. Phương thức:  Move: di chuyển biểu mẫu đến tọa độ X,Y: Move X, Y. PNH-HUT57 2.4.1. Biểu mẫu - Form Sự kiện:  Form_Initialize: xảy ra đầu tiên, 1 lần khi tạo ra thể hiện biểu mẫu.  Form_Load: xảy ra mỗi lần gọi thể hiện biểu mẫu  Form_Activate: xảy ra mỗi lần biểu mẫu được kích hoạt  Form_QueryUnload: xảy ra khi click chuột v{o nút X để đóng biểu mẫu.  Form_Resize: xảy ra khi biểu mẫu thay đổi kích thước. PNH-HUT58 2.4.2. Nhãn - Label Kh|i niệm:  Nh~n l{ điều khiển dạng đồ họa cho phép người sử dụng hiển thị chuỗi ký tự trên biểu mẫu nhưng không thể thay đổi chuỗi ký tự đó một c|ch trực tiếp. Thuộc tính:  Name: Định danh cho điều khiển  Caption: Chuỗi ký tự hiển thị (mặc định l{ Label).  Font, Fore Color: kiểu chữ, kích thước, m{u chữ.  BackStyle: quy định l{ nh~n trong suốt hay không.  BackColor: quy định m{u nền của nh~n trong trường hợp không trong suốt. PNH-HUT59 PNH-HUT60 9/14/2011 16 PNH-HUT61 2.4.2. Nhãn - Label Phương thức:  Move: di chuyển nh~n đến tọa độ X,Y: Move X, Y. Sự kiện:  Change: Xảy ra mỗi khi nh~n thay đổi gi| trị.  Click: Mỗi khi nh~n được chuột nhấp lên, sự kiện n{y xảy ra.  DblClick: Xảy ra khi người sử dụng nhấp đúp chuột lên điều khiển nh~n. PNH-HUT62 2.4.3. Khung - Frame Kh|i niệm:  Bố trí giao diện biểu mẫu rõ r{ng.  C|c điều khiển cùng nhóm công việc thường đặt trong một khung. Thuộc tính:  Name, Caption, Phương thức:  Move X,Y Sự kiện:  Click, DblClick. PNH-HUT63 2.4.4. Nút lệnh - Button Kh|i niệm:  Điều khiển dùng để bắt đầu, ngắt, kết thúc một qu| trình.  Nút ấn (push button) Thuộc tính:  Name: định danh nút lệnh  Caption: chuỗi hiển thị trên nút lệnh  Default: nếu = True, cho chọn nút lệnh bằng phím Enter.  Cancel: nếu = True, cho chọn nút lệnh bằng phím Esc.  Enabled: cho chọn (True) hoặc không cho chọn (False) nút lệnh. PNH-HUT64 9/14/2011 17 PNH-HUT65 2.4.4. Nút lệnh - Button Thuộc tính (tiếp):  ToolTipText: cho phép hiển thị một đoạn văn bản chú thích công dụng của nút lệnh khi dùng chuột rê trên nút nhấn.  Font, Fore Color: Quy định kiểu chữ, kích thước, m{u hiển thị. Phương thức:  Move x,y Sự kiện:  Click: thường dùng. Được kích hoạt khi chọn nút lệnh. Người lập trình viết m~ lệnh cho sự kiện n{y. PNH-HUT66 Ví dụ Nút lệnh PNH-HUT67 2.4.5. Ô nhập liệu – Textbox Kh|i niệm:  Điều khiển cho phép nhận thông tin người dùng nhập v{o. (thời điểm chạy ứng dụng)  Hoặc để hiển thị thông tin đưa v{o (khi thiết kế hoặc khi chạy ứng dụng). Thuộc tính:  Name: định danh cho điều khiển.  Text: Dùng để nhập v{o thông tin cần hiển thị trong Textbox tại thời điểm thiết kế hoặc nhận gi| trị do người dùng nhập v{o tại thời điểm chạy ứng dụng.  MaxLength: số ký tự tối đa cho phép nhập. PNH-HUT68 9/14/2011 18 2.4.5. Ô nhập liệu – Textbox Thuộc tính (tiếp):  Locked: có/không cho phép thay đổi nội dung ô nhập liệu.  PasswordChar: qui định c|ch hiện ký tự nhập v{o, dùng khi muốn che giấu.  Multiline: có/không nhập theo nhiều h{ng.  Font, Fore Color: Quy định kiểu chữ, kích thước, m{u hiển thị. Phương thức:  Move x,y  SetFocus: thiết lập nhận focus (sẵn s{ng tương t|c). PNH-HUT69 2.4.5. Ô nhập liệu – Textbox Sự kiện:  KeyPress: xảy ra khi người dùng nhấn một phím. Thường dùng nó để lọc (filter out) c|c phím không chấp nhận. Sự kiện KeyPress cho ta một m~ Ascii, một số có gi| trị từ 0 đến 255, của phím vừa nhấn.  KeyDown, KeyUp: mỗi sự kiện KeyPress lại cho ta một cặp sự kiện KeyDown/KeyUp. Sự kiện KeyDown/KeyUp có 2 tham số l{ KeyCode v{ Shift. Sự kiện n{y cho phép ta nhận biết được c|c phím đặc biệt trên b{n phím PNH-HUT70 2.4.6. List Box Hiển thị một danh s|ch c|c phần tử. Người sử dụng chọn một hoặc nhiều phần tử. Biểu tượng Ví dụ: PNH-HUT71 2.4.6. ListBox (tiếp) Thuộc tính:  Name: định danh  MultiSelect: Cho phép có/không lựa chọn nhiều dòng (yes/no).  Sort: List Box có sắp xếp hay không?  ListIndex: Vị trí của phần tử được lựa chọn trong List Box.  ListCount: Số phần tử của danh s|ch (tính từ 0 đến ListCount -1)  Select(): cho biết phần tử thứ trong List Box có được chọn hay không?  List: Danh s|ch c|c phần tử (nhập khi thiết kế) Ctrl + Enter PNH-HUT72 9/14/2011 19 2.4.6. ListBox (tiếp) Phương thức:  AddItem: Thêm một phần tử v{o List Box. Cú ph|p: .AddItem(Item As String, [Index]) - Name: tên danh sách - Item: Phần tử (chuỗi) muốn thêm - Index: Vị trí thêm v{o (tính từ 0). Nếu không có sẽ thêm v{o cuối.  RemoveItem: Xóa một phần tử ra khỏi List Box. Cú pháp: .RemoveItem Index Tham số Name v{ Index giống như ở trường hợp thêm v{o một đề mục. PNH-HUT73 2.4.6. ListBox (tiếp) Phương thức:  Clear: Xóa tất cả c|c mục trong List Box. Cú ph|p .Clear  Text: Nhận gi| trị từ List Box khi một đề mục được chọn.  List: Truy xuất nội dung phần tử bất kỳ trong ListBox. .List(Index) Ví dụ: Text1.Text = List1.List(2) ‘Chọn phần tử thứ 3 PNH-HUT74 2.4.7. Combo Box Điều khiển hộp lựa chọn:  Kết hợp TextBox + ListBox, chọn bằng c|ch nhập v{o chuỗi hoặc chọn từ một đề mục trong danh s|ch.  Chỉ gợi ý, đề nghị c|c lựa chọn (kh|c listbox giới hạn trước c|c phần tử lựa chọn).  Biểu tượng:  Có 3 dạng (có thể chọn khi thiết kế): PNH-HUT75 Kiểu Giá trị Hằng Drop-down ComboBox 0 vbComboDropDown Simple ComboBox 1 vbComboSimple Drop-down Listbox 2 vbComboDropDownList 2.4.7. Combo Box (tiếp) C|c dạng ComboBox: PNH-HUT76 Các thuộc tính, phương thức giống như ListBox 9/14/2011 20 2.4.8. Check Box Nhận thông tin người sử dụng dạng Yes/No (True/False). Có thể dùng nhiều khả năng lựa chọn trong một nhóm. Khi được chọn có gi| trị 1, không chọn gi| trị 0. Biểu tượng Thuộc tính:  Name  Value: Gi| trị hiện thời checkbox (vbChecked, vbUnChecked) Sự kiện:  Click PNH-HUT77 2.4.9. Option Button Tương tự checkbox Kh|c: Trong một nhóm, tại mỗi thời điểm chỉ một điều khiển nhất định được chọn. Biểu tượng: Thuộc tính:  Name, Value (True/False) Sự kiện: Click Tạo nhóm Option:  C|c option đặt trực tiếp trên biểu mẫu sẽ cùng một nhóm.  Muốn tạo nhóm riêng phải đặt trong Frame hoặc Picture Box. PNH-HUT78 2.4.9. Option Button (tiếp) PNH-HUT79 2.4.10. C|c điều khiển kh|c PNH-HUT80 9/14/2011 21 2.5. Viết lệnh cho đối tượng View code button: Click để mở cửa sổ viết m~ lệnh cho c|c đối tượng. Mở thủ tục xử lý c|c sự kiện của đối tượng để viết c|c m~ lệnh cần thiết. PNH-HUT81 2.5.Viết code cho đối tượng Phím tắt PNH-HUT82 2.5.Viết code cho đối tượng Gợi nhớ Code: bấm Tab hoặc Space PNH-HUT83 Chương 3 Kiểu dữ liệu, hằng, biến, v{ mảng PNH-HUT84 9/14/2011 22 Nội dung 3.1. Kiểu dữ liệu 3.2. Biến 3.3. Hằng số 3.4. To|n tử v{ biểu thức 3.5. C|c kiểu dữ liệu có cấu trúc PNH-HUT85 3.1. Kiểu dữ liệu Kh|i niệm:  Tập hợp c|c gi| trị m{ 1 biến của kiểu có thể nhận v{ tập hợp c|c phép to|n có thể |p dụng trên c|c gi| trị đó. C|c kiểu dữ liệu cơ sở trong VB: PNH-HUT86 Kiểu Kích thước Mô tả Boolean 2 byte Gồm 2 giá trị True và False Byte 1 byte Các giá trị số nguyên từ 0 255 Integer 2 byte Các giá trị số nguyên từ -32768 đến 32767 Long 4 byte Các giá trị số nguyên từ -2147483648 – 2147483647. Kiểu dữ liệu số nguyên dài (4 byte) 3.1. Kiểu dữ liệu C|c kiểu dữ liệu cơ sở trong VB (tiếp): PNH-HUT87 Kiểu Kích thước Mô tả Single 4 byte Các giá trị số thực từ -3.402823E+38 – 3.402823E+38. Kiểu dữ liệu số thực độ chính xác đơn. Double 8 byte Các giá trị số thực từ -1.79769313486232E+308 - 1.79769313486232E+308. Kiểu dữ liệu số thực độ chính xác kép. Currency 8 byte Dữ liệu tiền tệ chứa các giá trị số từ - 922.337.203.685.477,5808 - 922.337.203.685.477,5807. String 1 byte/1 ký tự Chuỗi dữ liệu từ 0 đến 65.500 ký tự hay chữ số,các ký tự đặc biệt như ^%@. Giá trị kiểu chuỗi được đặt giữa 2 dấu ngoặc kép (“”). Date 8 byte Dữ liệu kiểu ngày tháng, giá trị được đặt giữa cặp dấu ##. Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel. Variant Chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng. 3.1. Kiểu dữ liệu Chuyển kiểu dữ liệu PNH-HUT88 9/14/2011 23 3.2. Biến Kh|i niệm:  Biến (Variable) l{ vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong qu| trình tính to|n, so s|nh v{ c|c công việc kh|c.  2 đặc điểm: • Mỗi biến có một tên. • Mỗi biến có thể chứa duy nhất một loại dữ liệu.  Tên biến: đặt giống qui tắc đặt tên điều khiển PNH-HUT89 3.2. Biến Khai b|o biến PNH-HUT90 3.2. Biến Khai b|o biến (tiếp):  Khai báo ngầm: Không cần khai b|o biến trước khi dùng. (Tiện nhưng dễ sai sót).  Khai báo tường minh: qui định VB b|o lỗi khi gặp biến chưa khai b|o. Dùng lệnh: • Option Explicit trong phần Declaration (khai b|o) của mô-đun. • Chỉ có t|c dụng trên từng mô-đun. PNH-HUT91 3.3. Hằng số - Constant PNH-HUT92 9/14/2011 24 3.4. To|n tử v{ biểu thức Kh|i niệm:  To|n tử hay phép to|n (Operator): thực hiện phép tính v{ xử lý dữ liệu.  To|n hạng (Operand): l{ gi| trị dữ liệu (biến, hằng).  Biểu thức (Expression): l{ tập hợp c|c to|n hạng v{ c|c to|n tử kết hợp lại với nhau theo quy tắc nhất định để tính to|n ra một gi| trị n{o đó. PNH-HUT93 3.4. To|n tử v{ biểu thức C|c phép to|n số học:  Thao t|c trên kiểu dữ liệu số. PNH-HUT94 Phép toán Ý nghĩa + Cộng - Trừ * Nhân / Chia \ Chia lấy phần nguyên Mod Chia lấy dư ^ Lũy thừa 3.4. To|n tử v{ biểu thức C|c phép to|n quan hệ:  Trả về gi| trị kiểu Boolean PNH-HUT95 Toán tử Ý nghĩa = So sánh bằng So sánh khác < So sánh nhỏ hơn > So sánh lớn hơn <= So sánh nhỏ hơn hoặc bằng >= So sánh lớn hơn hoặc bằng 3.4. To|n tử v{ biểu thức  Các phép logic: PNH-HUT96 9/14/2011 25 3.4. To|n tử v{ biểu thức PNH-HUT97 3.4. To|n tử v{ biểu thức PNH-HUT98 3.5. C|c kiểu dữ liệu có cấu trúc Kiểu dữ liệu chuỗi (String) Kiểu dữ liệu ng{y th|ng (Date) Kiểu dữ liệu động (Variant) Kiểu dữ liệu mảng (Array) Kiểu do người dùng định nghĩa (kiểu mẩu tin) PNH-HUT99 3.5.1. Kiểu chuỗi ký tự - String Khai báo:  String * : Khai b|o chuỗi có độ d{i cố định. Nếu nhỏ hơn tự động thêm ký tự khoảng trắng, nếu thừa cắt bỏ.  String: Khai b|o không chỉ ra độ d{i tối đa, mặc định d{i 65500 ký tự.  Ví dụ: • Dim Name As String * 30, Class As String * 10 • Dim A As String PNH-HUT100 9/14/2011 26 3.5.2. Kiểu ng{y th|ng - Date L{ kiểu m{ c|c biến của nó chứa gi| trị ng{y th|ng. Để cho VB biết dữ liệu l{ kiểu Date ta cần đặt giữa hai dấu # (hoặc cặp “”). Ví dụ: Dim D As Date D = #01/02/98# ‘ Hay “01/02/98” H{m Now: trả về ng{y giờ hiện tại. Ví dụ: Dùng h{m Now & Format:  MsgBox "NOW IS " & Format (Now, "ddd dd-mmm-yyyy hh:mm:ss") 'sẽ hiển thị NOW IS Tue 05-Oct-2004 16:15:53 PNH-HUT101 3.5.3. Kiểu Variant Biến kiểu Variant có thể chứa mọi kiểu dữ liệu kể cả kiểu mảng, kiểu do người dùng định nghĩa nhưng ngoại trừ kiểu chuỗi có độ d{i cố định . Biến kiểu Variant có thể nhận c|c gi| trị đặc biệt như Empty, Nothing, Error, Null. X|c định kiểu dữ liệu của biến Variant: hàm VarType, hàm TypeName. PNH-HUT102 3.5.4. Kiểu mảng - array Kh|i niệm:  Mảng l{ tập hợp c|c phần tử có cùng một kiểu.  Dùng vòng lặp cho mảng.  Mảng sẽ có biên trên v{ biên dưới, trong đó c|c th{nh phần của mảng l{ liên tiếp trong khoảng giữa hai biên n{y.  Có hai loại biến mảng: mảng có chiều d{i cố định v{ mảng có chiều d{i thay đổi lúc thi h{nh. PNH-HUT103 3.5.4. Kiểu mảng - array Khai báo:  Mảng có chiều d{i cố định: Dim () [As ] Phần tử đầu tiên có chỉ số 0. Dim ( To ) [As ]  Ví dụ: Dim Counters(14) As Integer ‘mảng 15 phần tử Integer Public Sums(20) As Double ‘mảng 21 phần tử kiểu double Dim List (1 To 10) As String * 12 ‘mảng 10 phần tử kiểu chuỗi ký tự PNH-HUT104 9/14/2011 27 3.5.4. Kiểu mảng - array Khai b|o (tiếp):  H{m UBound, LBound: trả về biên trên, biên dưới của mảng.  Mảng nhiều chiều: Ví dụ: Dim Multi3D (3, 1 To 10, 9) As Double Khai báo một mảng 3 chiều với kích thước 4 x 10 x 10.  Mảng động: có kích thước thay đổi, tiết kiệm t{i nguyên hệ thống, có thể xóa khi không dùng.  Cú pháp: Dim () [As ]  Ví dụ: Dim DynArray() As Integer  Cần cấp ph|t số phần tử, dùng lệnh: ReDim (N) PNH-HUT105 3.5.4. Mảng - array Một số thao t|c trên mảng:  Truy xuất từng phần tử trong mảng: ()  Sao chép mảng: g|n một mảng cho một mảng kh|c, h{m trả về mảng. Chú ý: tương thích, cho mảng khai b|o động.  Ví dụ: Sub ByteCopy (old() As Byte, New() As Byte) New = old End Sub PNH-HUT106 3.5.4. Mảng - array Một số thao t|c trên mảng (tiếp):  Mảng l{ kết quả trả về của h{m. Ví dụ: Public Function ArrayFunction (b As Byte) As Byte() Dim x(2) As Byte x(0) = b x(1) = b + 2 x(2) = b + b ArrayFunction = x End Function  Khi gọi h{m trả về mảng, biến giữ gi| trị trả về phải l{ một mảng v{ có kiểu như kiểu của h{m PNH-HUT107 3.5.5. Kiểu mẩu tin  Cú pháp: Type : : : End Type  Ví dụ: Type TEmployee Fullname As String Salary As Single Age As Integer End Type PNH-HUT108 9/14/2011 28 3.5.5. Kiểu mẩu tin  C|ch truy xuất từng trường của kiểu mẩu tin: .  Ví dụ: Khai b|o biến: Dim e As TEmployee  Thao tác gán: e.Fullname = “Nguyen Van An” e.Salary = 300000.00 e.Age = 26  Câu lệnh With: sử dụng để viết gọn hơn khi thao t|c với dữ liệu kiểu mẩu tin. Cú ph|p: With . ‘truy xuất đến từng trường End With PNH-HUT109 Dim e As TEmployee With e .Fullname = “Nguyen Van An” .Salary = 300000.00 .Age = 26 End With PNH-HUT110 e.Fullname = “Nguyen Van An” e.Salary = 300000.00 e.Age = 26 Chương 4 C|c cấu trúc điều khiển PNH-HUT111 Nội dung 4.1. Cấu trúc rẽ nh|nh 4.2. Cấu trúc lựa chọn 4.3. Cấu trúc lặp 4.4. Nh~n lệnh 4.5. Bẫy lỗi v{ xử lý PNH-HUT112 9/14/2011 29 4.1. Cấu trúc rẽ nh|nh (1) Một dòng lệnh: If Then Nhiều dòng lệnh: If Then C|c dòng lệnh End If PNH-HUT113 4.1. Cấu trúc rẽ nh|nh (2) Dạng đầy đủ: If ... Then ... Else If Then [Khối lệnh 1] ElseIf Then [Khối lệnh 2]... [Else [Khối lệnh n]] End If PNH-HUT114 4.2. Cấu trúc lựa chọn Select Case Case [Khối lệnh 1] Case [Khối lệnh 2] [Case Else [Khối lệnh n]] End Select PNH-HUT115 4.3. Cấu trúc lặp (1) Do Loop  Cấu trúc lặp không x|c định trước số lần lặp  Số lần lặp được quyết định bởi biểu thức điều kiện (True hoặc False)  Có 4 kiểu. Kiểu 1:  Do While Loop  Khối lệnh được thực hiện đến khi sai  Kiểm tra điều kiện trước.  Khối lệnh có thể không được thực hiện lần n{o. PNH-HUT116 9/14/2011 30 4.3. Cấu trúc lặp (2) Kiểu 2:  Do Loop While  Kiểm tra điều kiện sau  Khối lệnh được thực hiện ít nhất một lần Kiểu 3:  Do Until Loop  Tương tự cấu trúc Do While ... Loop  Kh|c: khối lệnh được thực hiện khi điều kiện sai PNH-HUT117 4.3. Cấu trúc lặp (3) Kiểu 4:  Do Loop Until  Lặp lại khối lệnh cho đến khi điều kiện đúng.  Được thực hiện ít nhất một lần. PNH-HUT118 4.3. Cấu trúc lặp (4) Ví dụ: Kiểm tra số nguyên N có nguyên tố ?  Dim i As Integer i = 2 Do While (i 0) i = i + 1 Loop If (i > Sqr(N)) And (N 1) Then MsgBox Str(N) & “ la so nguyen to” Else MsgBox Str(N) & “ khong la so nguyen to” End If  (H{m Sqr: h{m tính căn bậc hai của một số) PNH-HUT119 4.3. Cấu trúc lặp (5) For Next:  Lặp biết trước số lần lặp  Dùng biến đếm tăng dần, hoặc giảm dần để x|c định số lần lặp.  For = To <điểm cuối> [Step ] [khối lệnh] Next  Biến đếm, điểm đầu, điểm cuối l{ gi| trị số.  Bước nhảy có thể }m hoặc dương. Không dùng thì mặc định l{ 1. PNH-HUT120 9/14/2011 31 4.3. Cấu trúc lặp (6) Ví dụ: Hiển thị c|c kiểu chữ hiện có trong máy  Private Sub Form_Click( ) Dim i As Integer For i = 0 To Screen.FontCount MsgBox Screen.Fonts(i) Next End Sub PNH-HUT121 4.3. Cấu trúc lặp (7) For Each Next:  Tương tự For Next nhưng lặp theo số phần tử của một tập đối tượng hay một mảng.  For Each In Next  Lưu ý: • Phần tử trong tập hợp chỉ có thể l{ biến Variant, biến Object, hoặc một đối tượng trong Object Browser. • Phần tử trong mảng chỉ có thể l{ biến Variant. • Không dùng For Each ... Next với mảng chứa kiểu tự định nghĩa vì Variant không chứa kiểu tự định nghĩa. PNH-HUT122 4.4. Nh~n lệnh (1) Kh|i niệm:  Nh~n l{ tên g|n cho một đoạn chỉ thị lệnh bất kỳ trong chương trình. Khi thực hiện đoạn lệnh n{y chỉ cần nhảy tới nh~n đó.  Mỗi nh~n dùng trong một Form, đối tượng l{ duy nhất. C|ch viết:  : PNH-HUT123 4.4. Nh~n lệnh (2) C|ch gọi: có 2 c|ch  C|ch 1: sử dụng lệnh GOTO  Cách 2: ON GOTO Biểu thức số có gi| trị từ 1 255 Tên nh~n có số thứ tự ứng với biểu thức số sẽ được chọn Ví dụ: ON stt GOTO nhan1, nhan2, nhan3 PNH-HUT124 9/14/2011 32 4.4. Nh~n lệnh – Ví dụ Sub Form_Click() Print "Giáo trình" GOTO Nhan1 Print “Lệnh n{y sẽ bỏ qua" Nhan1: Print "Lập trình Visual Basic" End Sub PNH-HUT125 4.5. Bẫy lỗi v{ xử lý lỗi C|c lỗi chương trình khi thực thi khó kiểm so|t được hết. Lỗi thực thi có thể ph| hỏng chương trình. VB cung cấp cấu trúc bẫy lỗi thực thi. Có 2 dạng: Dạng 1:  On Error GoTo : PNH-HUT126 4.5. Bẫy lỗi v{ xử lý lỗi Dạng 1 (tiếp):  Ý nghĩa: Nếu xảy ra lỗi trong <c|c c}u lệnh xảy ra lỗi> thi chương trình sẽ nhảy tới lệnh bên dưới để thực thi. Dạng 2:  On Error Resume Next  Ý nghĩa: Nếu một lệnh trong <C|c c}u lệnh có thể g}y ra lỗi> thì khi chương trình thực thi đến c}u lệnh đó, sẽ tự động bỏ qua c}u lệnh bị lỗi v{ thực thi c}u lệnh kế tiếp. PNH-HUT127 4.5. Bẫy lỗi – Ví dụ  Private Sub Command1_Click() On Error Goto myErr Dim InputData Open "C:\arrays.cs" For Input As #1 Do While Not EOF(1) Line Input #1, InputData Debug.Print InputData Loop Close #1 Exit Sub myErr: Debug.Print Error(Err.Number) End Sub PNH-HUT128 9/14/2011 33 Chương 5 C|c lệnh v{ h{m căn bản PNH-HUT129 Nội dung 5.1. C|c lệnh cơ bản 5.2. C|c h{m cơ bản PNH-HUT130 5.1. C|c lệnh cơ bản 1. C}u lệnh: Exit For Lồng v{o trong vòng lặp For khi muốn dừng lại vòng lặp bất cứ lúc n{o. Ví dụ: flag = True For i = 2 To Sqr(n) If (n Mod i = 0) Then flag = False Exit For End If Next PNH-HUT131 5.1. C|c lệnh cơ bản 2. C}u lệnh: Exit Do Lồng v{o trong vòng lặp có cấu trúc DO khi muốn dừng lại vòng lặp bất cứ lúc n{o. Ví dụ: i=2 Do While (i <= Sqr(n)) If (n Mod i = 0) Then Exit Do Else i = i + 1 End If Loop PNH-HUT132 9/14/2011 34 5.1. C|c lệnh cơ bản 3. C}u lệnh: Exit Sub Tho|t khỏi thủ tục m{ bất cứ lúc n{o m{ không cần thực hiện c|c lệnh bên trong nó. Ví dụ: Private Sub cmdAdd_Click() If (txtName.Text = "") Then MsgBox "Nhap vao ten sinh vien" Exit Sub End If lstStudent.AddItem txtName.Text txtName.Text = "" txtName.SetFocus End Sub PNH-HUT133 5.1. C|c lệnh cơ bản (tiếp) 4. Lệnh: End Chấm dứt chương trình ngay, tất cả c|c cửa sổ chương trình đều đóng lại khi thực hiện lệnh n{y. Ví dụ: Private Sub cmdThoat_Click() End End Sub 5. Lệnh: Beep Ph|t ra tiếng kêu Beep PNH-HUT134 5.1. C|c lệnh cơ bản 6. Lệnh: Date Đặt lại ng{y hệ thống, hay lấy ng{y hệ thống Ví dụ: 'Lay ngay hien tai cua he thong: Dim MyDate MyDate = Date 'dat lai ngay hien tai cho he thong: MyDate = #February 12, 1985# ' Assign a date. Date = MyDate ' Change system date. PNH-HUT135 5.1. C|c lệnh cơ bản 7. Lệnh: Time Đặt lại giờ hệ thống, hay lấy giờ hệ thống Cú pháp : Time = VD: Time = # 5 : 12 : 45 PM # PNH-HUT136 9/14/2011 35 5.1. C|c lệnh cơ bản (tiếp) 8. Lệnh: Load Nạp 1 form (dùng nó để mở 1 Form) Cú pháp : Load Để l{m xuất hiện hoặc ẩn đi sử dụng phương thức Show ví dụ: form1.Hide ‘Ẩn form1 form2.Show ‘Hiện form2 PNH-HUT137 5.2. C|c h{m cơ bản C|c h{m số học C|c h{m về thời gian C|c h{m xử lý chuỗi C|c h{m l{m việc với ổ đĩa, thư mục Các hàm khác PNH-HUT138 5.2.1. C|c h{m số học 1. Hàm Abs (Number) Trả về một gi| trị l{ gi| trị tuyệt đối của Number Ví dụ: Private Sub Form_Load() Dim MyNumber MyNumber = Abs(50.3) ' Returns 50.3. MyNumber = Abs( - 50.3) ' Returns 50.3. End Sub PNH-HUT139 5.2.1. C|c h{m số học 2. Hàm Sin (Number as Double) Trả về một số thực l{ Sin của một góc (tính bằng đơn vị Radian) 3. Hàm Cos (Number as Double) Trả về một số thực l{ Cos của một góc (tính bằng đơn vị Radian) 4. Hàm Tan (Number as Double) Trả về một số thực l{ Tan của một góc (tính bằng đơn vị Radian) PNH-HUT140 9/14/2011 36 5.2.1. C|c h{m số học 5. Hàm Atn(Number): Lấy arctan của số number 6. Hàm Int (Number): Trả về phần nguyên của Number nếu nó l{ số dương, còn nếu số }m thì có gi| trị nhỏ hơn phần nguyên 1 đơn vị. 7. Hàm Fix (Number) Trả về phần nguyên của Number nếu nó l{ số dương, còn nếu số }m thì có gi| trị lớn hơn phần nguyên 1 đơn vị. PNH-HUT141 5.2.1. C|c h{m số học 8. Hàm Sgn (Number) Trả về một số nguyên Nếu Number > 0 sẽ trả về 1 Nếu Number < 0 sẽ trả về -1 Nếu Number = 0 sẽ trả về 0 9. Hàm Sqr (Number) Trả về căn bậc hai của Number 10. Hàm Exp (x) Đưa ra e lũy thừa x, e l{ cơ số Logarit tự nhiên. H{m trả về một số thực PNH-HUT142 5.2.1. C|c h{m số học 11. Hàm Log (x) Đưa ra Logarit tự nhiên của x 12. H{m Round (Expression [số]) H{m n{y sẽ l{m tròn số [,số] : số l{m tròn qua chấm thập ph}n. VD : Round(9.7) = 10 Round (9.785 , 2) = 9.79 13. Hàm Rnd; (Gọi h{m Randomize trước) Tạo 1 số ngẫu nhiên l{ 1 số thực từ 0 đến 1. Number*Rnd để tạo 1 số thực ngẫu nhiên từ 0 đến Number PNH-HUT143 5.2.2. C|c h{m về thời gian 1. Hàm Now: H{m n{y trả về ng{y th|ng năm v{ thời gian hiện hành. 2. Hàm Day (NgayThangNam) Trả về ng{y trong NgayThangNam m{ bạn ghi. Ta thường sử dụng Day(Now) để lấy ng{y hệ thống. 3. Hàm Month (NgayThangNam) Trả về Th|ng trong NgayThangNam Ta thường sử dụng Month(Now) để lấy th|ng hệ thống PNH-HUT144 9/14/2011 37 5.2.2. C|c h{m về thời gian 4. Hàm Year (NgayThangNam) Trả về Năm trong NgayThangNam m{ bạn ghi. Ta thường sử dụng Year(Now) để lấy năm hệ thống 5. Hàm Weekday (NgayThangNam) Trả về ng{y thứ mấy trong tuần ứng với NgayThangNam m{ bạn nhập v{o Ta có thể sử dụng Weekday(Now) để lấy thứ của ng{y hiện tại PNH-HUT145 5.2.2. C|c h{m về thời gian 6. Hàm Hour (ThoiGian) Trả về giờ ứng với ThoiGian m{ bạn nhập v{o Ta có thể sử dụng Hour(Now) để lấy giờ của hệ thống hiện tại 7. Hàm Minute (ThoiGian) Trả về phút ứng với ThoiGian m{ bạn nhập v{o Ta có thể sử dụng Minute(Now) để lấy phút của hệ thống hiện tại 8. Hàm Second (ThoiGian) Trả về gi}y ứng với ThoiGian m{ bạn nhập v{o Ta có thể sử dụng Second(Now) để lấy gi}y của hệ thống hiện tại PNH-HUT146 5.2.3. C|c h{m xử lý chuỗi Ghép chuỗi: & Cho phép ghép 2 hay nhiều chuỗi lại với nhau.  Ví dụ: Dim a As String, b As String Dim c As String a = "Hello" b= "World" c= a & “ “ & b & “ Lap trinh Windows” ' c bây giờ là "Hello World Lap trinh Windows" PNH-HUT147 5.2.3. C|c h{m xử lý chuỗi (tt)  Len: Trả về chiều d{i chuỗi.  Ví dụ: Greeting = "Hi John!” Dim iLen As Integer iLen = Len(Greeting) ' iLen bây giờ bằng 8  Left(String, Length): Trích chuỗi con từ đầu chuỗi gốc.  Right(String, Length): Trích chuỗi con từ phần đuôi chuỗi gốc.  Mid(String, start As Long, Length): Trích chuỗi con từ giữa chuỗi gốc. PNH-HUT148 9/14/2011 38 5.2.3. C|c h{m xử lý chuỗi (tt)  InStr ([start,] string1, string2 [, compare]): Tìm chuỗi con trong chuỗi gốc. Nếu h{m InStr trả về 0, nghĩa l{ không tìm thấy.  Trong đó: Start: vị trí bắt đầu tìm. (null: Từ đầu chuỗi) String1: chuỗi gốc, String2: chuỗi so s|nh. Compare: kiểu so s|nh (vbTextCompare, vbBinaryCompare).  Ví dụ: Dim KeyValuePair As String, Key As String Dim Value As String KeyValuePair = "BeatlesSong=Yesterday" Pos = Instr(KeyValuePair, "=") Key = Left(KeyValuePair, Pos-1) Value = Mid(KeyValuePair, Pos+1) PNH-HUT149 5.2.3. C|c h{m xử lý chuỗi (tt)  Replace(Expression, find, replace[, start[, count[, compare]]]) : Tìm v{ thay thế chuỗi  Trong đó: • Expression: Biểu thức chuỗi chứa chuỗi cần thay thế. • find:Chuỗi cần tìm. • replace: Chuỗi thay thế chuỗi tìm được. • start: vị trí bắt đầu tìm. • count: X|c định số lần thay thế. Mặc định l{ 1. • compare: kiểu so s|nh. PNH-HUT150 Replace – Ví dụ Dim AnyString, MyStr AnyString = "Hello World" 'Khoi tao MyStr = Replace(AnyString, "Hel", "AAAAA", 1, -1, vbTextCompare) 'Returns "AAAAAlo World" MyStr = Replace(AnyString, "Wor", "BBB", 1, -1, vbTextCompare) 'Returns "Hello BBBld" PNH-HUT151 5.2.3. C|c h{m xử lý chuỗi (tt)  LTrim (string) và RTrim(string): cắt tất cả c|c khoảng trắng bên tr|i (bên phải của chuỗi) .  Ucase(string): đổi chuỗi sang chuỗi gồm c|c ký tự l{ chữ hoa.  Asc: cho m~ Ascii của một ký tự.  Chr: trả về ký tự ứng với m~ Ascii được chỉ định.  Ví dụ: Dim ASCIINumberA As Integer, CharB As String * 1 Dim StrFive As String * 1 ASCIINumberA = Asc("A") ' ASCIINumberA = 65 CharB = Chr(66) StrFive = Chr(Asc("0") + 5) ' ta có digit "5" PNH-HUT152 9/14/2011 39 5.2.3. C|c h{m xử lý chuỗi (tt)  InstrRev: tương tự như InStr nhưng việc tìm kiếm được tiến h{nh từ phải sang.  Val: H{m đổi chuỗi sang số.  Str: H{m đổi số sang chuỗi. PNH-HUT153 5.2.4. H{m với tập tin, thư mục 1. ChDrive Dùng để đổi ổ đĩa l{m việc Cú ph|p : ChDrive 2. MkDir Dùng để tạo một thư mục mới trên đĩa Cú Ph|p : MkDir Ví dụ : MkDir “D:\Caulacbovb” 3. ChDir Lệnh n{y dùng để thay đổi thư mục l{m việc tại ổ đĩa đang l{m việc Cú ph|p : ChDir PNH-HUT154 5.2.4. H{m với thư mục, ổ đĩa 4. RmDir Dùng để xóa 1 thư mục rỗng. Cú ph|p : RmDir 5. KILL Xóa 1 hay nhiều tập tin trên đĩa Cú ph|p : KILL Ví dụ : Kill “D:\vinhphuoc.txt” Kill “D:\*.txt” PNH-HUT155 5.2.4. H{m với thư mục, ổ đĩa 6. Name Dùng để đổi tên tập tin Cú pháp : Name AS Ví dụ : Name “C:\Phuoc.txt” AS “C:\VINHPHUOC91.txt” PNH-HUT156 9/14/2011 40 5.2.5. Các hàm khác 1. Hàm Format (Value, format) H{m n{y dùng để định dạng theo ý muốn Value : Gi| trị cần định dạng Format : C|c kí hiệu định dạng. 0 nếu có gi| trị thì thể hiện gi| trị đó, nếu không có thì ghi số 0. Nêu số 0 ít hơn thì gi| trị vẫn được ghi đầy đủ # : Thể hiện c|c gi| trị tương ứng, nếu kí tự số ở vị trí đó không có thì bỏ qua, nếu # ít hơn thì gi| trị vẫn được ghi đầy đủ. $ : Dấu $ bạn có thể dùng chung với số 0 hay # . : Dấu ngăn c|ch phần thập ph}n , : Dấu ngăn c|ch phần nghìn % : Khi có kí hiệu phần trăm n{y trong đối số Format, con số sẽ tự thêm % v{o sau PNH-HUT157 5.2.4. Các hàm khác Hàm Format (Value, format) (tiếp) dd/mm/yyyy : Định dạng Ng{y Th|ng Năm, với đối số Value = Now hh:mm:ss AM/PM : Định dạng Giờ phút gi}y theo dạng, với đối số Value = Now hh:mm:ss AM/PM dd/mm/yyyy : Định dạng Giờ phút gi}y vừa định dạng ng{y th|ng năm theo dạng, với đối số Value = Now hh:mm : Định dạng chỉ có giờ v{ phút với Value=Now. Ví dụ : Format(12345.5 , “0000000.00”) = “012345.50” Format(12345.5, “######.##”) = “12345.5” Format(12345.5, “$###.##”) = “$12345.5” Format(0.34, “###%”) = “34%” PNH-HUT158 5.2.4. Các hàm khác 2. H{m IIF(, Truepart, Falsepart) H{m n{y sẽ trả về gi| trị truepart nếu điều kiện đúng v{ cho Falsepart khi điều kiện sai H{m n{y l{ c|ch viết ngắn gọn của IFEND IF Ví dụ txt1.text = IIF(x<5000000,”Lương bạn còn thấp”,”Bạn đ~ có lương cao”) PNH-HUT159 Chương 6 Thủ tục v{ h{m PNH-HUT160 9/14/2011 41 Nội dung 6.1. Kh|i niệm 6.2. Thủ tục 6.3. Hàm 6.4. Truy xuất dữ liệu trong VB PNH-HUT161 6.1. Kh|i niệm Chương trình con:  Ph}n chia chương trình lớn th{nh c|c chương trình con, mỗi chương trình con giải quyết công việc n{o đó.  Đoạn chương trình được sử dụng nhiều lần.  Kiểm tra tính đúng đắn trước khi đặt v{o chương trình lớn, dễ hiệu chỉnh sai sót. Trong Visual Basic, chương trình con có hai dạng l{ h{m (Function) v{ thủ tục (Sub):  Thủ tục: không trả về gi| trị.  Hàm: trả về cho lệnh gọi một gi| trị thông qua tên của nó. PNH-HUT162 6.2. Thủ tục - Sub Kh|i niệm:  Thủ tục l{ một chương trình con thực hiện một hay một số t|c vụ n{o đó.  Thủ tục có thể có hay không có tham số. Khai b|o thủ tục:  [Private | Public] [Static] Sub [(<tham số>[As ])] hay End Sub  [As ]: có hoặc không. Nếu có nhiều tham số thì mỗi tham số ph}n c|ch nhau dấu phẩy. Nếu không x|c định kiểu tham số thì tham số có kiểu Variant. PNH-HUT163 6.2. Thủ tục - Sub Gọi thủ tục: có 2 c|ch  []  Call ([]) Ví dụ:  Sub KTraNgTo(N As Integer) ‘C|c lệnh End Sub Gọi: KTraNgTo 57 KTraNgTo Val(txtNum.Text) Call KtraNgTo(Val(txtNum.Text)) PNH-HUT164 9/14/2011 42 Ví dụ thủ tục PNH-HUT165 6.3. Hàm - Function Kh|i niệm:  H{m (Function) l{ một chương trình con có nhiệm vụ tính to|n v{ cho ta một kết quả. Kết quả n{y được trả về trong tên h{m cho lời gọi nó. Khai báo:  [Private | Public | Static] Function [([As ])] [As <KIỂU DỮ LIỆU>] hay = End Function PNH-HUT166 6.3. Hàm - Function Khai b|o (tiếp):  [As ]: có thể có hoặc không. Nếu có nhiều tham số thì mỗi tham số ph}n c|ch nhau dấu phẩy. Nếu không x|c định kiểu tham số thì tham số có kiểu Variant.  AS : kiểu dữ liệu kết quả trả về của h{m. Trong trường hợp không khai b|o As , mặc định, VB hiểu kiểu trả về là kiểu Variant. PNH-HUT167 Ví dụ h{m PNH-HUT168 9/14/2011 43 6.3. Hàm - Function Cú ph|p gọi h{m thực thi: ketquatrave = [(tham số)] Ví dụ: Function Giaithua(N As Integer) As Long Dim kq As Long ‘C|c lệnh Giaithua=kq End Function Gọi: a = Giaithua(n) PNH-HUT169 6.4. Truy xuất dữ liệu trong VB Tổ chức c|c module chương trình Biến to{n cục Biến cục bộ Biến module Truyền tham số cho chương trình con PNH-HUT170 6.4.1. Tổ chức c|c module Module:  Ứng dụng đơn giản: có 1 biểu mẫu, tất cả lệnh viết trong cửa sổ m~ lệnh của biểu mẫu đó, chỉ có một module m~ lệnh (Form Module).  Ứng dụng phức tạp: nhiều biểu mẫu, nhiều Module m~ lệnh, cần được tổ chức riêng rẽ.  VB tổ chức 3 loại module: • Module biểu mẫu (Form Module) • Module chuẩn (Standard Module) • Module lớp (Class Module) PNH-HUT171 6.4.1. Tổ chức c|c module (tiếp) Module biểu mẫu (Form module):  Đi kèm với 1 biểu mẫu, chứa m~ lệnh của biểu mẫu đó.  Chứa chương trình con của c|c điều khiển trên biểu mẫu. Được thực thi để đ|p ứng c|c sự kiện t|c động trên điều khiển.  Lưu dưới dạng tập tin có đuôi *.frm. Module chuẩn (Standard Module):  Chứa m~ lệnh không thuộc về biểu mẫu hoặc điều khiển nào.  Thường chứa c|c chương trình con dùng chung  Lưu dưới tập tin có đuôi *.bas. PNH-HUT172 9/14/2011 44 6.4.1. Tổ chức c|c module (tiếp) Module lớp (Class Module):  Tạo c|c điều khiển được gọi thực thi trong ứng dụng cụ thể.  Chứa cả m~ lệnh v{ dữ liệu.  Lưu dưới tập tin đuôi mở rộng *.cls. Phạm vi (scope):  X|c định số lượng chương trình có thể truy xuất một biến. Một biến sẽ thuộc một trong 3 loại phạm vi: • Phạm vi biến cục bộ. • Phạm vi biến module. • Phạm vi biến to{n cục. PNH-HUT173 6.4.2. Biến to{n cục Kh|i niệm:  L{ biến có phạm vi hoạt động trong to{n bộ ứng dụng. Khai báo:  Global [As ] PNH-HUT174 6.4.3. Biến cục bộ Kh|i niệm:  L{ biến chỉ có t|c dụng trong những chương trình con m{ chúng được định nghĩa. Khai báo:  Dim [As ]  Biến cục bộ định nghĩa bằng từ khóa Dim sẽ được giải phóng ngay khi chương trình con được thực thi. PNH-HUT175 6.4.4. Biến Module Kh|i niệm:  Được định nghĩa trong phần khai b|o module (General|Declaration).  Mặc định có phạm vi hoạt động trong to{n bộ module ấy. Khai báo:  Dùng từ khóa Dim hay Private đặt trong module ấy.  Ví dụ: Private Num As Integer  Có thể dùng bởi c|c chương trình con viết trong module kh|c. Dùng từ khóa Public trong phần khai b|o (General|Declaration).  Ví dụ: Public Num As Integer PNH-HUT176 9/14/2011 45 6.4.5. Truyền tham số cho CTC Kh|i niệm:  Tham số được truyền khi gọi chương trình con.  Có hai c|ch để truyền tham số cho chương trình con: Truyền bằng gi| trị & truyền bằng địa chỉ. Truyền tham số bằng gi| trị:  Dùng từ khóa ByVal  Tạo ra bản sao của biến mỗi khi truyền 1 tham số.  Chương trình con chỉ t|c động lên bản sao đó. PNH-HUT177 6.4.5. Truyền tham số cho CTC Ví dụ: Sub Twice (ByVal Num As Integer) Num = Num * 2 Print Num End Sub Private Sub Form_Click() Dim A As Integer A = 4 Print A ‘A trước khi truyền Twice A Print A ‘A sau khi truyền End Sub PNH-HUT178  Kết quả: 4 8 4 6.4.5. Truyền tham số cho CTC Truyền tham số bằng địa chỉ:  Cho phép chương trình con truy cập v{o gi| trị gốc của biến trong bộ nhớ. Chương trình con có thể l{m thay đổi gi| trị biến.  Mặc định truyền theo địa chỉ, có thể viết tường mình dùng từ khóa ByRef PNH-HUT179 6.4.5. Truyền tham số cho CTC Ví dụ: Sub Twice (ByRef Num As Integer) Num = Num * 2 Print Num End Sub Private Sub Form_Click() Dim A As Integer A = 4 Print A Twice A Print A End Sub PNH-HUT180  Kết quả: 4 8 8 9/14/2011 46 Chương 7 C|c điều khiển hình ảnh, Timer, duyệt file, thư mục PNH-HUT181 Nội dung 7.1. Ph}n loại điều khiển 7.2. Picture Box 7.3. Image 7.4. Timer 7.5. DriveListBox, DirListBox, FileListBox PNH-HUT182 7.1. Ph}n loại điều khiển Có 3 nhóm điều khiển:  C|c điều khiển nội tại (Intrinsic control): Có sẵn trong hộp công cụ (nh~n, khung, nút lệnh, khung ảnh, ).  C|c điều khiển ActiveX tồn tại trong c|c tập tin độc lập (.OCX) (do Microsoft cung cấp), có thể do h~ng thứ 3 cung cấp.  C|c đối tượng chèn được (Insertable Object): Ví dụ Microsoft Equation 3.0 hoặc bảng tính (Worksheet) của Microsoft Excel... PNH-HUT183 7.1. Ph}n loại điều khiển PNH-HUT184 Điều khiển Active Đối tượng chèn được Mở: Project/Components 9/14/2011 47 7.2. Picture Box Sử dụng hiện hình ảnh trên biểu mẫu. Biểu tượng: Thuộc tính:  Name: định danh của đối tượng  Picture: X|c định ảnh sẽ hiện (tên tập tin + đường dẫn) - Có thể đặt sẵn khi thiết kế. - Để hiển thị ảnh tại thời điểm thực thi dùng phương thức LoadPicture.Ví dụ: picMain.Picture = LoadPicture("NEW.JPG")  Autosize: =True, Picture Box tự động thay đổi kích thước cho phù hợp với ảnh. PNH-HUT185 7.2. Picture Box C|c sự kiện:  Click, DblClick  MouseDown, MouseUp, MouseMove  Resize  v.v PNH-HUT186 7.3. Image Sử dụng hiển thị hình ảnh (Icon,metafile, jpeg, gif). Nạp ảnh nhanh hơn, tốn ít t{i nguyên hệ thống hơn Picture Box. Biểu tượng: Thuộc tính:  Name, Picture, (tương tự Picture Box)  Stretch: tự động co giản ảnh cho vừa với vùng chứa Không có autoresize như Picture Box PNH-HUT187 7.3. Image Sự kiện:  Click, DblClick  MouseDown, MouseUp, MouseMove Để nạp ảnh tại thời điểm thực thi, dùng phương thức LoadPicture(fileanh) PNH-HUT188 9/14/2011 48 7.4. Timer Điều khiển bộ định thời:  Lập trình thực hiện công việc n{o đó sau một khoảng thời gian (định thời). Độc lập với người sử dụng.  Khi chạy, điều khiển Timer chỉ quan s|t được khi thiết kế, khi chạy không có thể hiện trên biểu mẫu. Biểu tượng: Thuộc tính:  Name: định danh của điều khiển  Interval: Qu~ng thời gian định thời (ms). Khoảng thời gian giữa 2 sự kiện liên tiếp. (0 64767)  Ví dụ: 500 = 0.5s, 1000 = 1s  Enabled: True – Kích hoạt v{ ngược lại. PNH-HUT189 7.4. Timer (tiếp) Sự kiện:  Timer: xảy ra mỗi khi đến thời gian một sự kiện được thực hiện (x|c định trong thuộc tính Interval). PNH-HUT190 7.4. Timer (tiếp) Sử dụng điều khiển Timer:  Khởi tạo một điều khiển Timer: • Đặt thuộc tính Enable = TRUE để kích hoạt Timer hoạt động ngay khi biểu mẫu chứa nó được nạp. • Hoặc dùng sự kiện n{o đó từ bên ngo{i để kích hoạt. Ví dụ Click chuột nút lệnh, v.v Gọi .Enable = TRUE  Lập trình đ|p ứng sự kiện trả về từ điều khiển Timer: • Viết mã lệnh của công việc cần thực hiện v{o trong sự kiện Timer của điều khiển Timer. PNH-HUT191 7.4. Timer (tiếp) Ví dụ: Đồng hồ số (đặt Interval = 500) 500ms = 0.5s Private Sub TimeDongHo_Timer() lblDongHo.Caption = Format(Now, "hh:mm:ss AM/PM") 'hien thi gio cua he thong End Sub End Sub Hoặc: Private Sub Timer1_Timer() If Label1.Caption CStr(Time) Then Label1.Caption = Time End If End Sub PNH-HUT192 9/14/2011 49 7.4. Timer (tiếp) Điều khiển Timer còn hữu ích trong việc tính to|n thời gian cho một công việc n{o đó, đến một thời điểm n{o đó thì ta sẽ khởi tạo một công việc mới hoặc ngưng một công việc không còn cần nữa. Để tính thời gian có thể dùng biến đếm trong sự kiện Timer  Ví dụ: Đặt Interval = 1000 (=1s)  Dim count as Integer Count = 0 Private Sub Timer1_Timer() count = count + 1 End Sub PNH-HUT193 7.5. DriveListBox, DirListBox, FileListBox DriveListBox – Điều khiển danh s|ch ổ đĩa:  Trình b{y những ổ đĩa của hệ thống, cho phép chọn ổ đĩa.  Biểu tượng shortcut trên toolbox: PNH-HUT194 7.5. DriveListBox, DirListBox, FileListBox DriveListBox – Điều khiển danh s|ch ổ đĩa (tiếp): Thuộc tính Drive: Chỉ ra tên ổ đĩa sẽ hiện.  Gi| trị mặc định l{ ổ đĩa chứa ứng dụng.  Hoặc có thể thiết lập bằng c|ch g|n gi| trị tên ổ đĩa cho thuộc tính n{y lúc thực hiện chương trình. Ví dụ: Drive1.Drive = “C:\” Chú ý tên ổ đĩa phải tồn tại. PNH-HUT195 7.5. DriveListBox, DirListBox, FileListBox DriveListBox – Điều khiển danh s|ch ổ đĩa (tiếp): Phương thức: Change: Xảy ra khi người sử dụng lựa chọn ổ đĩa (giống Combo box) Private Sub Drive1_Change() ‘M~ lệnh thực hiện công việc khi xảy ra sự kiện chọn ổ đĩa End Sub PNH-HUT196 9/14/2011 50 7.5. DriveListBox, DirListBox, FileListBox DirListBox – Điều khiển danh s|ch thư mục:  Trình b{y những thư mục v{ đường dẫn tại thời điểm chạy ứng dụng, danh s|ch có thứ bậc của c|c thư mục.  Có thể mở t{i liệu từ danh s|ch c|c t{i liệu đ~ sẵn có.  Biểu tượng shortcut: PNH-HUT197 7.5. DriveListBox, DirListBox, FileListBox DirListBox – Điều khiển danh s|ch thư mục (tiếp): Thuộc tính:  Path: Đường dẫn thư mục hiện h{nh chứa danh s|ch c|c thư mục con sẽ hiện  Ví dụ: Dir1.Path = “E:\” ‘Hiện c|c thư mục trong ổ E Phương thức:  Change: Xảy ra khi có thay đổi (lựa chọn thư mục trong danh s|ch c|c thư mục) (giống ListBox). PNH-HUT198 7.5. DriveListBox, DirListBox, FileListBox DirListBox – Điều khiển danh s|ch thư mục (tiếp): Ví dụ: Private Sub Dir1_Change() ‘M~ lệnh thực hiện khi xảy ra lựa chọn trong danh s|ch thư mục End Sub PNH-HUT199 7.5. DriveListBox, DirListBox, FileListBox FileListBox – Điều khiển danh s|ch tệp tin:  Trình b{y những t{i liệu có sẵn trong thư mục hiện hành.  Biểu tượng shortcut: PNH-HUT200 9/14/2011 51 7.5. DriveListBox, DirListBox, FileListBox FileListBox – Điều khiển danh s|ch tệp tin (tiếp):  Thuộc tính Path: Thư mục hiện h{nh chứa danh s|ch c|c tệp tin sẽ hiện  Thuộc tính FileName: Chứa danh s|ch tên c|c tệp tin sẽ hiện. PNH-HUT201 7.5. DriveListBox, DirListBox, FileListBox FileListBox – Điều khiển danh s|ch tệp tin (tiếp):  Thuộc tính Parttern x|c định kiểu tập tin hiện trong danh sách.  Ví dụ: “*.*” bao gồm tất cả c|c tập tin “*.doc” chỉ lấy c|c tập tin văn bản .doc Có thể đặt khi thiết kế (c|ch nhau ; nếu có nhiều kiểu) Có thể đặt khi lập trình: File1.Pattern = "*.gif;*.jpg;*.png;*.bmp;*.ico" PNH-HUT202 7.5. DriveListBox, DirListBox, FileListBox FileListBox – Điều khiển danh s|ch tệp tin (tiếp):  Phương thức Click, DblClick: Xảy ra khi người sử dụng click, dblClick chuột v{o một file  Viết m~ lệnh xử lý (mở ảnh, chơi file nhạc, v.v) Private Sub File1_Click() ‘M~ lệnh End Sub PNH-HUT203 7.5. DriveListBox, DirListBox, FileListBox Thông thường sử dụng phối hợp cả 3 loại điều khiển n{y. Khi ta thay đổi ổ đĩa thì c|c thư mục sẽ thay đổi theo đó l{ những thư mục ở ổ đĩa hiện h{nh, sự thay đổi cũng diễn ra tương tự đối với danh s|ch c|c tập tin. Đối với ổ đĩa mềm v{ CD thì cần thiết phải có đĩa mềm hoặc CD tại thời điểm chọn (nếu không sẽ g}y lỗi) PNH-HUT204 9/14/2011 52 7.5. DriveListBox, DirListBox, FileListBox Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.FileName= Dir1.Path End Sub PNH-HUT205 7.5. DriveListBox, DirListBox, FileListBox  Ví dụ tổng hợp: Ứng dụng xem ảnh(thực h{nh) PNH-HUT206 B{i thực h{nh Picture Viewer Bước 1:  Dùng DriveListBox, DirListBox, FileListBox để tạo một panel duyệt c|c tập tin ảnh (.jpg, .jpeg, .bmp, .icon, .png, .gif, .)  Cần phối hợp 3 điều khiển n{y. Khi chọn ổ đĩa sẽ hiện c|c thư mục trong ổ đĩa, khi chọn thư mục sẽ hiện c|c file ảnh có trong thư mục  Dùng thuộc tính Pattern để lọc c|c kiểu file ảnh nói trên. PNH-HUT207 B{i thực h{nh Picture Viewer Bước 2:  Dùng một Picture Box (Hoặc Image) để load ảnh khi chọn file ảnh tương ứng (trong FileListBox). Xảy ra khi click v{o tên file ảnh  Sự kiện File1_Click()  H{m load ảnh: picViewer.Picture = LoadPicture(“fileanh”) “fileanh” l{ x}u chứa cả đường dẫn tuyệt đối ( = DirPath & “\” & filename) Duyệt c|c file ảnh: File1.List(i) PNH-HUT208 9/14/2011 53 B{i thực h{nh Picture Viewer Bước 3:  Xử lý c|c nút duyệt: next, previous, zoom, slideshow PNH-HUT209 Nút slideshow Private Sub cmdSlideShow_Click()  bSlide = Not (bSlide)  If bSlide Then  TimerSlideShow.Enabled = True  cmdSlideShow.Caption = "Stop Slide"  Else  TimerSlideShow.Enabled = False  cmdSlideShow.Caption = "Slide Show"  End If End Sub PNH-HUT210 Caption chuyển động lblTenCT.Caption = Right(lblTenCT.Caption,Len(lblTenCT.Capti on) - 1) & Left(lblTenCT.Caption, 1) PNH-HUT211 Chương 8 Sử dụng menu v{ hộp thoại PNH-HUT212 9/14/2011 54 Nội dung 8.1. Sử dụng menu 8.2. Sử dụng hộp thoại PNH-HUT213 8.1. Menu Kh|i niệm:  Menu l{ một loại điều khiển cho phép lựa chọn c|c mục từ một danh s|ch cho trước.  Có 2 loại menu: - Menu thả xuống (Drop-Down Menu): thông dụng nhất. - Menu bật ra (Pop-Up Menu): hiện khi ấn nút phải chuột.  Ví dụ: PNH-HUT214 8.1. Menu C|ch tạo menu: Mở Menu Editor PNH-HUT215 8.1. Menu C|ch tạo menu:  Thiết kế menu bằng Menu Editor (trong Tools)  Lập trình quản lý việc điều h{nh c|c sự kiện (click chuột khi chọn mục menu) PNH-HUT216 9/14/2011 55 8.1. Menu C|c thuộc tính:  Chứa trong Menu Editor (Tools)  Caption: Chuỗi hiển thị trên Menu  Name: Th{nh phần của menu để lựa chọn. Phải duy nhất v{ dễ nhớ.  Shortcut: Dùng thiết lập phím tắt (Ctrl + S)  WindowList: Dùng trong ứng dụng MDI, cho phép hiển thị tiêu đề của c|c biểu mẫu con trong menu.  Checked: Tạo nút đ|nh dấu bên tr|i menu (không |p dụng cho menu có menu con).  Enabled: Cho phép hoặc không cho phép chọn.  Visible: Hiện hoặc ẩn mục chọn. Sự kiện: Click khi nhấp chuột v{o mục trong menu PNH-HUT217 8.1. Menu Sử dụng Menu Editor: PNH-HUT218 8.1. Menu Sử dụng Menu Editor: Các MenuItems của Menu Command File đều nằm thụt qua bên phải với bốn dấu chấm (....) ở phía trước. Khi ta click dấu tên chỉ qua phải thì MenuItem ta đang Edit sẽ có thêm bốn dấu chấm, tức l{ thụt một bậc trong Menu (Nested – menu con). Tương tự như vậy, khi ta click dấu tên chỉ qua tr|i thì MenuItem ta đang Edit sẽ mất bốn dấu chấm, tức l{ trồi một bậc trong Menu. PNH-HUT219 8.1. Menu Sử dụng Menu Editor: Click Insert, hoặc dòng trắng để chèn thêm một menu mới Click mũi tên lên hoặc xuống để sắp đặt thứ tự c|c mục menu. Nếu muốn cho User dùng Alt key để sử dụng Menu, đ|nh thêm dấu & trước ký tự muốn trong menu Caption. Thí dụ Alt-F sẽ thả xuống Menu của Menu Command File. PNH-HUT220 9/14/2011 56 8.1. Menu Sử dụng Menu Editor: Nếu đặt cho MenuItem &Open tên mnuOpen, thì khi Click lên Caption nó trên Form trong lúc thiết kế, VB6 IDE sẽ hiển thị c|i vỏ của Sub mnuOpen_Click(), giống như Sub cmdButton_Click() của một CommandButton: PNH-HUT221 8.1. Menu Sử dụng Menu Editor: C|i gạch ngang giữa MenuItems Close v{ Exit được gọi l{ Menu Separator. Có thể tạo một Menu Separator bằng c|ch cho Caption nó bằng dấu trừ ( - ). PNH-HUT222 8.1. Menu Sử dụng Menu Editor: Có thể dùng Short Key để tạo phím tắt cho một mục menu (ở mức con) PNH-HUT223 8.1. Menu Sử dụng Menu Editor:  Mặc định, c|c menuItem được Enabled v{ Visible. Lúc thiết kế có thể cho MenuItem gi| trị khởi đầu của Enabled v{ Visible bằng c|ch dùng Check boxes Enabled và Visible.  Trong khi chạy program (at runtime), cũng có thể thay đổi c|c values Enabled v{ Visible như sau: mnuSave.Enabled = False mnuOpen.Visible = False  Khi một MenuItem có Enabled=False thì nó bị mờ v{ user không dùng được. PNH-HUT224 9/14/2011 57 8.1. Menu Sử dụng Menu Editor:  Dùng c|c dấu mũi tên chỉ lên v{ xuống để di chuyển MenuItem đã được chọn lên v{ xuống  Trong danh sách các MenuItems. Dùng button Delete để hủy bỏ MenuItem đã được selected,  Insert để nhét một MenuItem mới ngay trên MenuItem đã được selected v{ Next để chọn MenuItem ngay dưới MenuItem đã được selected. PNH-HUT225 8.1. Menu – Popup menu Menu |p dụng cho đúng tình huống (Context menu) bằng một Mouse click (thường l{ chuột phải). Pop-Up menu thật ra l{ Drop-down menu của một Menu Bar Command. Bình thường Menu Bar Command ấy có thể visible hay invisible (t{ng hình). PNH-HUT226 8.1. Menu – Popup menu PNH-HUT227 8.1. Menu – Popup menu Code l{m cho Popup menu hiện lên được viết trong Event Mousedown của một Object. Ví dụ của sự kiện chuột phải lên Form: PNH-HUT228 9/14/2011 58 8.2. Hộp thoại Hộp thoại (Dialog Box): L{ một trong những c|ch thức VB giao tiếp với người dùng. Có 4 loại hộp thoại:  Hộp thông điệp (Message Box)  Hộp nhập (Input Box)  C|c hộp thoại thông dụng (Common Dialog)  Hộp thoại hiệu chỉnh (Custom Dialog) Hộp thông điệp: Có 2 loại  Loại chỉ xuất thông b|o  Loại có tương t|c với người dùng (Nút phản hồi) PNH-HUT229 8.2.1. Hộp thông điệp Message Box PNH-HUT230 8.2.1. Hộp thông điệp – loại 1 Loại chỉ xuất thông b|o, dùng MsgBox như một thủ tục. Cú pháp: MsgBox Prompt, Button, Title. Trong đó:  Prompt: Chuỗi thông b|o sẽ hiển thị.  Button: C|c nút nhấn sẽ được hiển thị trên hộp thông báo.  Title: Chuỗi hiển thị trên thanh tiêu đề của hộp thông báo. PNH-HUT231 8.2.1. Hộp thông điệp – loại 1 Loại chỉ xuất thông b|o, dùng MsgBox như một thủ tục. Ví dụ: PNH-HUT232 9/14/2011 59 8.2.1. Hộp thông điệp – loại 1 Tùy theo tham số (button) truyền v{o MsgBox, sẽ xuất hiện hộp thoại với những kiểu nút kh|c nhau. Constant của c|c icons ta có thể dùng l{ vbCritical, vbQuestion, vbExclamation và vbInformation. PNH-HUT233 Hằng số Giá trị Ý nghĩa vbOKOnly 0 Chỉ hiện nút OK vbOKCancel 1 Hiện 2 nút OK và Cancel vbAbortRetryIgnore 2 Hiện 3 nút Abort, Retry và Ignore vbYesNoCancel 3 Hiện 3 nút Yes, No, Cancel vbYesNo 4 Hiện 2 nút Yes, No vbRetryCancel 5 Hiện 2 nút Retry, Cancel 8.2.1. Hộp thông điệp – loại 2 Loại tương t|c với người dùng, dùng MsgBox như một h{m, khi nút n{o đó trên hộp thông b|o được ấn, sẽ trả về gi| trị tương ứng. Cú pháp: MsgBox (Prompt, Button, Title) As Integer PNH-HUT234 Hằng số Giá trị Nút vbOK 1 OK vbCancel 2 Cancel vbAbort 3 Abort vbRetry 4 Retry vbIgnore 5 Ignore vbYes 6 Yes vbNo 7 No 8.2.1. Hộp thông điệp – loại 2 Ví dụ: PNH-HUT235 8.2.1. Hộp thông điệp Có thể hiển thị Text message trong Message Box th{nh nhiều dòng bằng c|ch dùng Constant vbCrLf (CarriageReturn v{ LineFeed) để đ|nh dấu những chỗ ngắt khúc như sau: PNH-HUT236 9/14/2011 60 8.2.2. C|c hộp thoại thông dụng Có 6 loại hộp thoại thông dụng (Common dialog)  Mở tập tin (Open)  Lưu tập tin (Save)  Chọn mầu (Color)  Chọn font (Font)  In ấn (Print)  Trợ giúp (Help) Khi thiết kế chỉ có một công cụ duy nhất (CommonDialog). PNH-HUT237 8.2.2. C|c hộp thoại thông dụng Mở Project/Components/Controls/Microsoft Common Dialog Control 6.0 để đưa công cụ n{y vào toolbox. PNH-HUT238 8.2.2. C|c hộp thoại thông dụng Có 6 dạng Common Dialog, tùy từng Method để qui định gọi loại n{o. PNH-HUT239 Common Dialog Properties PNH-HUT240 9/14/2011 61 Hộp thoại mở v{ lưu tập tin Hai hộp thoại n{y có chức năng v{ thể hiện như nhau. Đều hiển thị danh s|ch c|c tập tin, có thể duyệt qua c|c ổ đĩa để tìm tập tin. Chỉ kh|c nhau phần tiêu đề v{ nút ấn C|c thuộc tính quan trọng:  Name: tên của common dialog  Filter: Chuỗi x|c định phần mở rộng của tên tập tin m{ hộp thoại có thể mở hay lưu  FilterIndex: X|c định mặc định loại tập tin n{o được chọn (dùng một số nguyên) nếu có nhiều loại phần mở rộng của tệp tin được mô tả trong Filter. PNH-HUT241 Hộp thoại mở v{ lưu tập tin C|c thuộc tính quan trọng (tiếp):  FileName: Trả về tên tập tin sau khi lựa chọn một tệp tin n{o đó  CancelError: Nếu True thì trả về lỗi khi chọn Cancel. (Mặc định l{ False). Phương thức  ShowOpen: Mở hộp thoại mở tập tin  ShowSave: Mở hộp loại lưu tập tin PNH-HUT242 Hộp thoại mở v{ lưu tập tin Thiết lập thuộc tính khi thiết kế (mở properties của common dialog) PNH-HUT243 Hộp thoại mở v{ lưu tập tin Thuộc tính Filter lọc tập tin: Có thể đặt khi thiết kế, hoặc viết lệnh Ví dụ: PNH-HUT244 9/14/2011 62 PNH-HUT245 Hộp thoại mở v{ lưu tập tin Ví dụ: (thực h{nh) PNH-HUT246 Hộp thoại mở v{ lưu tập tin Ví dụ: (thực h{nh) PNH-HUT247 Hộp thoại chọn m{u Hiện thị bảng m{u có sẵn của Windows, cho phép chọn m{u hoặc thiết lập thêm m{u mới. Dùng phương thức ShowColor để hiển thị hộp thoại chọn m{u. Thuộc tính Color trả về m{u được chọn. PNH-HUT248 9/14/2011 63 Hộp thoại chọn m{u Trong một số ứng dụng, ta sẽ dùng hộp thoại chọn m{u để thay đổi gi| trị m{u của c|c điều khiển trong một số trường hợp n{o đó. Ví dụ (thực h{nh) PNH-HUT249 Hộp thoại chọn m{u  txtEdit.SelColor = CommonDialog1.Color PNH-HUT250 Hộp thoại chọn font chữ Cho phép người dùng chọn font m{n hình, m|y in, hoặc cả 2. Mở hộp thoại chọn Font bằng phương thức ShowFont Thuộc tính Flags qui định loại font n{o sẽ được hiển thị. PNH-HUT251 Hộp thoại chọn font chữ C|c thuộc tính: PNH-HUT252 Thuộc tính Giải thích Color Lưu giữ giá trị của màu chữ được chọn FontBold True nếu chọn chữ đậm (Bold), False nếu ngược lại FontItalic True nếu chọn chữ nghiêng, False nếu ngược lại FontStrikeThru True nếu chọn chế độ gạch ngang ký tự FontUnderLine True nếu chọn chế độ gạch chân ký tự FontName Tên font chữ Max Kích thước lớn nhất của Font được hiển thị Min Kích thước nhỏ nhất của Font được hiển thị FontSize Kích thước của Font được chọn 9/14/2011 64 Hộp thoại chọn font chữ C|c gi| trị của thuộc tính Flags: Nếu muốn chọn m{u, thêm 256 v{o gi| trị thuộc tính Flags. Ví dụ chọn Font: (thực h{nh) PNH-HUT253 Hằng Giá trị Hiệu quả cdlCFPrinterFonts &H2 Chỉ hiển thị Font máy in cdlCFScreenFonts &H1 Chỉ hiển thị Font màn hình cdlCFBoth &H3 Hiển thị cả Font màn hình và máy in cdlCFScalableOnly &H20000 Hiển thị Font tỷ lệ như là Font True Type Hộp thoại chọn font chữ PNH-HUT254 Hộp thoại chọn font chữ PNH-HUT255 Hộp thoại in ấn Cho phép x|c lập thông tin về m|y in khi tiến h{nh in ấn. Sử dụng phương thức ShowPrinter để mở hộp thoại in ấn. PNH-HUT256 9/14/2011 65 Hộp thoại in ấn C|c thuộc tính: Ví dụ hộp thoại in ấn (thực h{nh) PNH-HUT257 Thuộc tính Ý nghĩa Copies Số bản in FromPage Số thứ tự của trang bắt đầu in Max Số bản in tối đa cho phép Min Số bản in tối thiểu cho phép PrinterDefault Nếu = True, các thiết lập sẽ ảnh hưởng đến các ứng dụng khác có sử dụng máy in. ToPage Số thứ tự trang in cuối cùng Hộp thoại in ấn PNH-HUT258 Hộp thoại in ấn PNH-HUT259 Hộp thoại trợ giúp Ta dùng method ShowHelp để hiển thị c|c thông tin giúp đỡ, phải cho CommonDialog ít nhất trị số của c|c properties HelpFile v{ HelpCommand PNH-HUT260 9/14/2011 66 B{i thực h{nh tổng hợp Sử dụng menu v{ hộp thoại (Ứng dụng trình soạn thảo văn bản đơn giản) PNH-HUT261 B{i thực h{nh tổng hợp Sử dụng menu v{ hộp thoại PNH-HUT262 B{i thực h{nh tổng hợp Sử dụng menu v{ hộp thoại PNH-HUT263 Ghi/Đọc dữ liệu trên file  Filename l{ tên tập tin (lưu/mở) lấy từ commondlg.FileName  Ghi:  Open filename For Output As #1  Print #1, txtEdit.Text  Close #1  Đọc:  Dim s as string  Open filename For Input As #1  Do While Not (EOF(1)) Line Input #1, s txtEdit.Text = txtEdit.Text & s & vbCrLf  Loop  Close #1 PNH-HUT264 9/14/2011 67 Resize điều khiển RTB Khi Form chứa txtEdit thay đổi kích thước (resize) xảy ra sự kiện Form_Resize. Đặt lại kích thước điều khiển txtEdit bằng kích thước form txtEdit.Width = ScaleWidth txtEdit.Height = ScaleHeight PNH-HUT265 Chương 9 Xử lý tập tin PNH-HUT266 Nội dung 9.1. C|c kiểu truy cập tập tin 9.2. Tập tin tuần tự 9.3. Tập tin truy xuất ngẫu nhiên PNH-HUT267 9.1. C|c kiểu truy cập tập tin Tập tin: một d~y c|c byte trên đĩa. (ký tự, bản ghi, số, chuỗi ) Có 3 kiểu truy cập tập tin: tuần tự, ngẫu nhiên, nhị phân. Tuần tự (Sequential): Đọc/ghi c|c tập tin văn bản theo c|c chuỗi liên tục. Ngẫu nhiên (Random): Đọc/ghi tập tin văn bản, nhị ph}n có cấu trúc theo c|c mẩu tin có độ d{i cố định. Nhị ph}n (Binary): Đọc/ghi tập tin có cấu trúc thay đổi. PNH-HUT268 9/14/2011 68 9.2. Tập tin tuần tự - Open Mở tập tin:  Cú pháp: Open pathname For [Input | Output | Append] As filenumber [Len = buffersize]  Tham số: - Input: Mở tập tin để đọc, tập tin phải tồn tại sẵn, nếu không sẽ b|o lỗi. - Mở tập tin chưa có sẵn với Output, Append sẽ tạo mới tập tin v{ mở nó. - Len: số ký tự trong vùng đệm khi sao chép dữ liệu giữa tập tin v{ chương trình. - Filenumber: số hiệu tập tin được mở (nguyên, từ 1 .. 511). PNH-HUT269 9.2. Tập tin tuần tự - Open (tt) Mở tập tin – Ví dụ:  Open “C:\TESTFILE" For Output As #1 ' Mở tập tin để ghi. PNH-HUT270 9.2. Tập tin tuần tự - Input Đọc nội dung tập tin:  Hàm Input Cú pháp: Input (number, filenumber) As String Trả về number ký tự của tập tin có số hiệu được chỉ định bởi filenumber  Lệnh Input Cú pháp: Input # filenumber, varlist Đọc nội dung của tập tin v{o c|c biến được chỉ bởi varlist. Chỉ sử dụng với c|c tập tin được ghi bởi lệnh Write #  Lệnh: Line Input # filenumber, varname Đọc nội dung của một dòng trong tập tin tuần tự v{o biến chuỗi (varname). PNH-HUT271 9.2. Tập tin tuần tự - Input (tt) Đọc nội dung tập tin – Ví dụ:  Dùng Line Input để đọc từng dòng: Dim LinesFromFile, NextLine As String Do Until EOF(1) Line Input #1, NextLine LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10) Loop  Dùng Input để đọc một danh s|ch c|c th{nh phần: Input #1, name, street, city, state, zip  Dùng hàm Input để đọc về n ký tự: LinesFromFile = Input(n, #1) PNH-HUT272 9/14/2011 69 9.2. Tập tin tuần tự - Write Ghi dữ liệu lên tập tin:  Có 2 c}u lệnh Write # v{ Print # C}u lệnh Write #  Cú pháp: Write #filenumber, [outputlist]  Ghi dữ liệu v{o tập tin tuần tự. Nội dung ghi chứa trong danh s|ch biến outputlist, c|c phần tử danh s|ch c|ch nhau bởi dấu phẩy. Nếu không có outputlist thì ghi một dòng trắng. PNH-HUT273 9.2. Tập tin tuần tự - Write (tt) C}u lệnh Print #  Cú pháp: Print # filenumber, [outputlist]  Tương tự như lệnh Write nhưng dữ liệu có thể định dạng khi ghi lên tập tin.  Đối số outputlist có thể l{: [{Spc(n) | Tab[(n)]}] [expression] [charpos] Trong đó: - Spc(n): xen n khoảng trắng v{o tập tin. - Tab(n): dùng để x|c định cột bắt đầu ghi dữ liệu trong vùng ghi với n l{ số thứ tự cột. Dùng Tab không đối số để chỉ vị trí bắt đầu của vùng ghi tiếp theo. - Expression: biểu thức chuỗi hoặc biểu thức số - Charpos: chỉ định vị trí của ký tự kế tiếp. PNH-HUT274 9.2. Tập tin tuần tự - Write (tt) Ghi tập tin – ví dụ:  Ghi nội dung hộp văn bản (một chuỗi) v{o tập tin: Print #1, Thebox.text Print #1, "This is a test" ' Ghi chuỗi v{o tập tin. Print #1, ' Ghi một dòng trắng v{o tập tin. Print #1, "Zone 1"; Tab ; "Zone 2" ' Tạo hai vùng ghi  Ghi danh s|ch chuỗi, số: Dim strString as String, intNumber as Integer strString = “AnyCharacters” intNumber = 23456 Write #Filenum, strString, intNumber PNH-HUT275 9.2. Tập tin tuần tự - Close Đóng tập tin:  Cú pháp: Close filenumberlist Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả trong filenumberlist, filenumberlist có dạng sau: [[#]filenumber] [, [#]filenumber] . . .  Ví dụ: Đóng tập tin đ~ mở cho c|c thao t|c trước Close #1 PNH-HUT276 9/14/2011 70 9.2. Tập tin tuần tự - Thực h{nh Ví dụ: Thiết kế ứng dụng duyệt v{ đọc nội dung tập tin văn bản trên đĩa cứng (B{i thực h{nh) PNH-HUT277 9.3. Tập tin truy xuất ngẫu nhiên  Dữ liệu trong tập tin truy xuất ngẫu nhiên có dạng c|c bản ghi đồng nhất. (Tương đương kiểu dữ liệu mẩu tin).  Ví ụ: Kiểu worker tạo mẫu tin 19 bytes gồm 3 trường: Type worker LastName As String *10 Tilte As String * 7 Rank As String *2 End Type  Sau khi định nghĩa kiểu mẩu tin, khai b|o c|c biến m{ ứng dụng cần để xử lý 1 tập tin mở để truy cập ngẫu nhiên: Public Employee as worker PNH-HUT278 9.3. Tập tin truy xuất ngẫu nhiên - Open Mở tập tin:  Cú pháp: Open pathname [For Random] As filenumber [Len = RecLength]  Tham số: - For Random: Mặc định nên có thể không viết. - Filenumber: Số hiệu tập tin được mở - Kích thước cho một mẩu tin. Nếu nhỏ hơn sẽ g}y lỗi. Nếu lớn hơn thì l~ng phí. PNH-HUT279 9.3. Tập tin truy xuất ngẫu nhiên - Get Đọc nội dung tập tin – C}u lệnh Get:  Cú pháp: Get [#] filenumber, [recnumber], varname  Đọc nội dung mẩu tin thứ recnumber v{o biến varname.  Mẩu tin đầu tiên của tập tin được tính từ 1. PNH-HUT280 9/14/2011 71 9.3. Tập tin truy xuất ngẫu nhiên - Put Ghi dữ liệu lên tập tin – C}u lệnh Put:  Cú pháp: Put [#] filenumber, [recnumber], varname  Ghi mẩu tin thay thế hoặc thêm mới.  Thay thế: Nếu recnumber <= số mẩu tin hiện tại  Thêm mới: recnumber = số mẩu tin hiện tại + 1 PNH-HUT281 9.3. Tập tin truy xuất ngẫu nhiên - Close Đóng tập tin:  Như với tập tin tuần tự  Lệnh: Close filenumberlist  Đóng lại c|c tập tin được mở với c|c số hiệu được mô tả trong filenumberlist, filenumberlist có dạng sau: [[#]filenumber] [, [#]filenumber]... PNH-HUT282 9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ  Giả sử ta có khai b|o 1 mẩu tin như sau: Type Hanghoa MaHang As String * 10 TenHang As String * 40 DVTinh As String * 15 Gia As Double End Type PNH-HUT283  Ghi dữ liệu lên tập tin có cấu trúc là các mẩu tin như trên Dim h As Hanghoa h.MaHang = "AM01" h.TenHang = "Dau goi Clear" h.DVTinh = "Chai" h.Gia = 14000# Open "E:\Test.dat" For Random As #1 Len = LenB(h) Put #1, 1, h Close #1 9.3. Tập tin truy xuất ngẫu nhiên – Ví dụ Đọc dữ liệu từ tập tin có cấu trúc như trên: Dim h As Hanghoa Open "E:\Test.dat" For Random As #1 Len = LenB(h) Get #1, 1, h Close #1 MsgBox h.MaHang & ": " & h.TenHang & ": " & h.DVTinh & ": " & Str(h.Gia), , “Thong tin Hang Hoa” PNH-HUT284 9/14/2011 72 Chương 10 Chương trình nhiều Form PNH-HUT285 Nội dung 10.1. Chương trình nhiều Form 10.2. Ứng dụng MDI Form PNH-HUT286 10.1. Chương trình nhiều Form Thêm Form v{o ứng dụng: Project/AddForm PNH-HUT287 Biến, thủ tục trong chương trình nhiều form Khai b|o to{n cục để sử dụng trong form kh|c. Ví dụ:  Public V as integer  Public Sub1() End Sub Sử dụng. Ví dụ:  Form2.v=100 ‘G|n gi| trị 1000 v{o biến V được khai báo trong Form2  Form2.sub1 PNH-HUT288 9/14/2011 73 Truy xuất đối tượng trong Form kh|c Kèm theo tên Form chứa đối tượng: Ví dụ:  Form2.text1.text=”DurianGroup”  Form2.shape.Fillcolor=QBColor(Rnd() * 10) 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 PNH-HUT289 Qui định Form hiện trước Chọn menu Project /Project properties Tab General: Chọn tên Form Startup Object PNH-HUT290 10.2. Ứng dụng MDIFrom Kh|i niệm MDI:  MDI (Multiple Document Interface), giao diện có nhiều cửa sổ t{i liệu  Sử dụng trong hầu hết c|c ứng dụng Microsoft Office (Word, Excel, Access, PowerPoint), và các ứng dụng kh|c của Window.  Biểu mẫu MDI cho phép nhóm nhiều biểu mẫu v{ chức năng trong một cửa sổ lớn.  MDI phù hợp với c|c ứng dụng cần l{m việc với nhiều t{i liệu cùng lúc. PNH-HUT291 10.2. Ứng dụng MDIForm Đặc điểm:  MDIForm l{ một biểu mẫu chuẩn có những điểm đặc biệt kh|c với c|c biểu mẫu thông thường.  Chỉ có thể tạo một MDIForm cho mỗi ứng dụng, vì đ}y l{ biểu mẫu cha, chứa c|c biểu mẫu con khác. PNH-HUT292 9/14/2011 74 10.2. Ứng dụng MDI Form – Đặc điểm Hầu hết c|c điều khiển sẽ không đặt trực tiếp được v{o giao diện MDIForm. Được phép:  Thiết kế menu  Chứa c|c điều khiển không có thể hiện khi chạy (Timer, CommonDialog).  C|c điều khiển hỗ trợ căn chỉnh Align (PictureBox, Toolbar, StatusBar). Để đặt c|c điều khiển kh|c, hoặc hiển thị ký tự, hình ảnh cần dùng điều khiển chứa chúng (thường dùng PictureBox). PNH-HUT293 10.2. Ứng dụng MDIForm – C|ch tạo Mở Project/Add MDI Form. Sau khi tạo MDIForm th{nh công, dòng n{y sẽ mờ đi, không cho phép thêm MDIForm n{o nữa. Hình ảnh: PNH-HUT294 Biểu mẫu MDIChild Một biểu mẫu MDIForm chứa một hoặc nhiều biểu mẫu con. Để tạo c|c biểu mẫu con, thêm biểu mẫu v{o dự |n v{ thiết lập thuộc tính MDIChild của nó gi| trị True. Khi được thiết lập l{ MDIChild, biểu tượng của form trong cửa sổ Project Explorer sẽ thay đổi. Mặc định nó l{ form con của MDIForm (mỗi project chỉ có một form cha). PNH-HUT295 Biểu mẫu MDIChild Form MDI con nằm bên trong MDI cha. Nếu một Form MDI con được chọn l{ form khởi động trong ứng dụng thì Form MDI cha sẽ được nạp tự động v{ hiển thị trước khi hiện form con. C|c thể hiện của form MDI con được tạo ra sử dụng từ khóa New ‘Inside the MDIForm module Private Sub mnuFileNew_Click() Dim frmDoc As New frmDocument frmDoc.Show End Sub PNH-HUT296 9/14/2011 75 Tạo Instance của biểu mẫu Sử dụng biến đối tượng để tạo ra những bản sao của một biểu mẫu. Từng bản sao có c|c điều khiển v{ menu như nhau, nhưng có những dữ liệu kh|c nhau. Mặc dù chương trình cũng như tên biến v{ tên điều khiển như nhau, nhưng dữ liệu được chứa ở những nơi kh|c nhau trong bộ nhớ. PNH-HUT297 Tạo danh s|ch cửa sổ Phương thức Arrange của MDIForm (không có trong form thông thường) cung cấp c|c c|ch thức sắp xếp c|c form con (MDIChild) trong ứng dụng MDI. C|c kiểu sắp xếp do VB cung cấp: PNH-HUT298 Giá trị Hằng Mô tả 0 vbCascade Sắp xếp các cửa sổ con theo kiểu thác nước trải từ góc trái trên qua góc phải dưới. 1 vbTileHorizontal Dàn đều các cửa sổ con sao cho chúng chia màn hình thành những dải ngang. 2 vbTileVertical Dàn đều các cửa sổ con sao cho chúng chia màn hình thành những dải dọc. 3 vbArrangeIcons Các cửa sổ con được thu nhỏ thành các biểu tượng và xếp thẳng hàng ở đáy cửa sổ cha. Tạo danh s|ch cửa sổ Để l{m những điều n{y, cần tạo ra một menu Window với 4 lệnh: Tile Horizontally, Tile Vertically, Cascade, and Arrange Icons. Viết code cho mỗi th{nh phần menu: ‘Chọn xếp theo d{n h{ng ngang Private Sub mnuTileHorizontally_Click() Arrange vbTileHorizontal End Sub ‘Chọn xếp theo d{n h{ng dọc Private Sub mnuTileVertically_Click() Arrange vbTileVertical End Sub PNH-HUT299 Tạo danh s|ch cửa sổ Viết code cho mỗi th{nh phần menu (tiếp): ‘Chọn xếp theo kiểu th|c nước Private Sub mnuCascade_Click() Arrange vbCascade End Sub ‘Chọn xếp theo kiểu thu nhỏ Private Sub mnuArrangeIcons_Click() Arrange vbArrangeIcons End Sub PNH-HUT300 9/14/2011 76 10.3. Ứng dụng MDI Notepad B{i thực h{nh Tạo mới thể hiện form con:  Dim frmDoc As New frmDocument frmDoc.Show Tham chiếu đến form con đang kích hoạt (ActiveForm): Me.ActiveForm PNH-HUT301 Ứng dụng Notepad MDI Tạo mới thể hiện Form con PNH-HUT302 Private Sub menuNew_Click() Dim frmDoc As frmDocument „Ten form con Static n As Integer „Bien tinh dem so the hien form con Set frmDoc = New frmDocument frmDoc.rtbEdit.Text = "" „Chứa rtbEdit n = n + 1 frmDoc.Caption = "Document" & Format(n) frmDoc.Show „Hien the hien form con End Sub Ứng dụng MDI Notepad Kiểm tra nếu chưa có Form con n{o được mở PNH-HUT303 If ActiveForm Is Nothing Then Set frmDoc = New frmDocument frmDoc.Caption = "Document 1" frmDoc.Show End If Tham chiếu điều khiển trên form con đang active Me.ActiveForm.TenDieuKhien Xuất file văn bản Filename: Tên file văn bản được mở (qua OpenFileDialog) PNH-HUT304 Open filename For Input As #1 Do While Not (EOF(1)) Line Input #1, s Me.ActiveForm.rtbEdit.Text = Me.ActiveForm.rtbEdit.Text & s & vbCrLf Loop Close #1 9/14/2011 77 Đóng c|c Form con PNH-HUT305 Private Sub menuExit_Click() Dim frmDoc As Form 'Thoat cac cua so con For Each frmDoc In Forms If TypeOf frmDoc Is frmDocument Then Unload frmDoc Set frmDoc = Nothing End If Next 'Thoat cua so cha Unload Me End Sub Trò chơi Puzzle số PNH-HUT306 Trò chơi Puzzle số Di chuyển c|c ô số để được kết quả sắp xếp cuối cùng PNH-HUT307 Chương 11. Lập trình Cơ sở dữ liệu PNH-HUT308 9/14/2011 78 CSDL trong ứng dụng quản lý Mô hình ứng dụng quản lý CSDL PNH-HUT309 CSDL trong ứng dụng quản lý C|c th{nh phần: (mô hình 3 lớp) PNH-HUT310 Kỹ thuật ADODB trong VB6 ADODB (ActiveX Data Object DB) Sử dụng: PNH-HUT311 C|c đối tượng trong ADODB Connection: Quản lý kết nối Command RecordSet Field Parameter PNH-HUT312 9/14/2011 79 Kết nối Data Source PNH-HUT313 Đối tượng Connection PNH-HUT314 Đối tượng Connection PNH-HUT315 Đối tượng Connection PNH-HUT316 9/14/2011 80 Đối tượng Connection PNH-HUT317 Đối tượng Connection PNH-HUT318 Ví dụ Kết nối CSDL PNH-HUT319 Đóng kết nối PNH-HUT320 9/14/2011 81 Thao t|c dữ liệu PNH-HUT321 Minh họa thao t|c dữ liệu PNH-HUT322 Đối tượng Command PNH-HUT323 Đối tượng Command Thực hiện truy vấn Thêm (Insert), Cập nhật (Update) tương tự PNH-HUT324 9/14/2011 82 Đối tượng Command Thực hiện c}u truy vấn SELECT PNH-HUT325 „Khai báo đối tượng RecordSet để chứa kết quả Dim rs As New ADODB.RecordSet „Khai báo đối tượng Command Dim cmd As New ADODB.Command cmd.ActiveConnection = con „Kết nối đang mở cmd.CommandText = câu truy vấn chọn cmd.CommandType = adCmdText „Thực hiện truy vấn Set rs = cmd.Execute Đối tượng RecordSet Thực hiện c}u truy vấn SELECT PNH-HUT326 „Khai báo đối tượng RecordSet Dim rs As New ADODB.RecordSet „Khai báo đối tượng Command Dim cmd As New ADODB.Command cmd.ActiveConnection = con „Kết nối đang mở cmd.CommandText = câu truy vấn chọn cmd.CommandType = adCmdText „Thực hiện truy vấn chọn rs.Open cmd C|c phương thức duyệt bản ghi Về đầu danh sách:  rs.MoveFirst Về cuối danh sách:  rs.MoveLast Bản ghi tiếp theo:  rs.MoveNext Bản ghi trước:  rs.MovePrevious PNH-HUT327 Đếm số bản ghi: rs.RecordCount Di chuyển đến bản ghi có chỉ số index rs.Move(index) Đọc thông tin c|c trường bản ghi Đối tượng rs (RecordSet) nắm dữ tập hợp c|c bản ghi. Tại mỗi thời điểm, có một bản ghi được chọn. Lấy thông tin c|c trường dữ liệu của một bản ghi:  rs.Fields(index) ‘Chỉ số trường tính từ 0  rs.Fields(“Tên trường”)  rs!Têntrường PNH-HUT328 9/14/2011 83 Đối tượng RecordSet PNH-HUT329 Tiếng Việt trong Visual Basic PNH-HUT330 Tiếng Việt VB6 Bảng mã ANSI (ACII mở rộng), dùng đủ 8 bit với 256 ký tự, bao gồm cả 128 kí tự trong m~ ASCII chuẩn. C|c kí tự sau l{ c|c phép to|n, c|c chữ có dấu v{ c|c kí tự để trang trí. (Mở công cụ Character Map của Window, chọn font Fixedsys, trật tự c|c ký tự hiện ra ấy chính l{ bảng m~ ANSI) VB6 chuẩn hoạt động với bảng m~ ANSI: Ta có thể gõ trong môi trường code c|c ký tự HOA có dấu sau: À Á Â Ã È É Ê Ì Í Ò Ó Ô Õ Ù Ú Ý kèm c|c chữ thường. PNH-HUT331 Tiếng Việt VB6 Môi trường chuẩn VB6 không hỗ trợ tiếng Việt Unicode. Người ta thường dùng bảng m~ 1 byte của Việt nam để thay thế. Tiếng Việt cho điều khiển:  Thiết lập thuộc tính Font: Chọn kiểu Font Việt Nam 1 byte (.VnTime, .VnTimeH, )  Sử dụng bộ gõ TCVN3, kiểu gõ Telex Với môi trường Code: * C|c ký tự có dấu phức tạp, ta dùng kèm h{m ChrW, ví dụ từ 'lên lớp' : Msgbox "lên l" & ChrW(7899) & "p“ Dùng Character Map để tra m~ những ký tự có dấu PNH-HUT332 9/14/2011 84 Sử dụng điều khiển Unicode viết sẵn Với C|c Control: * Dùng c|c control do c|c t|c giả người Việt viết sẵn, ví dụ dùng bộ Unicode Full Controls của t|c giả DQHung (UnicodeFullControls.ocx) PNH-HUT333 Sử dụng điều khiển Unicode Dùng bộ controls MS Form 2.0 của Microsoft, chọn c|c font nhóm Unicode, dùng hàm convert ChrW$() cho những ký tự có dấu tiếng việt m{ VB không hỗ trợ. PNH-HUT334 VB (version 2005, 2008, 2010) Công nghệ .NET framework Đ~ hỗ trợ tiếng Việt Unicode cả trên điều khiển v{ môi trường code Chọn kiểu gõ Unicode, Font chữ thường dùng: Arial, Times New Roman, PNH-HUT335

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf