84
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: [email protected] www.soict.hut.edu.vn PNH-HUT 2 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-HUT 3 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-HUT 4

Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

Embed Size (px)

Citation preview

Page 1: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

1

Lập trình Windows

Visual BasicViệ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: [email protected]

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

Page 2: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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, …

http://www.vovisoft.com/VisualBasic

http://caulacbovb.com

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

Page 3: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 4: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 5: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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.

Page 6: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 7: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 đếnMSWindows 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 VB6Môi trường ph|t triển tích hợp (IDE)

PNH-HUT28

Project

Explorer

Properties

Form LayoutFormToolBox

Page 8: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

8

1.4. Môi trường ph|t triển VB6MenuBar

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 VB6Toolbars (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

Page 9: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 10: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 11: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 12: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 13: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 14: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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:

<Tên điều khiển>.<Tên thuộc tính>

Ví dụ: btnThoat.Visiable = False

L{m việc với phương thức:

<Tên điều khiển>.<Tên 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

Page 15: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 16: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 17: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 18: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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(<Index>): cho biết phần tử thứ <Index> 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

Page 19: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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:

<Name>.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: <Name>.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 <Name>.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.

<Name>.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

Page 20: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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:

ClickPNH-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

Page 21: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 22: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 23: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 24: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 25: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 * <Chiều d{i>: 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

Page 26: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <Tên biến mảng>(<Kích thước>) [As <Kiểu>]

Phần tử đầu tiên có chỉ số 0.

Dim <Tên biến mảng>(<Chỉ số đầu> To <Chỉ số cuối>) [As <Kiểu>]

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

Page 27: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <Tên mảng> () [As <Kiểu>]

Ví dụ: Dim DynArray() As Integer

Cần cấp ph|t số phần tử, dùng lệnh:

ReDim <Tên mảng>(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:

<Tên mảng>(<Vị trí>)

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 <tên kiểu>

<Tên trường 1> : <Kiểu trường 1>

<Tên trường 2> : <Kiểu trường 2>

<Tên trường n> : <Kiểu trường n>

End Type

Ví dụ: Type TEmployee

Fullname As String

Salary As Single

Age As Integer

End Type

PNH-HUT108

Page 28: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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:

<Tên biến mẩu tin>.<Tên trường>

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 <Tên biến mẩu tin>

.<Tên trường> ‘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

Page 29: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

29

4.1. Cấu trúc rẽ nh|nh (1)

Một dòng lệnh:

If <điều kiện> Then <dòng lệnh>

Nhiều dòng lệnh:

If <điều kiện> 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 <điều kiện 1> Then

[Khối lệnh 1]

ElseIf <điều kiện 2> 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 <biểu thức kiểm tra>

Case <Danh s|ch kết quả biểu thức 1>

[Khối lệnh 1]

Case <Danh s|ch kết quả biểu thức 2>

[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 <điều kiện>

<khối lệnh>

Loop

Khối lệnh được thực hiện đến khi <điều kiện> 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

Page 30: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

30

4.3. Cấu trúc lặp (2)

Kiểu 2:

Do

<khối lệnh>

Loop While <điều kiện>

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 <điều kiện>

<khối lệnh>

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 saiPNH-HUT117

4.3. Cấu trúc lặp (3)

Kiểu 4:

Do

<khối lệnh>

Loop Until <điều kiện>

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 <= Sqr(N)) And (N Mod 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 <biến đếm> = <điểm đầu> To <điểm cuối> [Step <bước nhảy>]

[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

Page 31: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <phần tử> In <nhóm>

<khối lệnh>

Next <phần tử>

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:

<Tên nh~n>: <Nhóm lệnh>

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 <tên nhãn>

Cách 2:

ON <biểu thức số> GOTO <liệt kê c|c nh~n>

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

Page 32: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <Tên nhãn>

<C|c c}u lệnh có thể g}y ra lỗi>

<Tên nhãn>:

<C|c c}u lệnh xử lý lỗi>

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 <Tên nh~n> để thực thi.

Dạng 2:

On Error Resume Next

<C|c c}u lệnh có thể g}y ra lỗi>

Ý 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

Page 33: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 ForLồ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

NextPNH-HUT131

5.1. C|c lệnh cơ bản

2. C}u lệnh: Exit DoLồ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

LoopPNH-HUT132

Page 34: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

34

5.1. C|c lệnh cơ bản

3. C}u lệnh: Exit SubTho|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: EndChấ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: BeepPh|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ốngVí 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ốngCú pháp : Time = <Giờ bạn đặt>VD: Time = # 5 : 12 : 45 PM #

PNH-HUT136

Page 35: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

35

5.1. C|c lệnh cơ bản (tiếp)

8. Lệnh: LoadNạp 1 form (dùng nó để mở 1 Form)Cú pháp : Load <Tên Form>Để 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

Page 36: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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ênNếu Number > 0 sẽ trả về 1Nếu Number < 0 sẽ trả về -1Nế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) = 10Round (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 NgayThangNamTa thường sử dụng Month(Now) để lấy th|ng hệ thống

PNH-HUT144

Page 37: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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{oTa 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{oTa 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{oTa 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{oTa 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

Page 38: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 taoMyStr = 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

Page 39: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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. ChDriveDùng để đổi ổ đĩa l{m việcCú ph|p : ChDrive <”Tên ổ đĩa :”>

2. MkDirDùng để tạo một thư mục mới trên đĩaCú Ph|p : MkDir <Đường dẫn>Ví dụ : MkDir “D:\Caulacbovb”

3. ChDirLệnh n{y dùng để thay đổi thư mục l{m việc tại ổ đĩa đang l{m việcCú ph|p : ChDir <”Đường dẫn thư mục”>

PNH-HUT154

5.2.4. H{m với thư mục, ổ đĩa

4. RmDirDùng để xóa 1 thư mục rỗng.Cú ph|p : RmDir <”Đường dẫn thư mục”>

5. KILLXóa 1 hay nhiều tập tin trên đĩaCú ph|p : KILL <”Đường dẫn đến tập tin”>Ví dụ : Kill “D:\vinhphuoc.txt”Kill “D:\*.txt”

PNH-HUT155

5.2.4. H{m với thư mục, ổ đĩa

6. NameDùng để đổi tên tập tinCú pháp : Name <”Đường dẫn tập tin cần đổi tên”> AS <”Đường dẫn v{ tên tệp mới”>Ví dụ : Name “C:\Phuoc.txt” AS “C:\VINHPHUOC91.txt”

PNH-HUT156

Page 40: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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ốnValue : Gi| trị cần định dạngFormat : 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 = Nowhh:mm:ss AM/PM : Định dạng Giờ phút gi}y theo dạng, với đối số Value = Nowhh: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 = Nowhh: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(<Điều kiện>, 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 saiH{m n{y l{ c|ch viết ngắn gọn của IF…END 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

Page 41: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <tên thủ tục> [(<tham số>[As <Kiểu tham số>])]

<C|c dòng lệnh> hay <C|c khai b|o>

End Sub

<tham số>[As <Kiểu tham số>]: 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

<Tên thủ tục> [<C|c tham số thực tế>]

Call <Tên thủ tục> ([<C|c tham số thực tế>])

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

Page 42: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <Tên hàm>

[(<tham số>[As <Kiểu tham số>])] [As <KIỂU DỮ LIỆU>]

<C|c dòng lệnh> hay <C|c khai b|o>

<Tên h{m> = <gi| trị trả về>

End Function

PNH-HUT166

6.3. Hàm - Function

Khai b|o (tiếp):

<tham số>[As <Kiểu tham số>]: 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>: 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 <kiểu dữ liệu>, mặc định, VB hiểu kiểu trả về là kiểu Variant.

PNH-HUT167

Ví dụ h{m

PNH-HUT168

Page 43: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

9/14/2011

43

6.3. Hàm - Function

Cú ph|p gọi h{m thực thi:

ketquatrave = <Tên h{m>[(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

Page 44: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 <Tên biến> [As <Kiểu dữ liệu>]

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 <Tên biến> [As <Kiểu dữ liệu>]

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

Page 45: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 46: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 47: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 BoxPNH-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

Page 48: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

<TenTimer>.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.5sPrivate 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

Page 49: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 50: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 51: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 52: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 53: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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.Caption) - 1) & Left(lblTenCT.Caption, 1)

PNH-HUT211

Chương 8

Sử dụng menu v{ hộp thoại

PNH-HUT212

Page 54: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 55: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 menuPNH-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

Page 56: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 57: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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{nghì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

Page 58: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 59: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 60: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 61: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 62: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 63: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 64: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 65: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 66: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 67: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 68: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 69: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 70: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 71: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 72: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 73: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 74: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 75: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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 SubPNH-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

Page 76: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 77: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 78: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 79: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 80: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 81: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 82: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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

Page 83: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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ấuPNH-HUT332

Page 84: Lập trình Visual Basic - dulieu.tailieuhoctap.vndulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · (Visual Basic, Visual C++, Visual C#, ... Xử lý tệp tin

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