Bộ môn Tự động hóa Thiết kế Cầu đường 13 Các lỗi cú pháp sẽ được VBA IDE phát hiện và báo lỗi cho người lập trình ngay trong quá trình viết mã lệnh.. Mỗi ngôn ngữ lập trình có một bộ từ
Trang 1BỘ MÔN TỰ ĐỘNG HÓA THIẾT KẾ CẦU ĐƯỜNG
BÀI GIẢNG
TIN HỌC XÂY DỰNG
Trang 2Bộ môn Tự động hóa Thiết kế Cầu đường 2
PHầN Mở ĐầU TỔNG QUAN MÔN HỌC 5
PHầN 1 NGÔN NGỮ LẬP TRÌNH VISUAL BASIC CƠ BẢN 7
CHƯƠNG I TỔNG QUAN VISUAL BASIC 6.0 8
I.1 Giới thiệu về Visual Basic 8
1.2 Integrated Development Environment (IDE) 9
1.2.1 Cấu trúc một dự án VB 9
1.2.2 Các thành phần của IDE 9
1.2.3 Soạn thảo chương trình 10
1.3 Trợ giúp trong quá trình làm việc (Help) 11
CHƯƠNG II CẤU TRÚC LẬP TRÌNH TRONG VISUAL BASIC 12
II.1 QUY TẮC VIẾT MÃ LỆNH 12
II.2 CÁC TỪ KHÓA TRONG VB6 13
II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN 13
II.3.1 Boolean 13
II.3.2 Byte 14
II.3.3 Integer (Kiểu nguyên) 14
II.3.4 Long 14
II.3.5 Single 14
II.3.6 Double (Kiểu thực) 14
II.3.7 String (Kiểu chuỗi) 14
II.3.8 Date (Kiểu thời gian) 16
II.3.9 Kiểu mảng (array) 16
II.3.8 Kiểu dữ liệu do người dùng định nghĩa 16
II.3.9 Kiểu lớp (class) 17
II.3.10 Kiểu Variant 17
II.3.11 Chuyển đổi (convert) kiểu dữ liệu 18
II.4 KHAI BÁO BIẾN 18
II.4.1 Khai báo biến với các kiểu dữ liệu thông thường 18
II.4.2 Khai báo hằng 18
II.4.3 Khai báo kiểu tự định nghĩa 19
II.4.4 Khai báo mảng 19
II.4.5 Khai báo, tạo và làm việc với biến đối tượng 21
II.4.6 Các chú ý khi khai báo 21
II.5 BIỂU THỨC 21
II.5.1 Các khái niệm 21
II.5.2 Các loại phép toán 21
II.6 CÁC CÂU LỆNH 1
II.6.1 Lệnh gán 1
II.6.2 Lệnh rẽ nhánh If 1
II.6.2 Câu lệnh lựa chọn Select Case 3
II.6.3 Câu lệnh lặp xác định 4
II.6.4 Câu lệnh lặp xác định trong một tập hợp 5
II.6.5 Câu lệnh lặp không xác định 5
II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC) 6
II.7.1 Khái niệm 6
II.7.2 Hàm - Function 6
II.7.3 Thủ tục - Sub 7
II.7.4 Truyền tham số cho chương trình con 7
II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC 9
II.8.1 Các khái niệm 9
II.8.2 Biến toàn cục 10
II.8.3 Biến cục bộ 10
II.8.4 Biến module 10
II.9 GỠ LỖI TRONG VISUAL BASIC (Debug) 10
2.9.1 Xử lý lỗi lúc RunTime 11
2.9.2 Dùng khai báo Option Explicit 11
2.9.3 Dùng Breakpoints 11
2.9.4 Dùng Immediate Window 12
Trang 3Bộ môn Tự động hóa Thiết kế Cầu đường 3
2.9.5 Dùng Watch Window 12
2.9.2 Dùng Comment (chú thích) 12
II.10 TỔ CHỨC CHƯƠNG TRÌNH 13
CHƯƠNG III FORM VÀ MỘT SỐ ĐIỀU KHIỂN THÔNG DỤNG 14
III.1 Các khái niệm liên quan 14
III.2 Form 16
III.2.1 Khái niệm 16
III.2.2 Thuộc tính 16
III.2.3 Sự kiện 16
III.3 Nhãn (Label) 16
III.3.1 Khái niệm 16
III.3.2 Thuộc tính 16
III.3.3 Sự kiện 16
III.4 Khung (Frame) 17
Khung cũng có các thuộc tính và sự kiện thông dụng như của điều khiển nhãn như: Name, Caption, Click, DblClick 17
III.3 Nút lệnh (CommandButton) 17
III.3.1 Khái niệm 17
III.3.2 Thuộc tính 17
III.3.3 Sự kiện 17
III.4 Ô nhập dữ liệu (TextBox) 17
III.3.1 Khái niệm 17
III.3.2 Thuộc tính 18
III.3.3 Sự kiện 18
III.5 ListBox 19
III.3.1 Khái niệm 19
III.3.2 Thuộc tính 19
III.3.3 Phương thức 19
III.6 ComboBox 19
III.7 Check Box 20
III.7.1 Khái niệm: 20
III.7.2 Thuộc tính: 20
III.8 Option Button 20
III.9 Điều khiển thanh cuộn ngang (HscrollBar) 20
III.9.1 Khái niệm 20
III.9.2 Thuộc tính 20
III.9.3 Sự kiện 21
III.10 Điều khiển thanh cuộn đứng (VScrollBar) 21
III.11 Điều khiển thời gian (Timer) 21
III.11.1 Khái niệm 21
III.11.2 Thuộc tính: 21
III.11.3 Sự kiện 21
III.12 Danh sách ổ đĩa (DriveListbox), thư mục (DirListbox), tập tin (FileListbox) 21
CHƯƠNG IV LÀM VIỆC VỚI TẬP TIN (FILE) 23
IV.4 Mô hình File System Object (FSO) 23
IV.4.1 Tạo đối tượng FileSystemObject 23
IV.4.2 Truy cập ổ đĩa, thư mục, tập tin 24
IV.4.3 Thông tin về ổ đĩa 24
IV.4.4 Làm việc với thư mục 24
IV.4.5 Làm việc với tập tin 24
IV.4.6 Ví dụ 25
IV.5 Hàm I/O và lệnh xử lý tập tin 27
IV.5.1 Mở tập tin 27
IV.5.2 Đọc nội dung tập tin 28
IV.5.3 Ghi dữ liệu lên tập tin 28
IV.5.4 Đóng tập tin 28
IV.5.5 Ví dụ 29
PHầN 2 TIN HỌC XÂY DỰNG 31
CHƯƠNG I THIẾT KẾ GIAO DIỆN 32
I.1 Menu 32
Trang 4Bộ môn Tự động hóa Thiết kế Cầu đường 4
I.1.1 Khái niệm 32
I.1.2 Các thuộc tính 32
I.1.3 Cách tạo menu 33
I.2 Hộp thoại (Dialog Box) 33
I.2.1 Khái niệm 33
I.2.2 Hộp thoại thông điệp 34
I.2.2.1 Loại chỉ xuất thông báo 34
I.2.2.2 Loại tương tác với người dùng 34
I.2.3 Hộp thoại nhập 35
I.2.4 Các loại hộp thoại thông dụng (Common Dialog) 35
I.2.4.1 Hộp thoại mở và lưu tập tin 35
I.2.4.2 Hộp thoại Chọn màu 36
I.2.4.3 Hộp thoại chọn Font chữ 36
I.2.4.4 Hộp thoại In ấn 37
I.3 Xử lý các sự kiện chuột và bàn phím 38
I.3.1 Sự kiện chuột 38
I.3.2 Sự kiện bàn phím 39
I.4 Sử dụng Multiple document interface (MDI) 39
I.4.1 Khái niệm 39
I.4.2 Thiết lập ứng dụng MDI 40
I.5 Tạo giao diện Wizard (Thuật sĩ) 40
CHƯƠNG II XỬ LÝ ĐỒ HỌA 42
II.1 Tọa độ màn hình 42
II.2 Màu (Color) 43
II.3 Các thuộc tính đồ họa của Form và PictureBox 44
II.4 Các phương thức đồ họa 44
II.4.1 Phương thức Print 44
II.4.2 Phương thức PSet 45
II.4.3 Phương thức Line 46
II.4.4 Phương thức Circle 48
II.4.5 Phương thức PaintPicture 48
II.5 Các điều khiển đồ họa 52
II.5.1 Điều khiển hộp hình ảnh (Picture Box) 52
II.5.2 Điều khiển hình ảnh (Image) 52
II.5.3 Điều khiển hình dạng (Shape) 52
II.5.4 Điều khiển Line 53
II.6 Các phép biến đổi tọa độ 53
CHƯƠNG III LÀM VIỆC VỚI AUTOCAD/EXCEL 57
III.1 Làm việc với AutoCAD 57
III.1.1 Hệ thống các đối tượng trong AutoCAD 60
III.1.2 Kết nối VB với AutoCAD 60
III.1.3 Một số phương thức cơ bản 61
III.1.4 Ví dụ minh họa 61
III.2 Làm việc với Microsoft Excel 61
III.2.1 Hệ thống các đối tượng trong Excel 61
III.2.2 Kết nối VB với MS Excel 62
III.2.2 Một số phương thức cơ bản 63
III.2.3 Ví dụ minh họa 63
Trang 5Bộ môn Tự động hóa Thiết kế Cầu đường 5
Phần mở đầu
TỔNG QUAN MÔN HỌC
Trang 6Bộ môn Tự động hóa Thiết kế Cầu đường 6
Lesson 1
TỔNG QUAN MÔN HỌC Nội dung - Mục tiêu
- Tìm hiểu cơ bản về ngôn ngữ lập trình Visual Basic (VB)
- Sử dụng các điều khiển, viết mã lệnh và xây dựng chương trình trong VB6
- Cơ sở về phương pháp hướng đối tượng
- Lập trình hướng đối tượng dựa trên VB6
- Sinh viên nắm được các kỹ năng cơ bản của lập trình, ứng dụng vào ngành xây dựng thông qua môi trường VB6
- Hiểu về phương pháp hướng đối tượng, xây dựng chương trình theo phương pháp hướng đối tượng với VB6
- Nói tóm lại dù chưa đạt mức thành thạo nhưng cũng sẽ tự mình hoàn thành được các chương trình nhỏ phục vụ chuyên môn sau này
- Hướng mở rộng: VB.NET, VBA, VBScript (Vẽ hình + Giải thích)
Phương pháp học
- Nắm vững kiến thức cơ bản, dành nhiều thời gian cho việc thực hành trên máy tính
- Đam mê, tự tìm hiểu, đi từ những ví dụ cơ bản
- Chú tâm ngay từ đầu, mục đích không phải chỉ để thi qua
- Học từ nhiều nguồn tài liệu khác nhau, đặc biệt là Internet, giúp tra cứu mỗi khi gặp khó khăn và thắc mắc
- Bài giảng sẽ đi từng phần các kiến thức cơ bản, kết hợp với việc thực hành ngay trên lớp Thời gian sử dụng máy chiếu >70% Sinh viên hăng hái tham gia xây dựng bài sẽ được cộng điểm khuyến khích
Tài liệu tham khảo
- Microsoft Visual Basic 6.0 Và Lập Trình Cơ Sở Dữ Liệu
- Tự Học Lập Trình Visual Basic 6.0…
Trang 7Bộ môn Tự động hóa Thiết kế Cầu đường 7
Phần 1 NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
CƠ BẢN
Trang 8Bộ môn Tự động hóa Thiết kế Cầu đường 8
Học xong chương này, sinh viên phải nắm bắt được các vấn đề sau:
- Sử dụng môi trường phát triển tích hợp VB 6.0 để phát triển ứng dụng
- Cách tạo dự án mới (New Project) trong VB 6.0
- Sử dụng tốt hệ thống trợ giúp trong quá trình làm việc
Kiến thức có liên quan:
- Sử dụng hệ điều hành Windows
I.1 Giới thiệu về Visual Basic
Visual Basic 6.0 (VB6) là một phiên bản của bộ công cụ lập trình Visual Basic (VB), cho phép người dùng tiếp cận nhanh cách thức lập trình trên môi trường Windows
Visual Basic là gì?
Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction
Code), một ngôn ngữ lập trình đơn giản, dễ học, được phát triển cho những người không chuyên sâu về lập trình VB được phát triển và mở rộng dựa trên BASIC
Phần "Visual" đề cập đến phương pháp được sử dụng để tạo giao diện đồ họa người dùng
(Graphical User Interface hay viết tắt là GUI) VB có sẵn các thành phần điều khiển trực quan (controls), các điểu khiển này được lập trình viên sắp xếp trên form tạo thành giao diện người dùng
Chính bởi sự đơn giản, dễ học nên VB6 là cách nhanh và tốt nhất để lập trình trong môi trường Microsoft Windows VB6 cung cấp bộ công cụ hoàn chỉnh để đơn giản hóa việc lập trình ứng dụng dựa trên giao diện đồ họa
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, AutoCAD, v.v còn gọi là Macros Dùng VBA trong MSOffice, ta có thể làm tăng chức năng bằng cách tự động hóa các chương trình
VBScript được dùng cho Internet và chính Operating System
Cài đặt Visual Basic
Phiên bản: Visual Basic 6.0
Cấu hình tối thiểu: 32 MB RAM, CPU Pentium II, Windows 98
Sử dụng các file cài đặt (1CD) để cài, sửa đổi, xóa VB Ngoài ra có thể cài thêm thư viện MSDN – Help (3CD)
Trang 9Bộ môn Tự động hóa Thiết kế Cầu đường 9
1.2 Integrated Development Environment (IDE)
IDE là tên tắt của môi trường phát triển tích hợp, đây là nơi tạo ra các chương trình VB
1.2.1 Cấu trúc một dự án VB
- Dự án (Project) là tập hợp các file để hình thành nên chương trình ứng dụng
- Dự án VB (VB Project) = Code Modules + Class Modules + Userform
- Code Module: mã lệnh chính của chương trình
- Class Module: thiết kế các lớp của dự án
- Userform: giao diện dạng hộp thoại của dự án để nhập số liệu và xuất kết quả
VB hỗ trợ tạo nhiều kiểu ứng dụng khác nhau Để tạo mới một dự án thực thi ta chọn Standard EXE rồi chọn Open
1.2.2 Các thành phần của IDE
- Form trắng để thiết kế giao diện cho ứng dụng
- Cửa sổ dự án hiển thị các file được tạo trong ứng dụng
- Cửa sổ thuộc tính hiển thị các thuộc tính của đối tượng và điều khiển được chọn
- Toolbox chứa các điều khiển cần thiết đễ xây dựng một ứng dụng VB
- Cửa sổ viết mã chương trình (Code)
- MenuBar, Toolbar, Layout, Immediate Window,ViewCode, ViewForm
Trang 10Bộ môn Tự động hóa Thiết kế Cầu đường 10
Menu Bar
Chứa đầy đủ các lệnh để làm việc với VB6, kể cả các menu để truy cập các chức năng đặc biệt dành cho việc lập trình như Project, Format, hoặc Debug
Toolbars (Debug, Edit, form Editor, Standard)
Các toolbars gồm các biểu tượng cho phép chọn nhanh các chức năng cần thiết Sử dụng
Menu View | Toolbars để tắt hoặc mở các toolbars
Các toolbars có thể sửa đổi theo ý thích bằng chức năng: View | Toolbars | Customize
Toolbox
Bao gồm các điều khiển (controls), dùng thiết kế giao diện đồ họa
Khi có nhiều các control, có thể sử dụng Add Tab để sắp xếp lại vị các control theo ý
Dùng để gở rối (debug) quá trình test ứng dụng
Ta có thể xem các thông số khi chạy chương trình hay khi đang tạm ngừng Có thể thay đổi giá trị các biến hay chạy một dòng chương trình
1.2.3 Soạn thảo chương trình
Trong Visual Basic IDE, cửa sổ mã lệnh (Code) cho phép soạn thảo mã chương trình với một số chức năng (Tắt mở trong Tools|Option)
- Đánh dấu (Bookmarks): Chức năng này cho phép đánh dấu các dòng lệnh của chương trình giúp việc xem lại các phần mã lệnh dễ dàng Sử dụng tính năng này qua thanh công
cụ hoặc menu Edit
- Tự động kiểm tra cú pháp (Auto Syntax Check) Khi chức năng này bật, nếu viết một dòng chứa lỗi, VB sẽ thông báo về lỗi và hiển thị con trỏ ngay dòng chương trình lỗi Nếu không có chức năng này, VB chỉ hiển thị dòng mã sai với màu đỏ không kèm chú thích
- Yêu cầu khai báo biến (Require Variable Declaration) (Tùy chọn): VB sẽ thông báo lỗi khi một biến được dùng mà không khai báo và sẽ chỉ ra vị trí của biến đó
- Gợi nhớ mã lệnh: (Auto List Members) Tự động hiển thị gợi ý khi ta gõ vào tên của chúng Sử dụng Ctrl+Space để sử dụng chức năng tự động hoàn thành mã chương trình
Trang 11Bộ môn Tự động hóa Thiết kế Cầu đường 11
1.3 Trợ giúp trong quá trình làm việc (Help)
Trong khi lập trình có thể cần tìm hiểu thông tin liên quan đến các commands, functions v.v của VB6 Các thông tin này được Microsoft cung cấp rất đầy đủ trong thư viện trợ giúp Microsoft Developer Network | MSDN Library Visual Studio 6.0
Truy cập thông qua menu Help | Contents của VB6, hoặc chọn (bôi đen) một từ khóa trong code rồi ấn F1
Phần trợ giúp được thiết kế giống như 1 quyển sách, kết hợp với chức năng tìm kiếm theo
từ khóa khiến người đọc dễ dàng tra cứu Các thông tin được liên kết với nhau đầy đủ giúp việc tham khảo đạt hiệu quả cao
Yêu cầu: Máy tính phải cài đầy đủ thư viện MSDN (3CD)
Context Sensitive Help (trợ giúp đúng tình huống)
Nhiều phần của VB6 hỗ trợ context sensitive, có nghĩa là khi gặp lỗi hoặc cần trợ giúp chỉ
cần ấn F1 hoặc bôi đen từ khóa rồi nhấn F1 Chương trình sẽ hiển thị thông tin liên quan đến vấn đề cần trợ giúp
Các phần context sensitive là:
• Các Windows của VB6 như Properties, Code v.v
• Các control trong Toolbox
• Các Object trên một form hoặc Object tài liệu
• Các đặc tính trong Window Properties
• Các keywords của VB6
• Các thông báo lỗi (error messages)
Ngoài ra, trong Help thường có Example là các ví dụ minh họa cách dùng cho một đối
tượng nào đó dùng tham khảo rất phù hợp
Tìm kiếm trợ giúp trên Internet
Việc tìm kiếm thông tin trên Internet là hết sức cần thiết, dù trong lĩnh vực nào Đặc biệt là trong công việc lập trình Chúng ta có thể tra cứu, tìm kiếm ví dụ, thảo luận về vấn đề mắc phải…
Một số website hữu ích:
http://msdn.microsoft.com/ - Trang chủ của Microsoft Developer Network
http://www.google.com - Trang tìm kiếm nhanh và hiệu quả
http://www.codeproject.com - Mã nguồn miễn phí và nhiều ví dụ hữu ích
Question for today!
Trang 12Bộ môn Tự động hóa Thiết kế Cầu đường 12
Học xong chương này, sinh viên phải nắm bắt được các vấn đề sau:
- Sử dụng môi trường lập trình VB để viết mã lệnh, các quy tắc, từ khóa
- Các kiểu dữ liệu trong VB
- Cách khai báo hằng, biến trong VB
- Biểu thức trong VB
- Các câu lệnh đơn cũng như các câu lệnh có cấu trúc
- Chương trình con trong VB
- Truy xuất dữ liệu, tổ chức chương trình trong VB
- Gỡ lỗi trong VB
Kiến thức có liên quan:
- Cách sử dụng môi trường phát triển của VB
II.1 QUY TẮC VIẾT MÃ LỆNH
Cũng giống như các ngôn ngữ lập trình khác, VB đưa ra những quy tắc cho người lập trình trong quá trình viết mã lệnh Người lập trình cần phải tuân theo các quy tắc này để trình biên dịch có thể dịch mã lệnh mà không phát sinh lỗi cú pháp
- Các câu lệnh phải là các dòng riêng biệt Nếu có nhiều lệnh trên cùng một dòng thì
giữa các lệnh ngăn cách nhau bằng dấu hai chấm (:) Nếu dòng lệnh quá dài, muốn ngắt lệnh thành hai dòng thì sử dựng dấu cách và dấu gạch dưới (_)
- Dòng chú thích được bắt đầu bằng (‘)
Qui ước đặt tên biến của ngôn ngữ VB cũng tương tự như các ngôn ngữ khác:
• Chỉ dùng được ký tự (hoa và thường), số, và ký tự gạch chân
• Phải bắt đầu bằng ký tự, dài không quá 255 ký tự
• Không có khoảng trống, không trùng tên từ khóa
Ví dụ:
Đúng Sai
My_Car My.Car ThisYear 1NewBoy Long_Name_Can_beUSE He&HisFather
Trang 13Bộ môn Tự động hóa Thiết kế Cầu đường 13
Các lỗi cú pháp sẽ được VBA IDE phát hiện và báo lỗi cho người lập trình ngay trong quá trình viết mã lệnh
II.2 CÁC TỪ KHÓA TRONG VB6
Từ khoá là tập hợp các từ cấu thành một ngôn ngữ lập trình Mỗi ngôn ngữ lập trình có một
bộ từ khoá riêng, dưới đây là danh sách các từ khoá trong ngôn ngữ lập trình VB6:
II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN
Kiểu dữ liệu là một tập hợp các giá trị mà một biến của kiểu có thể nhận và một tập hợp các phép toán có thể áp dụng trên các giá trị đó
Trong VB6 có rất nhiều kiểu dữ liệu khác nhau như: Boolean, Double, Integer, Object, String, Variant Từng kiểu có mục đích riêng và việc sử dụng đúng sẽ giúp chương trình chạy nhanh Chúng ta sẽ đi tìm hiểu các kiểu dữ liệu cơ bản
II.3.1 Boolean
Đặc điểm: Chỉ có 2 trạng thái: True và False
Khi chuyển từ các dữ liệu dạng số sang kiểu logic, 0 sẽ được chuyển thành FALSE còn giá trị khác sẽ được chuyển thành TRUE Khi chuyển từ kiểu logic sang kiểu số, giá trị FALSE sẽ được chuyển thành 0 còn giá trị TRUE sẽ được chuyển thành -1
Phạm vi áp dụng: các bài toán lặp, if then, thường dùng làm cờ hiệu (flags)
Trang 14Bộ môn Tự động hóa Thiết kế Cầu đường 14
II.3.2 Byte
Đặc điểm: Sử dụng 8-bit để lưu trữ giá trị, tức có thể lưu giá trị dương từ 0 đến 255
Phạm vi áp dụng: hữu ích trong việc lưu dữ liệu nhị phân
II.3.3 Integer (Kiểu nguyên)
Đặc điểm: Kiểu số nguyên, sử dụng 16-bit để lưu trữ,
-3.402823e38 đến -1.401298e-45 với số âm và từ
1.401298e-45 đến 3.402823e38 cho số dương
Phạm vi áp dụng: Sử dụng với giá trị thập phân nằm trong khoảng trên
II.3.6 Double (Kiểu thực)
Đặc điểm: Kiểu số thực, sử dụng 64-bit để lưu trữ, kiểu dữ liệu này được gọi là độ chính
xác kép
Khoảng giá trị:
-1.79769313486232e308 đến -4.94065645841247e-324 với số âm và từ
4.94065645841247e-324 đến 1.79769313486232e308 cho số dương
Phạm vi áp dụng: Khi cần tính toán với yêu cầu độ chính xác cao
II.3.7 String (Kiểu chuỗi)
Đặc điểm:
Chuỗi dữ liệu chứa từ 0 đến 65.500 ký tự Từng ký tự có khoảng giá trị từ 0 đến 255 trong
bảng ASCII
Có sẵn một số hàm liên quan đến chuỗi ví dụ: cắt chuỗi, tách chuỗi, nhập chuỗi,… Có thể
tra cứu các hàm này trong các tài liệu tham khảo như MSDN hoặc Object Browser (thư
viện Strings)
Phạm vi áp dụng: Khi cần làm việc với dữ liệu văn bản (Text)
Được sử dụng nhiều trong các bài toán quản lý, các bài toán yêu cầu nhập xuất dữ liệu
Việc dùng string cũng giúp cho các bài toán có giao diện thân thiện hơn
Ví dụ:
Private Sub Command1_Click()
Dim sText As String
Dim lTextLength As Long
Dim sChar As String
Dim bASCII As Byte
Dim x As Long
sText = " VB that la don gian!"
lTextLength = Len(sText) 'So ky tu trong sText
For x = 1 To lTextLength ‘ Lap den ky tu cuoi cung trong sText
Trang 15Bộ môn Tự động hóa Thiết kế Cầu đường 15
sChar = Mid$(sText, x, 1) 'Lay ky tu thu x trong sText
bASCII = Asc(sChar) 'Lay gia tri ASCII cua ky tu
MsgBox "Ma ASCII cua ky tu '" & sChar & "' la " & bASCII ‘Hien thi ket qua
Greeting = FirstWord & SecondWord
' Greeting bây giờ là "HelloWorld"
- Len: trả về chiều dài một chuỗi được chỉ định
Ví dụ: iLen = Len(Greeting) ' iLen bằng 8
- Left: Trích chuỗi con từ phần đầu chuỗi gốc Left (String, [length])
- Right: Trích chuỗi con từ phần đuôi chuỗi gốc Right (String, [length])
- Mid: Trích chuỗi con từ giữa chuỗi gốc Mid(String, Start As Long, [length])
Ví dụ:
Today = "24/05/2001"
StrDay = Left(Today,2) ' StrDay = "24" '
StrYear = Right(Today,4) ' StrYear = "2001" '
StrMonth = Mid(Today,4,2) ' StrMonth = "05"
- InStr: 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
Cú pháp: InStr([start,] string1, string2, [compare])
Trong đó:
Start: Xác định vị trí trong chuỗi bắt đầu việc tìm kiếm Nếu giá trị là Null thì sẽ bắt đầu từ đầu chuỗi Nếu như tham số Compare có đặc tả thì bắt buộc phải khai báo tham số Start String1: Biểu thức chuỗi để so sánh
String2: Chuỗi cần tìm
Compare: Xác định kiểu so sánh chuỗi Giá trị: vbTextCompare,
vbBinaryCompare
Ví dụ 1:
myString = "The *rain in Spain mainly "
Position = Instr(myString,"*") ' Position sẽ là 5
Nếu trong myString không có dấu "*" thì Position sẽ bằng 0
Ví dụ 2:
KeyValuePair = "BeatlesSong=Yesterday"
Pos = Instr(KeyValuePair, "=")
Key = Left(KeyValuePair, Pos-1) ‘Key= “BeatlesSong”
Value = Mid(KeyValuePair, Pos+1) ‘Key= “Yesterday”
- Replace: tìm và thay thế chuỗi
Cú pháp: Replace(Expression, find, replace[, start[, count[, compare]]])
Trong đó:
- Expression: Biểu thức chuỗi chứa chuỗi cần thay thế
- find: Chuỗi cần tìm
Trang 16Bộ môn Tự động hóa Thiết kế Cầu đường 16
- replace: Chuỗi thay thế chuỗi tìm được
- start: Tương tự như hàm InStr
- count: Xác định số lần thay thế Mặc định là 1
- compare: Kiểu so sánh chuỗi Giá trị: vbTextCompare, vbBinaryCompare
- LTrim (RTrim): cắt tất cả các khoảng trắng bên trái (bên phải của chuỗi)
- UCase: đổi chuỗi sang chuỗi gồm các ký tự là chữ hoa Cú pháp: UCase(string)
- Asc: cho mã Ascii của một ký tự
- Chr: trả về ký tự ứng với mã Ascii được chỉ định
- 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
II.3.8 Date (Kiểu thời gian)
Đặc điểm:
Dùng để lưu trữ và thao tác trên các giá trị thời gian (ngày và giờ) Để cho VB biết dữ liệu là kiểu Date ta cần đặt giữa dấu ## hoặc “”
Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel
Phạm vi áp dụng: Lưu trữ các giá trị thời gian, ngày tháng
- Hàm Now: trả về ngày giờ hiện tại
Ví dụ:
MsgBox "NOW IS " & Format (Now, "ddd dd-mmm-yyyy hh:nn:ss")
' sẽ hiển thị NOW IS Tue 05-Oct-2004 16:15:53
II.3.9 Kiểu mảng (array)
Đặc điểm:
- Mảng là một khối dữ liệu gồm các phần tử có cùng tên và kiểu dữ liệu Các phần tử trong mảng phân biệt với nhau bởi các chỉ số
- Mảng có thể có một chiều hoặc nhiều chiều
- Trong VB có hai loại biến mảng: mảng có chiều dài cố định và mảng động (chiều dài có thể thay đổi lúc thi hành)
Phạm vi áp dụng: Đôi khi chúng ta có nhiều biến tương tự nhau, thí dụ như điểm thi của 10 học sinh, nếu phải đặt tên khác nhau cho từng biến (VD: HoaMark, TaiMark, SonMark, TamMark, NgaMark, HuongMark v.v ) thì bất tiện Chúng ta có thể dùng Array để có một tên chung cho cả nhóm, rồi nói đến điểm của từng người một bằng cách dùng một con
số gọi là ArrayIndex
Việc lưu trữ dùng mảng còn giúp chúng ta xử lý dữ liệu dễ dàng hơn Ví dụ việc tổng hợp điểm của danh sách trên
II.3.8 Kiểu tự định nghĩa
Đặc điểm: Kiểu dữ liệu do người dùng định nghĩa tương tự như kiểu bản ghi (Record) trong Pascal hay kiểu cấu trúc (Struct) trong C
- Kiểu dữ liệu này gồm các trường, có thể là các kiểu dữ liệu khác nhau
Trang 17Bộ môn Tự động hóa Thiết kế Cầu đường 17
Phạm vi áp dụng: Trong các trường hợp cần lưu một giá trị có nhiều thuộc tính Ví dụ các thông số của một lỗ khoan
II.3.9 Kiểu lớp (class)
Đặc điểm: Lớp được xây dựng trong Class Module hoặc trong các thư viện có sẵn
- Lớp bao gồm:
• Các thuộc tính (Property): thực chất là các biến thành viên khai báo trong lớp đó
• Các phương thức (Method): thực chất là các chương trình con được khai báo trong
lớp - các hàm (Function) và thủ tục (Procedure) thành viên
- Ngoài ra trong VB, lớp có thể có sự kiện (Event) Sự kiện tạo ra khả năng linh động trong xây dựng quan hệ giữa đối tượng với nhau và với mô môi trường
II.3.10 Kiểu Variant
Đặc điểm: Kiểu Variant là một kiểu dữ liệu đặc biệt trong VB Biến kiểu Variant có thể chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng
Tuy Variant tiện dụng nhưng nếu Variant được dùng nhiều chỗ, trong nhiều tình huống, cần xác định rõ hiện đang là kiểu nào
Phạm vi sử dụng: Hạn chế dùng Variant vì sẽ gây lãng phí bộ nhớ và giảm tốc độ thực thi của chương trình
Một số chú ý khi dùng biến kiểu Variant:
- Nếu muốn thi hành các hàm toán học, Variant phải chứa giá trị kiểu số
- Nếu muốn nối chuỗi, dùng toán tử & thay vì toán tử +
Giá trị Empty:
- Đây là giá trị đặc biệt xuất hiện khi một biến chưa được gán trị Ta dùng hàm IsEmpty
để kiểm tra giá trị Empty
- Giá trị Empty biến mất khi có một giá trị bất kỳ được gán cho biến Variant, để trở về giá trị Empty, ta gán từ khoá Empty cho biến Variant
Giá trị Null: Biến Variant chứa giá trị Null trong trường hợp những ứng dụng cơ sở dữ
liệu thể hiện không có dữ liệu hoặc dữ liệu không xác định
Giá trị Error: Trong một biến kiểu Variant, Error là một giá trị đặc biệt cho biết đã có một
lỗi đã xảy ra bên trong thủ tục
Ví dụ:
Private Sub cmdShowDataTypes_Click()
Dim sMess As String
Dim vVariant As Variant
vVariant = "Xin chao" 'String
sMess = TypeName(vVariant) & vbCrLf ' xuống dòng & về đầu dòng
vVariant = 25 ' Integer
sMess = sMess & TypeName(vVariant) & vbCrLf
vVariant = True ' Boolean
sMess = sMess & TypeName(vVariant) & vbCrLf 'Date
vVariant = #1/1/2001# 'trong cặp dấu #
sMess = sMess & TypeName(vVariant)
MsgBox sMess
End Sub
Khi chạy chương trình kết quả là:
Trang 18Bộ môn Tự động hóa Thiết kế Cầu đường 18
II.3.11 Chuyển đổi (convert) kiểu dữ liệu
VB cung cấp một số hàm để chuyển kiểu dữ liệu của một biến từ loại này sang loại khác
Val (str): Trả về giá trị kiểu thực của một chuỗi: a= Val(“1245.43 asd”)
Nếu trong chuỗi có chứa ký tự khác số, hàm sẽ loại bỏ ký tự đó
CDbl (x):Trả về giá trị kiểu thực của chuỗi, chuỗi này phải là các số (number)
CInt (x): Trả về giá trị kiểu nguyên (Integer)
CStr (x): Trả về giá trị kiểu chuỗi
Str (x): Trả về giá trị kiểu chuỗi của một số
Question for today!
II.4 KHAI BÁO BIẾN
II.4.1 Khai báo biến với các kiểu dữ liệu thông thường
Khái niệm biến:
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
Cách khai báo
Dim <tên_biến> as <Kiểu_dữ_liệu>
- Dùng các từ khóa Public hay Private nhằm xác định phạm vi hoạt động của biến (sẽ giải thích ở phần sau)
Public <tên_biến> as <Kiểu_dữ_liệu>
Hay: Private <tên_biến> as <Kiểu_dữ_liệu>
Nếu khai báo biến không xác định kiểu dữ liệu thì biến đó có kiểu Variant
Ví dụ:
Dim sHoTen As String
Public iTuoi As Integer
Private iKetHon As Boolean
II.4.2 Khai báo hằng
- Là kiểu dữ liệu dùng lưu những giá trị không bao giờ thay đổi
Việc sử dụng kiểu hằng số giúp chúng ta hạn chế những nhầm lần Đơn cử như việc sử dụng một thông số nhiều lần trong chương trình
Trang 19Bộ môn Tự động hóa Thiết kế Cầu đường 19
[Public/ Private] Const <tên_hằng> = <giá_trị_hằng>
Ví dụ:
Const g = 9.8
Const Num As Integer = 4*5
II.4.3 Khai báo kiểu tự định nghĩa
- Khai báo các kiểu dữ liệu dạng bản ghi gồm các trường theo nhu cầu của người sử dụng
Cú pháp khai báo như sau:
[Pravite/Public] Type <tên_ kiểu>
Sau khai báo, để truy cập tới một trường của biến kiểu bản ghi, dùng toán tử (.) và cặp từ
Ví dụ: Dữ liệu về điểm đo trong khảo sát địa hình có thể được xây dựng gồm: chỉ số của
điểm (id), tên điểm (name), tọa độ x, tọa độ y, cao độ z, mã địa vật (madiavat)
Private Type diemdo ‘ Khai báo kiểu
Private Sub Command1_Click()
Dim diem as diemdo ‘ Tạo biến và gán dữ liệu
[Public/ Private/ Dim] <tên_mảng>(<các thông số về chiều>) as <tên_kiểu>
Các thông số về chiều có thể biểu diễn qua các ví dụ sau:
Dim a(1 to 4) as Integer: mảng 1 chiều chỉ số từ 1 đến 4 kiểu nguyên
Dim a(3) as Long: mảng 1 chiều chỉ số tới 3 kiểu Long
(chỉ số xuất phát mặc định là 0 hoặc được xác định thông qua khai báo Option Base )
Option Base 0 hoặc Option Base 1
Trang 20Bộ môn Tự động hóa Thiết kế Cầu đường 20
Dim a(1 to 4,2 to 6) as Double: mảng 2 chiều chỉ số từ 1 tới 4 và 2 tới 6
Dim a(2,2,3) as String: mảng 3 chiều với miền chỉ số trên tương là 2, 2 và 3
• Mảng động (mảng có kích thước thay đổi)
[Public/ Private/ Dim] <tên_mảng> () as <tên_kiểu>
Trong khai báo trên không có các thông số về chiều, thuần túy chỉ là một khai báo
- Các phần tử của mảng chưa được tạo ra (hay mảng chưa được cấp phát bộ nhớ)
- Dữ liệu của mảng chỉ được tạo ra hoặc thay đổi khi có lệnh Redim
Lệnh này có tác dụng tạo ra mảng thực sự (có kích thước và các phần tử tương ứng) hoặc thay đổi kích thước của một mảng động
Redim <tên_mảng>(<các thông số về chiều>) as <tên kiểu>
- Chú ý rằng <tên_kiểu> phải đúng như khai báo, các thông số về chiều có thể khác trước cả về số chiều và kích thước của từng chiều
- Dữ liệu mảng cũ sẽ bị, thay vào đó là phần tử của mảng mới được khởi tạo
Ví dụ:
Dim diem as diemdo
Dim a() as Long
Redim a(1 to 5) as Long
a(1) = 100: a(2) = 200 ‘a(1) và a(2) có giá trị tương ứng 100 và 200
Redim a(1 to 3, 2 to 4) as Long
‘Mảng được làm mới hoàn toàn là một mảng 2 chiều, các giá trị a(1) và a(2) không còn ý
nghĩa nữa
- Trong trường hợp muốn thay đổi kích thước của mảng mà không mất dữ liệu, dùng lệnh
ReDim với từ khóa Preserve
Tuy nhiên chỉ thay đổi được biên trên của chiều cuối cùng trong mảng Nếu thay đổi các chiều khác sẽ phát sinh lỗi
Ví dụ
Dim a() as Long
ReDim a(1 to 5) as Long
a(1) = 100: a(2) = 200
ReDim Preserve a(1 to 6) as Long
‘Thay đổi mở rộng mảng thêm một phần tử mà không ảnh hưởng đến các dữ liệu trước
a(1)vẫn có giá trị 100, a(2)=200
(Lỗi)
Một số thao tác trên mảng
- Hàm UBound trả về biên trên của một mảng
- Hàm LBound trả về biên dưới của một mảng
- Truy xuất từng phần tử trong mảng: <Tên mảng>(<Vị trí>)
- Sao chép mảng: Đối với VB6, ta có thể gán một mảng cho một mảng khác, hoặc kết quả trả về của một hàm có thể là một mảng
Ví dụ:
Sub ByteCopy (old () As Byte, New () As Byte)
New = old
End Sub
Cách này cũng chỉ áp dụng được cho mảng khai báo động
- Mảng là kết quả trả về của hàm Chẳng hạn như:
Public Function ArrayFunction (b As Byte) As Byte()
Trang 21Bộ môn Tự động hóa Thiết kế Cầu đường 21
II.4.5 Khai báo, tạo và làm việc với biến đối tượng
Khai báo và tạo biến đối tượng phải dùng thêm từ khóa New
Dim <tên_đối_tượng> as New <Tên_Lớp>
Phép gán đối tượng được thực hiện với từ khóa Set
Set <tên_đối_tượng> = <giá trị>
- Chú ý rằng nếu thực hiện khai báo một biến đối tượng như thông thường (không có từ khóa New) thì biến thực sự chưa được tạo ra Trong trường hợp ấy, sau đó phải có thao tác tạo đối tượng với các từ khóa Set và New
Dim <tên_đối_tượng > as <tên_lớp>
Set <tên_đối_tượng > = New <tên_lớp>
- Các phép toán, các toán tử có được áp dụng cho đối tượng hay không tùy thuộc vào lớp tạo ra nó
- Làm việc với một biến đối tượng tức là làm việc với các thuộc tính, phương thức và các
sự kiện của nó
Để truy cập tới các thuộc tính và phương thức của đối tượng, sử dụng toán tử (.)
<Tên_đối_tượng>.<Tên_thuộc_tính>
<Tên_đối_tượng >.<Tên_phương_thức>(Các tham số)
Sẽ cụ thể hơn trong các chương sau
II.4.6 Các chú ý khi khai báo
- Có thể khai báo nhiều biến cùng lúc:
Dim passw As String, yourName As String, firstnum As Integer,
- Nếu kiểu dữ liệu không được định nghĩa, VB sẽ tự động khai báo là kiểu Variant
- Dữ liệu kiểu chuỗi (String) có hai cách khai báo, ngoài cách thông thường, có thể khai báo độ dài của giá trị
Dim VariableName as String * n
trong đó n là số lượng ký tự mà biến có thể lưu trữ
Ví dụ:
Dim yourName as String * 10
yourName sẽ không giữ lớn hơn 10 ký tự
II.5 BIỂU THỨC
II.5.1 Các khái niệm
- Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử lý
dữ liệu
- Toán hạng: là giá trị dữ liệu (biến, hằng…)
- Biểu thức: 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 đó
II.5.2 Các loại phép toán
Các phép toán số học:
Trang 22Bộ môn Tự động hóa Thiết kế Cầu đường 22
Thao tác trên các giá trị có kiểu dữ liệu số
And TRUE And TRUE = TRUE; FALSE And FALSE = FALSE Các trường hợp khác cho kết quả FALSE
Or FALSE Or FALSE = FALSE; Các trường hợp khác cho kết quả TRUE
Trang 23Bộ môn Tự động hóa Thiết kế Cầu đường Page 1
Một số hàm toán học thông dụng
Các hàm toán học có thể tra cứu trong Object Browser (thư viện Math)
Abs (x): Hàm giá trị tuyệt đối
Exp (x): Hàm mũ cơ số tự nhiên ex
Log (x): Logarit cơ số tự nhiên
Sqr (x): lấy bình phương
Các hàm lượng giác: Cos (x), Sin (x), Tan (x)
Hàm lượng giác ngược: Atn (x) Arctg
Fix (x): Hàm lấy phần nguyên chẵn Ví dụ Fix (5.1) = 5; Fix (5.6) = 5
Int (x): Hàm lấy phần nguyên làm tròn
Round (x, num) làm tròn số thực x đến (num) chữ số thập phân
Question for today! Khai báo biến cho bài toán:
Nhập danh sách tập hợp các lỗ khoan Mỗi lỗ khoan gồm các thông số (idLoKhoan, ToaDoX,
ToaDoY, ChieuSau, SoLopDat, NguoiKhoan)
Tổng số có 30 lỗ khoan, 3 người khoan Yêu cầu tổng hợp xem mỗi người khoan bao nhiêu
lỗ, là những lỗ nào
II.6 CÁC CÂU LỆNH
Một câu lệnh (statement) xác định một công việc mà chương trình phải thực hiện để xử lý
dữ liệu đã được mô tả và khai báo Các câu lệnh được ngăn cách với nhau bởi ký tự xuống
Giả sử ta có khai báo sau:
Dim TodayTemp As Single, MinAge As Integer
Dim Sales As Single, NewSales As Single, FullName As String
Các lệnh sau gán giá trị cho các biến trên:
MinAge = 18
Sales = 200000
NewSales = Sales * 1.2
Giả sử người dùng cần nhập họ và tên vào ô nhập liệu TextBox có thuộc tính Name
là txtName, câu lệnh dưới đây sẽ lưu giá trị của ô nhập liệu vào trong biến
Trang 24Bộ môn Tự động hóa Thiết kế Cầu đường Page 2
Trang 25Bộ môn Tự động hóa Thiết kế Cầu đường Page 3
End If
VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương ứng sẽ được thi
hành Ngược lại nếu không có điều kiện nào đúng thì khối lệnh sau từ khóa Else sẽ được
thi hành
Ví dụ:
If (TheColorYouLike = vbRed) Then
MsgBox "You are a lucky person"
ElseIf (TheColorYouLike = vbGreen) Then
MsgBox "You are a hopeful person"
ElseIf (TheColorYouLike = vbBlue) Then
MsgBox "You are a brave person"
ElseIf (TheColorYouLike = vbMagenta) Then
MsgBox "You are a sad person"
Else
MsgBox "You are an average person"
End If
II.6.2 Câu lệnh lựa chọn Select Case
Trong trường hợp có quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng cấu trúc rẽ
nhánh If…Then thì đoạn lệnh không được rõ ràng, khó kiểm tra, sửa đổi khi có sai sót
Ngược lại với cấu trúc Select…Case, biểu thức điều kiện sẽ được tính toán một lần vào
đầu cấu trúc, sau đó VB sẽ so sánh kết quả với từng trường hợp (Case) Nếu bằng nó thi
hành khối lệnh trong trường hợp (Case) đó
Sơ đồ khối
Cú pháp
Select Case <biểu thức kiểm tra>
Case <Danh sách kết quả biểu thức 1>
Trang 26Bộ môn Tự động hóa Thiết kế Cầu đường Page 4
Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị Trong trường hợp có
nhiều giá trị thì mỗi giá trị cách nhau bởi dấu phẩy (,) Nếu có nhiều Case cùng thỏa điều
kiện thì khối lệnh của Case đầu tiên sẽ được thực hiện
Toán tử Is: Được dùng để so sánh <Biểu thức kiểm tra> với một biểu thức nào đó
Toán tử To: Dùng để xác lập miền giá trị của <Biểu thức kiểm tra>
Thực hiện một khối lệnh lặp theo một biến đếm với số lần lặp đã được xác định
Cú phá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, bước nhảy là những giá trị số (Integer, Single,…) Bước
nhảy có thể là âm hoặc dương Nếu bước nhảy là số âm thì điểm đầu phải lớn hơn điểm
cuối, nếu không khối lệnh sẽ không được thi hành
Khi Step không được chỉ ra, VB sẽ dùng bước nhảy mặc định là 1
Ví dụ: Tính N!
- Xây dựng giao diện
- Viết mã cho sự kiện Command1_Click
Trang 27Bộ môn Tự động hóa Thiết kế Cầu đường Page 5
Private Sub Command1_Click()
Dim i As Integer, n As Integer, Kq As Long
II.6.4 Câu lệnh lặp xác định trong một tập hợp
Thực hiện một khối lệnh lặp theo một biến chạy trong một tập hợp xác định
- 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
- 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
Ví dụ:
Dim DanhSach(1) As String
Dim HoTen As Variant
DanhSach(0) = "Tran Van A": DanhSach(1) = "Nguyen Thi B"
For Each HoTen In DanhSach
MsgBox HoTen
Next
II.6.5 Câu lệnh lặp không xác định
Thực hiện một khối lệnh với số lần lặp không định trước, theo một biểu thức điều kiện
(biểu thức điều kiện có giá trị Boolean: True hoặc False)
Kiểu 1: Lặp trong điều kiện là True
Loop While <điều kiện>
Kiểu 2: Lặp trong điều kiện là False
Trang 28Bộ môn Tự động hóa Thiết kế Cầu đường Page 6
Ví dụ minh họa:
Dim Check, Counter
Check = False: Counter = 0 ' Khởi tạo
Do While Counter < 5 ' Counter chạy từ 0 đến 4 => True
Counter = Counter + 1 ' Tăng biến đếm
MsgBox Counter ‘ Thông báo giá trị biến đếm
Loop ‘ Có thể chuyến While Counter < 5 xuống đây, lúc đó Counter sẽ chạy đến 5
Do Until Check ' Check có giá trị False
Counter = Counter + 1 ' Tăng biến đếm
If Counter = 5 Then Check= True
Loop
Để thoát khỏi vòng lặp, sử dụng câu lệnh Exit Do
II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC)
II.7.1 Khái niệm
Trong những chương trình lớn, có thể có những đoạn chương trình viết lặp đi lặp lại nhiều
lần, để tránh rườm rà và mất thời gian khi viết chương trình người ta thường phân chia
chương trình thành nhiều module, mỗi module giải quyết một công việc nào đó Các
module như vậy gọi là các chương trình con
Một tiện lợi khác của việc sử dụng chương trình con là ta có thể dễ dàng kiểm tra xác định
tính đúng đắn của nó trước khi ráp nối vào chương trình chính và do đó việc xác định sai
sót để tiến hành hiệu đính trong chương trình chính sẽ thuận lợi hơn
Trong Visual Basic, chương trình con có hai dạng là hàm (Function) và thủ tục (Sub)
Hàm khác thủ tục ở chỗ hàm trả về cho lệnh gọi một giá trị thông qua tên của nó còn thủ
tục thì không Do vậy ta chỉ dùng hàm khi và chỉ khi thoả mãn đồng thời các yêu cầu sau
đây:
- Ta muốn nhận lại một kết quả (chỉ một mà thôi) khi gọi chương trình con
- Ta cần dùng tên chương trình con (có chứa kết quả) để viết trong các biểu thức
Nếu không thỏa mãn hai điều kiện ấy thì dùng thủ tục
II.7.2 Hàm - Function
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
Cách khai báo:
[Private | Public | Static] Function <Tên hàm> ([<tham số>[As <KiểuDL>]]) [As <KiểuDL>]
<Các dòng lệnh> hay <Các khai báo>
End Function
Trong đó:
- <Tên hàm>: Tên hàm được đặt giống quy tắc tên biến, hằng,…
- <tham số>[As <KiểuDL>]: có thể có hay 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
- <KiểuDL>: 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ề kiểu Variant
Cú pháp gọi hàm: <Tên hàm>[(tham số)]
Ví dụ: Tính giai thừa N
Trang 29Bộ môn Tự động hóa Thiết kế Cầu đường Page 7
II.7.3 Thủ tục - Sub
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ố
Cách khai báo:
[Private | Public] [Static] Sub <tên thủ tục> ([<tham số>[As <Kiểu dữ liệu>]])
<Các dòng lệnh> hay <Các khai báo>
End Sub
Trong đó:
- <Tên thủ tục>: Tên được đặt giống quy tắc tên biến, hằng,…
- ([<tham số>[As <Kiểu dữ liệu>] : có thể có hay 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
Để gọi thủ tục để thực thi, có 2 cách:
<Tên thủ tục> [<Các tham số >]
Hoặc Call <Tên thủ tục> ([<Các tham số >])
Ví dụ: Thủ tục kiểm tra xem số nguyên N có phải là số nguyên tố hay không?
Sub KTraNgTo(N As Integer)
II.7.4 Truyền tham số cho chương trình con
Có hai cách truyền tham số cho chương trình con:
- ByVal – Truyền tham số theo tham trị (giá trị)
Một bản sao của biến được truyền vào chương trình con Chương trình con không làm việc
với biến mà chỉ làm việc với bản sao giá trị của biến Do đó, nếu trong chương trình con có
sự thay đổi giá trị của biến thì chỉ có bản sao bị ảnh hưởng mà không liên quan đến giá trị
của biến Trong VB, truyền tham số theo tham trị phải được chỉ rõ bằng từ khóa ByVal
Trang 30Bộ môn Tự động hóa Thiết kế Cầu đường Page 8
Print A
End Sub
Kết quả thực hiện của đoạn chương trình trên: 4 8 4
- ByRef – Truyền tham số theo tham biến (địa chỉ)
Địa chỉ của biến sẽ được truyền cho chương trình con Do đó bất kì thay đổi nào của thủ
tục trên biến sẽ tác động trực tiếp lên giá trị của biến Trong VB, truyền tham số theo tham
biến là mặc định Dùng từ khóa ByRef
Kết quả thực hiện của đoạn chương trình trên: 4 8 8
Các ví dụ tạo chương trình con đơn giản
- Cách tạo chương trình con trong VB: Tools > Add Procedure
Public Function GiaiThua(ByVal A As Integer ) As Integer
- Truyền tham số dạng mảng (Byref)
Function TrungBinhCong(X() As Integer) As Double
Dim vItem As Variant
Dim iTong As Integer
iTong = 0
For Each vItem In X
Tong = Tong + vItem
Trang 31Bộ môn Tự động hóa Thiết kế Cầu đường Page 9
Next
TrungBinhCong = Tong / UBound(X)
End Function
Private Sub Form_Load()
Dim List(1 To 5) As Integer
- Tham số có tùy chọn có hoặc không (Optional)
Function DienTichCN(X As Double , Optional Y As Variant ) As Double ‘Có thể gán Y 1 giá trị mặc định
If IsMissing (Y) Then ‘ Trường hợp không có Y
Private Sub Form_Load()
MsgBox DienTichCN(3) ‘Diện tích hình vuông
MsgBox DienTichCN(3, 4) ‘Diện tích hình chữ nhật
End Sub
II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC
II.8.1 Các khái niệm
a Module:
Một ứng dụng đơn giản có thể chỉ có một Form, lúc đó tất cả mã lệnh của ứng dụng đó
được đặt trong cửa sổ mã lệnh của Form đó (gọi là Form Module) Khi ứng dụng được
phát triển lớn lên, chúng ta có thể có thêm một số Form nữa và lúc này khả năng lặp đi lặp
lại nhiều lần của một đoạn mã lệnh trong nhiều Form khác nhau là rất lớn Để tránh việc
lặp đi lặp lại trên, ta tạo ra một Module riêng rẽ chứa các chương trình con được dùng
chung Visual Basic cho phép 3 loại Module:
Module Form: đi kèm với mỗi một Form là một module của Form đó để chứa mã lệnh
của Form này Với mỗi điều khiển trên Form, module Form chứa các chương trình con và
chúng sẵn sàng được thực thi để đáp ứng lại các sự kiện mà người sử dụng ứng dụng tác
động trên điều khiển Module Form được lưu trong máy tính dưới dạng các tập tin có đuôi
là *.frm
Module chuẩn (Standard module): Mã lệnh không thuộc về bất cứ một Form hay một
điều khiển nào sẽ được đặt trong một module đặc biệt gọi là module chuẩn (được lưu với
đuôi *.bas) Các chương trình con được lặp đi lặp lại để đáp ứng các sự kiện khác nhau
của các điều khiển khác nhau thường được đặt trong module chuẩn
Module lớp (Class module): được sử dụng để tạo các đối tượng Các đối tượng sẽ có các
thuộc tính và phương thức của lớp mà nó tạo ra (Class module được lưu với đuôi *.cls)
b Phạm vi của biến(scope): xác định biến có thể sử dụng trong phạm vi nào Một biến sẽ
thuộc một trong 3 loại phạm vi:
Trang 32Bộ môn Tự động hóa Thiết kế Cầu đường Page 10
Phạm vi biến cục bộ
Phạm vi biến module
Phạm vi biến toàn cục
II.8.2 Biến toàn cục
Khái niệm: Biến toàn cục 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>]
II.8.3 Biến cục bộ
Khái niệm: Biến cục bộ là biến chỉ có hiệu lực trong những khối chương trình mà chúng
được định nghĩa
Khai báo: Dim <Tên biến> [As <Kiểu dữ liệu>]
Lưu ý: Biến cục bộ được định nghĩa bằng từ khóa Dim sẽ kết thúc ngay khi việc thi hành
thủ tục kết thúc
II.8.4 Biến module
Khái niệm: Biến Module là biến được định nghĩa trong phần khai báo
(General|Declaration) của Module và mặc nhiên phạm vi hoạt động của nó là toàn bộ
Module ấy
Khai báo: Biến Module được khai báo bằng từ khóa Dim hay Private & đặt trong phần
khai báo của Module
Ví dụ: Private Num As Integer
Tuy nhiên, các biến Module này có thể được sử dụng bởi các khối chương trình khác trong
các Module khác Muốn thế chúng phải được khai báo là Public trong phân Khai báo
(General|Declaration) của Module
Ví dụ: Public Num As Integer
Lưu ý: Không thể khai báo biến với từ khóa là Public trong chương trình con
II.9 GỠ LỖI TRONG VISUAL BASIC (Debug)
Các thao tác bẫy các lỗi thực thi của chương trình là cần thiết đối với các ngôn ngữ lập
trình Người lập trình khó kiểm soát hết các tình huống có thể gây ra lỗi Chẳng hạn người
ta khó có thể kiểm tra chặt chẽ việc người dùng đang chép dữ liệu từ đĩa mềm (hay CD)
khi chúng không có trong ổ đĩa Nếu có các thao tác bẫy lỗi ở đây thì tiện cho người lập
trình rất nhiều
Để tiện việc debug, ta dùng Debug Toolbar: View | Toolbars | Debug
VB6 IDE sẽ hiển thị Debug Toolbar như sau:
Trang 33Bộ môn Tự động hóa Thiết kế Cầu đường Page 11
2.9.1 Xử lý lỗi lúc RunTime
Khi EXE của một chương trình viết bằng VB6 đang chạy, nếu gặp Error, nó sẽ hiển thị
một Error Dialog cho biết lý do vắn tắt Nếu bạn chạy chương trình trong VB6 IDE, ta có
thể đến vị trí lỗi và sửa nó
Visual Basic cũng cung cấp cho ta một số cấu trúc để bẫy các lỗi đang thực thi
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>
Ý nghĩa: <Tên nhãn>: là một tên được đặt theo quy tắc của một tên biến
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 đó, chương trình sẽ tự động nhảy đến đoạn chương trình định nghĩa 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 đó, chương trình sẽ tự động bỏ qua câu lệnh bị lỗi và thực thi câu lệnh kế tiếp
2.9.2 Dùng khai báo Option Explicit
Chúng ta thường nhìn thấy dòng chữ Option Explicit ở dòng trên cùng của các đoạn mã
VB Vậy tại sao lại có nó và nó có tác dụng gì?
Khai báo Option Explicit yêu cầu bạn phải khai báo các biến trước khi sử dụng Việc này
giúp ta có thế bảo đảm chúng ta sẽ không bị sai tên một biến nào cả
Ví dụ:
Private Sub Command1_Click()
Dim sMississippi As String
sMississipi = "Hello" '< Note the missing "p"
MsgBox sMississippi
End Sub
So sánh 2 trường hợp có hoặc không có Option Explicit
Thêm nữa việc sử dụng Option Explicit là rất quan trọng vì nếu không khai báo biến trước,
VB sẽ mặc định kiểu của biến đó là Variant Như vậy khi chạy chương trình sẽ chiếm
nhiều bộ nhớ hơn, chậm hơn
2.9.3 Dùng Breakpoints
Breakpoint làm chương trình ngừng lại ở vị trí mà ta muốn trong code, tiếp đó ta có thể
cho chương trình chạy từng bước và ta có thể kiểm tra các biến xem chúng làm việc có
đúng không
Để sử dụng Breakpoint chọn đoạn cần kiểm tra rồi click bên trái của hàng code
Trang 34Bộ môn Tự động hóa Thiết kế Cầu đường Page 12
Một cách khác để đặt một breakpoint là đưa con trỏ soạn thảo đến dòng cần đặt rồi chọn F9
để tắt mở Breakpoint
Lúc chương trình đang dừng, ta có thể xem trị số của một biến bằng cách để con trỏ trên
biến đó, giá trị của biến sẽ hiện ra như hình dưới:
Muốn hủy bỏ tất cả breakpoints: Debug | Clear All Breakpoints
2.9.4 Dùng Immediate Window
Immediate Window cho phép ta thực thi những câu lệnh VB trong khi chương trình đang
dừng
Ví dụ: Dùng Print để hiển thị trị số của một biến hay kết quả của một Function, gọi một
Sub hay thay đổi trị số một biến trước khi tiếp tục cho chương trình chạy lại
Thay vì dùng "Print ICounter" ta có thể dùng "? ICounter"
2.9.5 Dùng Watch Window
Watch Window giúp chúng ta kiểm soát biến hay một biểu thức nào đó trong quá trình
thực thi
Cửa sổ Watch: View | Watch Window
Để thêm một Watch: Debug | Add Watch
Có 3 kiểu giám sát:
Watch Expression – Code sẽ không dừng lại nhưng khi ta chạy chương trình từng bước,
giá trị của biểu thức sẽ hiển thị trong cửa sổ Watch
Break When Value Is True - Visual Basic sẽ dừng việc thực thi khi biểu thức có giá trị
True (Giá trị khác 0)
Break When Value Changes - Visual Basic sẽ dừng lại khi giá trị của biểu thức thay đổi
2.9.2 Dùng Comment (chú thích)
Lúc viết mã chương trình cần thêm Comment đầy đủ để bất cứ khi nào đọc lại đoạn mã đó
ta có thể hiểu ngay mục đích của nó
Ta chỉ nên viết chú thích ở những điểm nào khác thường, khó hiểu nhằm giải thích tại sao
lại làm như thế
Bên cạnh đó nếu là một lập trình viên chuyên nghiệp, gần như chắc chắn code bạn viết sẽ
được người khác đọc và bảo trì Do đó code phải đơn giản, dễ hiểu và có những chú thích
cụ thể
Trong VB, để viết một dòng chú thích ta sử dụng ký tự “’” ở đầu dòng
Trang 35Bộ môn Tự động hóa Thiết kế Cầu đường Page 13
II.10 TỔ CHỨC CHƯƠNG TRÌNH
Với những chương trình phức tạp, việc xây dựng chương trình theo cấu trúc để có thể quản
lý và bảo trì dễ dàng là hết sức cần thiết Điều đó được thực hiện bằng cách chia thành các
khối chức năng, trong các khối này sẽ có các chương trình con, các biến, hằng liên quan
đến chức năng ấy Trong VB, các khối chức năng đó được tổ chức thành các Module
Ví dụ để xây dựng một chương trình tính toán và kiểm toán một dầm giản đơn, có thể thực
hiện theo một cấu trúc thông thường như sau:
- Nhập, lưu trữ và xử lý dữ liệu về hình học
- Nhập, lưu trữ và xử lý dữ liệu về vật liệu
- Nhập, lưu trữ và xử lý dữ liệu về cáp DƯL
- Tính toán tải trọng và tổ hợp tải trọng
- Phân tích kết cấu: tính toán nội lực và biến dạng
- Kiểm toán
- Xuất kết quả
Tổ chức các khối chức năng thể hiện bằng sơ đồ như sau:
Nhập dữ liệu
Kết thúc Module hiển thị kết quả
Trang 36Bộ môn Tự động hóa Thiết kế Cầu đường Page 14
CHƯƠNG III
FORM VÀ MỘT SỐ ĐIỀU KHIỂN THÔNG DỤNG
Mục tiêu:
Chương này giới thiệu về một số điều khiển cơ bản để tạo nên giao diện
cho các ứng dụng cũng như một số khái niệm trong lập trình với VB;
Các điều khiển dùng trong việc tạo giao diện cho ứng dụng chạy trên
Windows Việc nắm bắt được các vấn đề này làm cho công việc tạo giao diện cho
ứng dụng được nhanh chóng
Học xong chương này, sinh viên phải nắm bắt được các vấn đề sau:
- Khái niệm về điều khiển, thuộc tính, phương thức, sự kiện, lập trình sự
kiện…
- Quy tắc đặt tên điều khiển trong VB
- Sử dụng Form trong thiết kế giao diện
- Sử dụng các điều khiển thông dụng
Kiến thức có liên quan:
- Cách thức sử dụng môi trường phát triển VB
- Các cấu trúc lập trình trong VB
- Cách thức xử lý sự kiện
III.1 Các khái niệm liên quan
Điều khiển (Controls):
Các thành phần có sẵn để người lập trình tạo giao diện tương tác với người dùng Mỗi điều
khiển thực chất là một đối tượng, do vậy nó sẽ có một số điểm đặc trưng cho đối tượng,
chẳng hạn như các thuộc tính, các phương thức & các sự kiện
Thuộc tính:
Các đặc trưng của một điều khiển tạo nên dáng vẻ của điều khiển đó
Phương thức:
Các điều khiển có thể thực thi một số tác vụ nào đó, các tác vụ này được định nghĩa sẵn
bên trong các phương thức (còn gọi là chương trình con: hàm & thủ tục), người lập trình có
thể gọi thực thi các phương thức này nếu cần
Sự kiện:
Là hành động của người dùng tác động lên ứng dụng đang thực thi
Ví dụ: - Nhấn phím bất kỳ trên bàn phím
- Nhấp chuột
Các thành phần giao diện có khả năng đáp ứng lại sự kiện Chẳng hạn khi chúng ta nhấp
chuột vào button, lúc đó button nhận biết được sự kiện này; hay như textbox nhận biết
được sự kiện bàn phím tác động lên nó
Một ứng dụng trên Windows thường được thực hiện nhờ vào việc đáp ứng lại các sự kiện
của người dùng
Trang 37Bộ môn Tự động hóa Thiết kế Cầu đường Page 15
Lập trình sự kiện:
Các thành phần giao diện có khả năng nhận biết được các sự kiện từ phía người dùng Tuy
nhiên khả năng đáp ứng lại các sự kiện được thực hiện bởi người lập trình
Khi một thành phần giao diện được sử dụng, người lập trình phải xác định chính xác hành
động của thành phần giao diện đó để đáp ứng lại một sự kiện cụ thể Lúc đó người lập trình
phải viết đoạn mã lệnh mà đoạn mã lệnh này sẽ được thực thi khi sự kiện xảy ra
Chẳng hạn, trong ứng dụng Paint của Windows; khi người sử dụng nhấp chuột vào nút vẽ
hình elip sau đó dùng chuột vẽ nó trên cửa sổ vẽ, một hình elip được vẽ ra
Trong lập trình sự kiện, một ứng dụng được xây dựng là một chuỗi các đáp ứng lại sự kiện
Tất cả các hành động của ứng dụng là đáp ứng lại các sự kiện Do vậy người lập trình cần
phải xác định các hành động cần thiết của ứng dụng; phân loại chúng; sau đó viết các đoạn
- Mã lệnh cho sự kiện Click của In giấy - -
- Khi người dùng không tác động vào ứng dụng, ứng dụng không làm gì cả
- Khi người dùng nhập dữ liệu vào các ô nhập Họ và tên, Địa chỉ; sự kiện bàn phím xảy ra
trên các ô nhập Tuy nhiên, ứng dụng vẫn không làm gì cả vì không có đoạn mã lệnh nào
đáp ứng các sự kiện này
- Khi người dùng nhấp nút chọn Ghi đĩa, ứng dụng tìm kiếm trong mã lệnh của mình thấy
có đoạn mã lệnh đáp ứng lại sự kiện này; lúc đó đoạn mã lệnh được thực thi
- Tương tự như vậy đối với nút chọn In giấy
Cách xác lập các thuộc tính & các phương thức trong chương trình
<Thuộc tính Name của điều khiển>.<Tên thuộc tính>
<Thuộc tính Name của điều khiển>.<Tên phương thức>[(<Các tham số>)]
Tên điều khiển (thuộc tính Name)
Đây là thuộc tính xác định tên của điều khiển trong ứng dụng Tên này được đặt theo quy
tắc:
o Tên có thể dài từ 1 - 40 ký tự
o Tên phải bắt đầu với ký tự chữ, có thể chữ hoa hay thường
o Sau ký tự đầu tiên, tên có thể chứa ký tự, số hay dấu gạch dưới
Trang 38Bộ môn Tự động hóa Thiết kế Cầu đường Page 16
III.2 Form
III.2.1 Khái niệm
Chương trình ứng dụng giao tiếp với người dùng thông qua các Form; các điều khiển
(Controls) được đặt lên bên trên giúp cho Form thực hiện được công việc giao tiếp với
người dùng
Form là các cửa số được lập trình nhằm hiển thị dữ liệu và nhận thông tin từ phía người
dùng
III.2.2 Thuộc tính
o Name: thuộc tính này như là một định danh nhằm xác định tên của Form là gì? Sử dụng
thuộc tính này để truy xuất đến các thuộc tính khác cùng với phương thức có thể thao tác
được trên Form
o Caption: chuỗi hiển thị trên thanh tiêu đề của Form
o Icon: Biểu tượng được dùng trong thanh tiêu đề của Form
o WindowState: xác định Form sẽ có kích thước bình thường (Normal=0), hay
Minimized (=1), Maximized =(2)
o Font: xác lập Font cho Form 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 Form, thuộc tính Font của điều khiển ấy sẽ tự động
trở nên giống y của Form
III.2.3 Sự kiện
O Form_Initialize: Sự kiện này xảy ra trước nhất và chỉ một lần khi Form được tạo ra
O Form_Load: Sự kiện này xảy ra mỗi lần Form được gọi hiển thị Thường dùng sự kiện
Form_Load để khởi tạo các biến, điều khiển
o Form_Activate: Mỗi lần một Form được kích hoạt (active) thì một sự kiện Activate
phát sinh Ta thường dùng sự kiện này để cập nhật lại giá trị các điều khiển trên Form
o Form_QueryUnload: Khi người sử dụng chương trình nhấp chuột vào nút X phía trên
bên phải để đóng Form thì một sự kiện QueryUnload được sinh ra Đoạn chương trình con
dưới đây mô tả thủ tục xử lý sự kiện QueryUnload
Ví dụ: Ta có thể hủy hành động đóng Form bằng cách đặt Cancel = 1
o Form_Resize: Sự kiện này xảy ra mỗi khi Form thay đổi kích thước
III.3 Nhãn (Label)
III.3.1 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 Form
III.3.2 Thuộc tính
o Caption: Thuộc tính quy định chuỗi ký tự hiển thị khi ta tạo một điều khiển nhãn
o Font, Fore Color: Quy định kiểu chữ, kích thước, màu hiển thị
o BackStyle, BackColor: 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
III.3.3 Sự kiện
o Change: Xảy ra mỗi khi nhãn thay đổi giá trị
o Click: Mỗi khi nhãn được chuột nhấp lên, sự kiện này xảy ra
o DblClick: Xảy ra khi người sử dụng nhấp đúp chuột lên điều khiển nhãn
Trang 39Bộ môn Tự động hóa Thiết kế Cầu đường Page 17
III.4 Khung (Frame)
Khung là một điều khiển giúp việc bố trí giao diện của Form rõ ràng hơn Thông thường
các điều khiển cùng phục vụ cho một công việc nào đó sẽ được đặt trong một khung nhằm
làm nổi bật vai trò của chúng
Khung cũng có các thuộc tính và sự kiện thông dụng như của điều khiển nhãn như: Name,
Caption, Click, DblClick
III.3 Nút lệnh (CommandButton)
III.3.1 Khái niệm
Nút lệnh là một điều khiển dùng để bắt đầu, ngắt hoặc kết thúc một quá trình Khi nút lệnh
được chọn thì nó trông như được nhấn xuống, do đó nút lệnh còn được gọi là nút nhấn
(Push Button) Người sử dụng luôn có thể chọn một nút lệnh nào đó bằng cách nhấn chuột
o Enabled: Trong một Form, có thể có nhiều nút lệnh để thực hiện nhiều công việc khác
nhau và tại một thời điểm nào đó ta chỉ được phép thực hiện một số công việc Nếu giá trị
thuộc tính Enabled là False thì nút lệnh đó không có tác dụng Giá trị mặc định của thuộc
tính này là True Ta có thể thay đổi giá trị của thuộc tính tại thời điểm chạy ứng dụng
o 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
người sử dụng dùng chuột dừng chuột trên nút nhấn
o Font, Fore Color: Quy định kiểu chữ, kích thước, màu hiển thị
III.3.3 Sự kiện
o Click: đây là sự kiện thường xảy ra với nút lệnh Mỗi khi một nút lệnh được chọn, sự
kiện này được kích hoạt Do đó, người sử dụng sẽ viết mã các lệnh để đáp ứng lại sự kiện
này
III.4 Ô nhập dữ liệu (TextBox)
III.3.1 Khái niệm
Ô nhập liệu là một điều khiển cho phép nhận thông tin do người dùng nhập vào Đối với ô
nhập liệu ta cũng có thể dùng để hiển thị thông tin, thông tin này được đưa vào tại thời
điểm thiết kế hay thậm chí ở thời điểm thực thi ứng dụng
Trang 40Bộ môn Tự động hóa Thiết kế Cầu đường Page 18
III.3.2 Thuộc tính
o MaxLength: Thuộc tính quy định số ký tự tối đa có thể nhập vào ô nhập liệu Nếu số ký
tự nhập vào vượt quá số ký tự tối đa thì chỉ có đúng số ký tự tối đa được ghi nhận vào
trong thuộc tính Text
o 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
Ví dụ: MsgBox Text1.Text
Đoạn mã này viết trong sự kiện Click của nút lệnh OK Cho phép hộp thông báo hiển thị
nội dung do người dùng nhập vào ô nhập liệu
o Locked: Thuộc tính cho phép người dùng thay đổi nội dung của ô nhập liệu được hay
không? Nhận 2 giá trị True hoặc False Nếu False thì người dùng có thể thay đổi nội dung
của ô nhập liệu Mặc định là False
o PasswordChar: Thuộc tính này quy định cách hiển thị thông tin do người dùng nhập
vào Chẳng hạn, nếu ta nhập vào giá trị thuộc tính này là * thì các ký tự nhập vào điều hiển
thị bởi dấu * Thuộc tính này thường được dùng trong trường hợp thông tin nhập vào cần
được che giấu Ví dụ mật khẩu đăng nhập
o Multiline: Thuộc tính quy định ô nhập liệu có được hiển thị thông tin dưới dạng nhiều
hàng hay không, nếu là True thì ô nhập liệu cho phép nhiều hàng
o Font, Fore Color: Quy định kiểu chữ, kích thước, màu hiển thị
o SelLength: Trả về hoặc gán số lượng ký tự được chọn
o SelStart: Trả về hoặc xác định điểm bắt đầu của chuỗi được chọn Đây là vị trí bắt đầu
chèn một chuỗi mới trong trường hợp không có đánh dấu chọn chuỗi
o SelText: Trả về chuỗi được chọn hoặc thay thế chuỗi được chọn bằng chuỗi Chuỗi trả
về sẽ là rỗng nếu như không đánh dấu chọn chuỗi nào
Ba thuộc tính SelLength, SelStart, SelText chỉ có tác dụng tại thời điểm chạy ứng dụng
III.3.3 Sự kiện
o KeyPress: xảy ra khi người sử dụng chương trình nhấn một phím Đối với điều khiển
TextBox, ta 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 của phím vừa nhấn, dạng số có giá trị từ 0 đến 255
Trong ví dụ dưới đây, TextBox Text1 sẽ chỉ nhận biết các phím là số (0 - 9), không nhận
biết các phím khác:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then ‘ Mã Ascii của 0 là 48, của 9 là 57
KeyAscii = 0
End If
End Sub
o 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 Trong ví dụ dưới đây, ta hiển thị tên các
phím chức năng mà người sử dụng chương trình nhấn vào:
Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode >= 112) And (KeyCode <= 123) Then
MsgBox "Ban vua nhan phim chuc nang: F" & Trim(Str(KeyCode -
111))
EndIf
End Sub