C C H H Ư Ư Ơ Ơ N N G G I I I I I I : : C C Ơ Ơ B B Ả Ả N N V V Ề Ề N N G G Ô Ô N N N N G G Ữ Ữ L L Ậ Ậ P P T T R R Ì Ì N N H H V V I I S S U U A A L L B B A A S S I I C C 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úttuỳ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ộpdanhsá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: Thuộc tính 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 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. 74 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: Phương thức 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: 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ốn g kê ra. C C H H Ư Ư Ơ Ơ N N G G I I I I I I : : C C Ơ Ơ B B Ả Ả N N V V Ề Ề N N G G Ô Ô N N N N G G Ữ Ữ L L Ậ Ậ P P T T R R Ì Ì N N H H V V I I S S U U A A L L B B A A S S I I C C 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ộpdanhsáchtổ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. 76 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í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. C C H H Ư Ư Ơ Ơ N N G G I I I I I I : : C C Ơ Ơ B B Ả Ả N N V V Ề Ề N N G G Ô Ô N N N N G G Ữ Ữ L L Ậ Ậ P P T T R R Ì Ì N N H H V V I I S S U U A A L L B B A A S S I I C C 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" . 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,. 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. 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