Kiu 2: Lp cho n khi iu kin là FALSE
11. Làm việc với UserForm và các thành phần điều khiển
11.3. Các điều khiển thông dụng
Theo mặc định, trên Toolbox có sẵn một số điều khiển thông dụng trong thẻ Control, những điều khiển này đáp ứng được hầu hết nhu cầu thiết kế giao diện thông thường trên UserForm.
Trong những phần trước đã nhắc nhiều đến việc sử dụng các điều khiển trên Toolbox nhưng chưa có tính hệ thống vì vậy phần này sẽ trình bày những nội dung cơ bản để có thể sử dụng một cách hiệu quả các điều khiển này.
Hình II-34: Các điều khiển cơ bản theo mặc định trong VBA IDE
Nút lnh (Command Button)
Command Button thường được dùng để thực hiện một quyết định nào đó từ phía người dùng (thông qua việc kích chuột vào Command Button hoặc nhấn Enter).
Command Button nên có thuộc tínhCaption (tiêu đề) vàPicture (hình ảnh) phản ánh đúng tính năng mà nó đảm nhận. Sự kiện hay được gọi khi sử dụng Command Button là sự kiệnClickhoặcDblClick(kích đúp chuột).
Để thay đổi vị trí của Command Button trong khi chạy chương trình, sử dụng phương thứcMove
Tên_Command Button.Move [Left ], [Top], [Width], [Height]
Trong đó các tham số thể hiện vị trí góc trái trên (left, top) và kích thước (Width, Height) mới của Command Button sau khi di chuyển.
Để thiết lập trạng thái nhận lệnh (nhận tiêu điểm – focus), sử dụng phương thức SetFocus
Tên_Command Button.SetFocus
Các phương thứcMovevàSetFocusnhư trên không chỉ áp dụng đối với Command Button, mà còn được áp dụng với đa số các điều khiển khác.
H#p v$n bn (TextBox)
TextBox được dùng để nhập dữ liệu dạng văn bản (text) và nó được điều khiển bằng cách thiết lập những thuộc tính hay sự kiện hoặc sử dụng các phương thức phù hợp. Dưới đây là một số thành phần chính dùng để điều khiển TextBox:
Các thuộc tính dùng để thiết lập cách thức hiển thị cho TextBox
Thuc tnh M t Ghi ch
9 3
2
7 6
4 5
8 1
http://www.ebook.edu.vn
Text Nội dung văn bản chứa trong điều khiển. Kiểu String
TextAlign Cách thức hiển thị văn bản trong điều khiển Tham khảo Object Browser MaxLength Qui định độ dài tối đa của văn bản trong điều khiển
(Nếu đặt MaxLength=0, độ dài của văn bản là tuỳ ý)
Kiểu Long MultiLine Hiển thị nhiều dòng hay một dòng Kiểu Boolean ScrollBars Hiển thị thanh cuộn ngang hay dọc nếu nội dung
văn bản lớn hơn kích thước của điều khiển
Tham khảo Object Browser
Các phương thức hỗ trợ việc nhập văn bản vào TextBox
Phng thc M t Ghi ch
Copy Chép nội dung được đánh dấu trong điều khiển vào bộ nhớ đệm
Tham khảo trong Object Browser hoặc Help Cut Di chuyển nội dung được đánh dấu trong điều khiển vào bộ
nhớ đệm
Paste Chép nội dung từ bộ nhớ đệm vào điều khiển
Các sự kiện: thường dùng để xử lý khi có tác động lên TextBox, thường sử dụng hai sự kiện là:KeyPressvàChange. Sự kiện, về bản chất là một chương trình con dạng Sub và được tự động gọi ra tương ứng với tác động nào đó lên TextBox, ví dụ như bấm phím hay thay đổi nội dung. Sự kiệnChangeđược gọi khi nội dung văn bản trong TextBox bị thay đổi. Còn sự kiệnKeyPress được gọi khi có một phím được nhấn khi con trỏ đang nằm trong điều khiển. Sự kiệnKeyPress có một tham số làKeyAscii. Tham số này có kiểu Integervà chứa mã ASCII của phím được nhấn (để biết mã ASCII của các phím, tham khảo KeyCodeConstants trong Object Browser).
Nhãn (Label)
Label thường được sử dụng để hiển thị một văn bản ngắn gọn trên UserForm hoặc dùng kèm với một điều khiển nào đó trên UserForm với mục đích là giải thích ý định sử dụng cho điều khiển đó. Nội dung văn bản trong Label được thiết lập hoặc thay đổi thông qua thuộc tính Caption của nó. Tương tác với thuộc tínhCaption của Label cũng tương tự như đối với thuộc tínhCaption của tất cả các điều khiển khác và đã được trình bày ở các phần trước.
H#p ánh d%u (CheckBox)
CheckBox thường được sử dụng để lựa chọn thông tin phù hợp trong một danh sách các thông tin liên quan được liệt kê hoặc dùng để bổ sung nội dung cho một dữ liệu nào đó.
Điều khiển Label giải thích cho dữ liệu trong hộp văn bản ở dưới
Điều khiển Label hiển thị kết quả dạng văn bản ngắn
Để thiết lập hay đọc trạng thái của CheckBox (được chọn hay không được chọn), 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à Truethì có nghĩa là CheckBox được chọn, giá trị làFalsenghĩa là CheckBox không được chọn.
Ví dụ: tạo giao diện nhập dữ liệu và tính tổng các số từ 1 đến n với tùy chọn bằng CheckBox như sau:
Nếu không chọn CheckBox (không đánh dấu) thì tính tổng của các số từ 1 đến n.
Nếu chọn CheckBox (đánh dấu) thì chỉ tính tổng các số chẵn trong khoảng từ 1 đến n.
Thiết kế UserForm với các thành phần như hình dưới đây:
Mã lệnh cho thủ tục sự kiệnClickcho nút lệnhcmdTinhnhư sau:
Private Sub cmdTinh_Click() Dim i As Long
Dim so As Long
so = CLng(txtSo.Text) ' chuyen doi du lieu tu txtSo vao bien so 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& chn (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
Label Name: lblSo
TextBox Name: txtSo
CheckBox
Name:chkChonsochan
Command Button Name: cmdTinh
Label
Name: lbKetqua
http://www.ebook.edu.vn
Để 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à Falsethì 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:
Thuc tnh M t Ghi ch
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 Text Trả về nội dung của giá trị được chọn Kiểu String Selected(i) Kiểm tra xem phần giá trị i có được chọn hay không. Kiểu Boolean
Phương thức:
Phng thc M t Ghi ch
AddItem Thêm một giá trị vào trong danh sách Tham khảo trong Object Browser hoặc Help
RemoveItem Xoá một giá trị khỏi danh sách Clear Xoá toàn bộ danh sách Ví dụ: tạo UserForm với ListBox như hình dưới:
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.
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:
Để 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ệnClick 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:
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.
http://www.ebook.edu.vn
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.
Các thuộc tính và phương thức của ComboBox tương tự như ListBox.
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ínhPicture của nó.