lập trình visual basic -...
TRANSCRIPT
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
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
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 đế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
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
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:
<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
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(<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
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
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
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 * <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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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.Caption) - 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 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
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{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
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 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
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ấuPNH-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