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