Ví dụ mã lệnh sau tương đương với việc người dùng chọn OptionButton tên là optDAmoi optDAmoi.Value=True Hộp danh sách ListBox ListBox cho phép liệt kê một danh sách các giá trị để ngườ
Trang 1CHƯƠNG I I: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
73
Dim tong As Double
tong = 0
Dim buocnhay As Long ' buoc nhay cua bien chay
If chkChonsochan.Value Then ‘ xet lua chon chi tinh tong so chan buocnhay = 2
Else
buocnhay = 1
End If
For i = 0 To so Step buocnhay
tong = tong + i
Next
lblKetqua.Caption = "Ket qua: " & Str(tong) ‘ hien thi ket qua End Sub
Nút tuỳ chọn (OptionButton)
OptionButton thường được dùng để yêu cầu người dùng chọn một trong các thông tin được liệt
kê sẵn Để tạo nhóm các OptionButton, ta có thể đặt chúng trong một điều khiển khung (Frame) hoặc đặt chúng trên UserForm
Để thiết lập trạng thái chọn hay không chọn cho OptionButton, sử dụng thuộc tính Value, thuộc tính này có kiểu Boolean Nếu giá trị của nó là True thì có nghĩa là OptionButton đó được chọn, còn nếu giá trị là False thì OptionButton đó không được chọn Ví dụ mã lệnh sau tương đương với việc người dùng chọn OptionButton tên là optDAmoi
optDAmoi.Value=True
Hộp danh sách (ListBox)
ListBox cho phép liệt kê một danh sách các giá trị để người dùng có thể quan sát và lựa chọn một hoặc một vài giá trị trong danh sách này
Mỗi giá trị trong ListBox luôn có chỉ số (Index) và nội dung (Text)
Ø Thuộc tính:
List Trả về danh sách các giá trị trong điều khiển Tham khảo Object Browser ListCount Trả về số lượng các giá trị trong danh sách Kiểu Long
ListIndex Trả về chỉ số của giá trị được chọn trong danh sách Kiểu Variant
Hai OptionButton phục vụ
cho việc lựa chọn loại hình
dự án Người dùng chỉ có thể chọn một trong hai điều khiển này
Trang 274
Mã lệnh cho sự kiện Initialize (sự kiện này được tự động gọi khi chương trình nạp UserForm vào bộ nhớ của máy tính) của UserForm như sau:
Private Sub UserForm_Initialize()
lstDsMc.AddItem "Mat cat dau", 0
lstDsMc.AddItem "Mat cat L/4", 1
lstDsMc.AddItem "Mat cat L/2", 2
lstDsMc.AddItem "Mat cat 3L/4", 3
lstDsMc.AddItem "Mat cat cuoi", 4
End Sub
GỢI Ý Phương thức AddItem có hai tham số đều là tham số tuỳ chọn: tham số thứ nhất
là nội dung của phần tử, tham số thứ hai là vị trí chèn phần tử trong danh sách
Kết quả chạy chương trình như sau:
UserForm: usfMc
ListBox: lstDsMc
Yêu cầu: khi chương trình hoạt động, trong ListBox sẽ có một danh sách các mặt cắt được thống kê ra.
Trang 3CHƯƠNG I I: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
75
Để biết người dùng đã lựa chọn phần tử nào trong ListBox, viết mã lệnh cho sự kiện Click của ListBox như sau:
Private Sub lstDsMc_Click()
‘Hiển thị giá trị được chọn lên tiêu đề của UserForm
Me.Caption = lstDsMc.Text
End Sub
Kết quả khi người dùng chọn một giá trị trong ListBox:
Hộp danh sách tổ hợp (ComboBox)
Tương tự như ListBox, nhưng danh sách các giá trị được thể hiện theo kiểu hiện ra đầy đủ khi người dùng kích chuột vào Ngoài ra điều khiển này còn cho phép người dùng nhập giá trị cần tìm vào, điều này giúp cho việc lựa chọn được nhanh hơn khi người dùng biết tên giá trị cần chọn trong danh sách và chiều dài của danh sách lại quá lớn
Trang 476
Khung (Frame)
Frame cho phép nhóm các điều khiển trên UserForm lại theo chủ đề, giúp cho việc trình bày trên UserForm được rõ ràng và giúp cho người dùng dễ sử dụng chương trình Frame còn được dùng để tập hợp các OptionButton thành một nhóm
Khi tạo nhóm điều khiển trong Frame, nên tạo Frame trước rồi mới tạo các điều khiển thành phần trong nó (khi đó các điều khiển tạo sau sẽ được gắn và trong Frame)
Hình ảnh (Image)
Image cho phép hiển thị hình ảnh trên một vùng của UserForm Sử dụng điều khiển này giúp cho việc minh họa dữ liệu cần nhập trở nên rõ ràng và dễ hình dung
Để chèn hình ảnh vào trong điều khiển, sử dụng thuộc tính Picture của nó
Frame nhóm các
điều khiển phục
vụ việc nhập dữ liệu cho các nhóm vật liệu khác nhau
Trang 5CHƯƠNG I I: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
77
12 Các hộp thoại thông dụng
12.1 Hộp thông điệp (Message Box – MsgBox)
MsgBox được sử dụng để nhắc nhở, thông báo hoặc cảnh báo người dùng MsgBox có thể được gọi theo kiểu thủ tục (không có giá trị trả về), hoặc theo kiểu hàm (giá trị trả về là nút lệnh được người dùng chọn)
Cú pháp gọi MsgBox như sau:
Ø Dạng thủ tục:
MsgBox Prompt, [Buttons], [Title]
Ø Dạng hàm
MsgBox(Prompt, [Buttons], [Title])
(Giá trị trả về của hàm có kiểu VbMsgBoxResult – tham khảo trong Object Browser)
Tham số Mô tả
Prompt Kiểu String Nội dung dòng nhắc trong MsgBox
Buttons Kiểu VbMsgBoxStyle (tham khảo trong Object Browser) Kiểu hiển thị biểu tượng và
nút lệnh trong MsgBox
Title Kiểu String Nội dung dòng tiêu đề của MsgBox
Ví dụ: MsgBox được gọi với mã lệnh sau:
MsgBox "Bạn có muốn thoát khỏi chương trình không", vbCritical Or _ vbYesNo, "Thoát khỏi chương trình"
Trang 678
Cú pháp gọi InputBox thông thường như sau:
InputBox(Prompt, [Title], [Default], [XPos], [YPos])
Tham số Mô tả
Prompt Kiểu String Nội dung dòng nhắc
Title Kiểu String Nội dung tiêu đề
Default Kiểu Variant Giá trị mặc định hiển thị trong InputBox
XPos, YPos Kiểu Double Toạ độ góc trái trên của InputBox khi hiển thị ra màn hình
Đoạn mã sau sẽ minh hoạ cách thức gọi InputBox:
Dim LngSodiemMax As Long
LngSodiemMax = _
Val(InputBox("Nhập số lượng điểm tối đa (số nguyên dương)", _
"Số điểm tối đa", "100000"))
Nếu người dùng bấm nút OK thì giá trị trả về của hàm InputBox là một chuỗi có giá trị
“100000”, còn nếu bấm nút Cancel thì giá trị trả về là một chuỗi rỗng
12.3 Hộp thoại dựa trên điều khiển Common Dialog
Điều khiển Common Dialog cho phép hiển thị các hộp thoại sau:
Ø Hộp thoại Open, Save: phục vụ thao tác mở và ghi tập tin một cách trực quan
Ø Hộp thoại Color: phục vụ thao tác lựa chọn màu
Ø Hộp thoại Font: phục vụ thao tác lựa chọn font chữ
Ø Hộp thoại Print: phục vụ thao tác in ấn
Trang 7CHƯƠNG I I: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
79
Để đưa điều khiển này vào trong hộp công cụ điều khiển (Control Toolbox) chọn menu Tools
Ö Additional Controls, sau đó chọn Microsoft Common Dialog Control
Ø Các thuộc tính của điều khiển Common Dialog
DialogTitle Tiêu đề của hộp thoại Kiểu String FileName Trả về đường dẫn và tên của file được chọn - Hộp thoại Open,
FileTitle Trả về tên của file được chọn (không chứa đường dẫn) - Hộp
Filter Mô tả các kiểu file sẽ được hiển thị trong hộp thoại - Hộp thoại
FilterIndex Kiểu file mặc định sẽ được hiển thị trong hộp thoại - Hộp thoại
DefaultExt Phần mở rộng mặc định được gắn trong hộp thoại (khi người
dùng không chọn mà nhập text vào trong phần tên file) - hộp thoại Open, Save
Kiểu String
InitDir Đường dẫn khởi tạo trong hộp thoại - Hộp thoại Open, Save Kiểu String CancelError Qui định có phát sinh lỗi hay không khi người dùng chọn nút
Color Trả về màu được chọn trong hộp thoại – Hộp thoại Color Tham khảo
Object Browser
Ø Các phương thức của điều khiển Common Dialog
ShowOpen Hiển thị hộp thoại mở file (Open) Tham khảo trong Object
Browser hoặc Help ShowSave Hiển thị hộp thoại ghi file (Save)
ShowColor Hiển thị hộp thoại chọn màu (Color)
ShowFont Hiển thị hộp thoại chọn font chữ (Font)
Trang 880
Yêu cầu:
Ø Người dùng bấm nút Open Path để lấy về đường dẫn của một file sau đó hiển thị nó trên điều khiển lbPath
Ø Người dùng chọn nút Select Color để đổi màu của UserForm
Mã lệnh tham khảo như sau:
Mã lệnh với thủ tục sự kiện Click của cmdOpen
Private Sub cmdOpen_Click()
Dim strPath As String ' Xau luu tru duong dan cua file duoc chon
Dim strFilter As String ' Xau bieu dien cac kieu file hien thi
strFilter = "App(*.exe)|*.exe|Text(*.txt)|*.txt|All files (*.*)|*.*" With cmDlg
.DialogTitle = "Chon file"
.InitDir = "C:\Program Files" ' duong dan mac dinh
.Filter = strFilter
.ShowOpen
strPath = Filename ' lay ve ten day du cua file duoc chon
End With
lbPath.Caption = strPath
End Sub
Mã lệnh với thủ tục sự kiện Click của cmdColor
Private Sub cmdColor_Click()
Dim lngColor As Long ‘ bien luu tru mau duoc chon
With cmDlg
.ShowColor
lngColor = color ‘ lay ve mau nguoi dung chon trong hop thoai End With
Me.BackColor = lngColor
End Sub
Command Button
Name: cmdOpen
Command Button Name: cmdColor
Trang 9CHƯƠNG I I: CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
81
13 Lập trình xử lý tập tin
Sử lý tập tin là một nhu cầu không thể thiếu khi xây dựng phần mềm ứng dụng, bởi hầu hết các loại thông tin trên máy tính đều được lưu trữ trong các tập tin khác nhau Trong các phần mềm ứng dụng đang được sử dụng, dữ liệu đầu vào của chúng được cung cấp dưới hai hình thức:
Ø Nhập trực tiếp từ bàn phím bởi người sử dụng: cách này chỉ phù hợp đối với lượng số liệu không nhiều
Ø Nhập từ tập tin dữ liệu, ví dụ như để dựng được bản đồ số (để thiết kế đường ôtô trên máy tính) thì số liệu về các điểm đo toàn đạc khá nhiều (có thể là vài nghìn điểm đo) và thường được cung cấp dưới dạng các tập tin văn bản
Việc nhập dữ liệu từ tập tin làm cho mức độ tự động hóa được nâng cao hơn, cho phép các phần mềm ứng dụng có thể kết nối được với nhau thông qua hình thức truyền dữ liệu Ngoài ra,
để lưu lại thông tin hay kết quả sau mỗi phiên làm việc với phần mềm ứng dụng, thì việc sử dụng tập tin làm nơi lưu trữ là phổ biến nhất Các số liệu nhập vào cũng như các kết quả tính toán của phần mềm sẽ được lưu lại vào một hay nhiều tập tin và chúng sẽ được gọi lại trong phiên làm việc tiếp theo
Để có thể xây dựng chương trình có khả năng nhập/xuất dữ liệu từ tập tin, thì người lập trình cần phải nắm được các nội dung sau:
Ø Kiểu của tập tin: là cách thức tổ chức dữ liệu trong tập tin đó Hiện nay có vô số các định dạng cho tập tin bởi người dùng có thể tự do định nghĩa Kiểu định dạng phổ biến nhất dùng để trao đổi dữ liệu là tập tin văn bản (thường có phần mở rộng là TXT, CSV) Với định dạng này ta có thể xem nội dung của tập tin bằng các chương trình soạn thảo đơn giản như Notepad.exe của Windows
Ø Thao tác lên tập tin: là những thao tác nhằm biến đổi nội dung hoặc chính tập tin đó cho phù hợp với mục đích của người dùng Những thao tác này được thực hiện theo một trình
tự nhất định với các chương trình con chuyên trách cho từng nhiệm vụ Các thao tác cơ bản bao gồm:
Đọc dữ liệu (Input) từ tập tin vào trong chương trình
Ghi dữ liệu (Output) từ chương trình ra tập tin
Tìm kiếm dữ liệu trong tập tin: đọc dữ liệu có chọn lọc
Tạo mới tập tin: tạo ra tập tin trên đĩa để ghi dữ liệu lên nó
Xóa tập tin khi không còn dùng đến nó nữa
Di chuyển vị trí (Move) của tập tin từ nơi này đến nơi khác
Tạo bản sao (Copy) cho tập tin: tạo một tập tin thứ hai giống hệt tập tin gốc về nội dung nhưng tên hoặc vị trí lưu trữ của tập tin bản sao phải khác so với tập tin gốc
13.1 Các hình thức truy cập tập tin
Truy cập tập tin bao gồm các thao tác đọc và ghi dữ liệu Cách thức truy cập bao gồm:
Ø Truy cập kiểu tuần tự (Sequential): Quá trình đọc và ghi dữ liệu với tập tin theo các khối
dữ liệu liên tục từ đầu đến cuối tập tin Các khối dữ liệu liên tục có thể là các ký tự, các
số, mẩu tin, chuỗi, dòng văn bản,…Các khối này được phân cách nhau trong tập tin bằng
kí tự dấu phẩy (,) hoặc kí tự xuống dòng Ví dụ, muốn đọc dòng dữ liệu thứ n trong một
tập tin văn bản có m dòng (m>n), không thể ngay lập tức truy cập tới dòng thứ n mà phải
lần lượt đọc từ dòng hiện tại (là dòng văn bản mà con trỏ đọc dữ liệu đang ở đó) tới dòng
thứ n Kiểu truy cập tuần tự thường áp dụng với các tập tin văn bản (text file)
Trang 1082
Hình III-24: Truy cập kiểu tuần tự khi đọc tập tin văn bản
Ø Truy cập kiểu ngẫu nhiên (Random): Quá trình đọc và ghi dữ liệu với tập tin được thực
hiện dựa trên các mẩu tin có kích thước xác định (đơn vị để đo lường mẩu tin là Byte)
Việc truy xuất đến một mẩu tin là tuỳ ý, không cần tuân theo trình tự mà theo thứ tự của mẩu tin đó trong tập tin Quá trình truy cập ngẫu nhiên thường được áp dụng cho các tập tin trong đó dữ liệu được tổ chức theo các khối có cấu trúc (các mẩu tin)
Ø Truy cập kiểu nhị phân (Binary): Quá trình đọc và ghi dữ liệu với tập tin được thực hiện theo các khối không giống nhau về kích thước Quá trình truy cập nhị phân thường áp dụng cho các tập tin có cấu trúc không cố định và dữ liệu có thể được xác định thông qua các byte dữ liệu được đọc vào
Trong khuôn khổ giáo trình này, tập tin văn bản và các thao tác lên nó, được trình bày chi tiết bởi tính phổ biến và hữu dụng của loại tập tin này khi làm việc với các phần mềm ứng dụng trong ngành xây dựng công trình giao thông
Để việc thao tác với các tập tin được thuận lợi, VB cung cấp sẵn hai phương pháp cơ bản:
Ø Sử dụng các hàm có sẵn để thao tác trực tiếp lên tập tin (dùng các hàm I/O)
Ø Sử dụng một số điều khiển để thao tác gián tiếp lên tập tin (dùng đối tượng FSO)
13.2 Xử lý dữ liệu trong tập tin với các hàm I/O:
Các hàm I/O (Input/Output) dùng để truy xuất các tập tin, trình tự như sau:
1 Mở tập tin: là yêu cầu bắt buộc phải thực hiện trước khi đọc hay ghi dữ liệu vào tập tin
2 Thực hiện các thao tác với tập tin: đọc hoặc ghi dữ liệu vào tập tin
3 Đóng tập tin: bắt buộc phải thực hiện khi kết thúc các thao tác với tập tin
Trong khuôn khổ giáo trình này chỉ trình bày các thao tác theo kiểu tuần tự với tập tin, các kiểu truy cập khác có thể tìm trong các tài liệu tham khảo ghi ở cuối giáo trình này hoặc trong Help Online của VBA IDE
13.2.1 Mở tập tin:
Cú pháp: