Giới thiệu:
Một ứng dụng VB thông thường là một ứng dụng gồm nhiều cửa sổ khác nhau, nhiều thành phần khác nhau như biểu mẫu, module, các báo cáo các điều khiển mở rộng .v.v. do vậy người lập trình cần phải biết sữ dụng các kỹ thuật thiết kế chương trình có nhiều biểu mẫu.
Một chương trình khi được xây dựng có thể từ nhiều người khác nhau, nhiều tập thể khác nhau, các thành phần được thiết kế từ nhiều người và su đó kết nối lại thành 1 chương trình.
Mục tiêu thực hiện:
- Viết được chương trình nhiều biểu mẫu, thừa kế các đối tượng có sẵn
- Tạo và sử dụng được hệ thống menu.
- Sử dụng hộp nhập và hộp thông báo.
Nội dung:
6.1 Viết chương trình ứng dụng nhiều biểu mẫu 6.2 Tạo và sử dụng hệ thống menu
6.3 Hộp nhập và hộp thông báo
6.1.1 Thêm form và cách thành phần khác vào chương trình
Vào menu Project chọn lệnh Add form, hộp thọai sau xuất hiện:
Hình 13 : Hộp thoại thêm form
Thẻ New sẽ thêm 1 biểu mẫu mới vào chương trình, biểu mẫu mới gồm các dạng khác nhau, như biểu mẫu chuẩn (form), dạng hộp thọai (dialog), hộp đăng nhập (Log in dialog).
Nếu muốn chọn các biểu mẫu thiết kế sẵn, chọn nút existing sua đó chọn các form có sẵn, các form này sẽ được thêm vào chương trình, form này có thể là form do bạn thiết kế họăc do người khác thiết kế.
Với thao tác tương tự chúng tác có thể thêm các thành phần khác như module, Control, data report .v.v.
Các thanh phần hi đưa vào được xuất hiện khi chạy chương trình bằng các thuộc tinh Visible hoặc các phương thức Show .
6.1.2 Viết chương trình có nhiều cửa sổ.
Các ứng dụng Window có 2 dạng: SDI (Single Document Interface) là ứng dụng chỉ có mở 1 cửa số ví như chương trình paint, chương trình Write, MDI (Multi Document Interface) la ứng dụng có thể mở nhiều cửa số như Word. Excel .v.v.
Muốn khai báo một chương trình có nhiều cửa sổ chọn thuộc tính CDI Child là true, sau đó vào menu Project chọn Add Mdi form .
1. Biểu mẫu MDI
Biểu mẫu MDI cho phép nhóm các biểu mẫu và chức năng trong một cửa sổ lớn. Tuy nhiên, biểu mẫu MDI có một số nhược điểm: chỉ có một vài điều khiển được vẽ trên biểu mẫu MDI. Đó là điều khiển định giờ và hộp hình. Trong phiên bản Professional và Enterprise ta có thể vẽ thêm
thanh trạng thái và thanh công cụ. Hộp hình vẽ trong biểu mẫu MDI luôn có cùng bề rộng với biểu mẫu và tự động được đặt ở phần trên cùng hoặc dưới cùng của biểu mẫu. Ta không thể điều chỉnh bằng tay. Nếu ta cố canh trái hoặc canh phải, hộp hình sẽ chiếm toàn bộ biểu mẫu MDI.
2. Biểu mẫu con (Child Form)
Thuộc tính MDIChild của một biểu mẫu là một giá trị True/False cho biết biểu mẫu có phải là biểu mẫu con trong một biểu mẫu MDI hay không. Bởi vì VB chỉ cho phép tồn tại một biểu mẫu MDI trong ứng dụng, biểu mẫu con tự động nhận biết cửa sổ cha và khi thi hành, nó chỉ hoạt động bên trong cửa sổ cha.
Vào lúc thiết kế, không thể phân biệt cửa sổ độc lập với cửa sổ con, chỉ khác nhau ở chỗ thuộc tính MDIChild mà thôi. Thuộc tính này không gán được vào lúc thi hành, nếu không, ta sẽ nhận thông báo lỗi trước khi chương trình treo.
Ví dụ mẫu - Cửa sổ con
1. Tạo đề án mới và đặt tên biểu mẫu mặc định là frmChild. Đổi thuộc tính MDIChild thành True.
2. Từ menu Project, chọn Add MDI Form để tạo một cửa sổ MDI và đặt tên cho nó là frmParent.
3. Thêm menu cho biểu mẫu MDI gồm 2 mục: New và Exit. Đặt tên cho chúng là mnuFNew và mnuFExit.
4. Thêm menu cho cửa sổ con bao gồm: File, Edit, View, Options. 5. Viết chương trình cho menu New
Private Sub mnuFNew_Click() Load frmChild
End Sub
6. Từ menu Project, chọn Project1 Properties và chọn biểu mẫu khởi động là biểu mẫu MDI.
7. Thi hành ứng dụng. Khi mới xuất hiện, cửa sổ MDI chưa có cửa sổ con và hiển thị menu của chính nó. Nếu ta chọn New từ menu File, cửa sổ con hiển thị. menu của biểu mẫu MDI được thay thế bằng menu của cửa sổ con. Trạng thái đầu của cửa sổ MDI sẽ được phục hồi toàn bộ củă sổ con bị tắt.
8. Lưu đề án với tên MDIChild.vbp.
3. 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ớ.
Ví dụ mẫu - Tạo Instance của biểu mẫu
1. Mở lại đề án MDIChild.vbp. Chon biểu mẫu frmParant.
2. Chọn New từ menu File của biểu mẫu MDI. Mở cửa sổ Code và đưa đoạn chương trình sau vào:
Private Sub mnuFNew_Click()
Dim OurNewForm As New frmChild OurNewForm.Show
End Sub
4. Xoá toàn bộ menu của cửa sổ con.
5. Thi hành chương trình. Mỗi lần nhấn New, một cửa sổ mới được tạo.
6. Lưu đề án với tên mới bằng cách chọn Save File Form As... và Save Project As... từ menu File. Đặt tên là MDIChild1.vbp
4. Xác định biểu mẫu
Vì ta có thể tạo ra 10 biểu mẫu đồng nhất có cùng tên, nên việc xác định cửa sổ là cần thiết. Từ khoá Me cho phép ta tham chiếu đến cửa sổ hiện hành, là cửa sổ đang có focus, hay nói cách khác, là cửa sổ nhận được mọi phím nhấn hay click chuột bất kỳ.
Ta có thể dùng:
activeform.txtEmployee.text = “Peter” nhưng dùng me là cách thông dụng nhất.
5. Tạo danh sách cửa sổ
Ví dụ mẫu - Tạo danh sách cửa sổ
1. Mở đề án MDIChild1.vbp. Chọn hiển thị biểu mẫu frmParent 2. Tạo tuỳ chọn Window trên menu
Đưa đoạn chương trình sau vào: Private Sub mnuWArrange_Click() frmParent.Arrange vbArrangeIcons End Sub
Private Sub mnuWCascade_Click() frmParent.Arrange vbCascade End Sub
Private Sub mnuWTile_Click()
frmParent.Arrange vbTileHorizontal End Sub
3. Thi hành ứng dụng với các menu được tạo.
6.1.3 Sắp xếp cửa sổ
Dùng phương thức Arrange với biểu mẫu MDI để sắp xếp các cửa sổ con. Các hằng nội tại sau đây là các kiểu sắp xếp củă sổ do VB cung cấp:
Giá trị Hằng Mô tả
0 vbCascade 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 bên 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 những biểu tượng và được xếp thẳng hàng.
6.2 Tạo hệ thống menu cho ứng dụng.
Muốn tạo hệ thống menu cho ứng dụng vào menu tool hoặc nhấn tổ hợp phím Ctrl+E xuất hiện hệ thống menu sau:
Hình14 : Hộp thoại tạo hệ thống Menu Thuộc tính caption: Là chuỗi ký tự hiển thị trên menu.
Thuộc tính name: Phải được đặt duy nhất và dễ nhớ. Có 2 cách đặt tên:
- Nhóm các mục có cùng cha trên menu vào chung một dãy các điều khiển và dùng chung
một tên. Cách này được Visual basic hết sức khuyến khích.
- Mỗi mục có một tên riêng, nhưng nên bắt đầu bằng mnu. ví dụ mnuFile
Thuộc tính index: Dùng với dãy các điều khiển menu. Trong đó, vì có nhiều mục cùng tên
nên index được dùng cho phân biệt giữa chúng với nhau.
Thuộc tính shortcut: Người sử dụng có thể nhấn chuột để chọn menu theo cách bình
thường, hoặc dùng phím tắt. VD: nhấn Ctrl+C thay vì chọn Copy.
Thuộc tính Windows list: dùng trong các ứng dụng MDI. Đây là những ứng dụng có một
biểu mẫu chính và nhiều biểu mẫu con. Thuộc tính windowsList ra lệnh cho Visual basic hiển thị tiêu đề của các cửa sổ con trên menu.
Thuộc tính Checked: Nếu chọn thuộc tính này, trên menu sẽ hiển thị một dấu bên cạnh.
Tuy nhiên, thuộc tính này không được gán cho những mục menu đang chứa menu con.
Thuộc tính enable: Nếu thuộc tính này không được chọn người sử dụng không thể chọn và
đó được.
Thuộc tính Visible: Nếu thuộc tính này không được chọn mục này sẽ biến mất khỏi màn
Thuộc tính NegotiatePosition: Quản lý vị trí gắn menu trong trường hợp sử dụng các đối
tượng ActivateX.
6.3 Hộp thoại
Hộp thoại( dialog) là một trong những cách thức để windows giao tiếp với người sử dụng, có kiểu hộp thoại thông dụng đó là hộp thông báo và hộp thoai tường tác với người sử dụng
6.3.1 Hộp thọai dạng thông báo
Cú pháp của hộp thông báo nhu sau:
msgbox “ Nội dung thông báo”, “Tiêu đề hộp thông báo”
Ví dụ: MsgBox "Nhap mat khau truoc khi su dung chuong trinh", "Thong bao" Kết quả của lệnh này là một thông báo như sau:
Hình 15: Hộp thoại thông báo 1
6.3.2 Hộp thọai dạng tương tác với người sử dụng
Cú pháp của hộp thọai dạng tương tác với người sử dụng như sau: Biến=msgbox(“Nội dung thông báo”,Hằng số,”Tiêu đề”)
Trong đó hằng số được trình bày dưới bảng sau:
Hằng số Thể hiện
vbOKOnly OK
vbOKCancel OK, Cancel
vbAbortRetryIgnore Abort, Retry, Ignore
vbYesNoCancel Yes, No, Cancel
vbYesNo Yes, No
vbRetryCancel Retry, Cancel
Ví dụ :
t=msgbox(“Bạn có muốn thóat khỏi chương trình hay không?”,vbyesno,”Thong bao”) Kết quả của lệnh này như sau:
Hình 16: Hộp thoại thông báo 2
Tùy theo người sử dụng nhấn vào nút yes hay no mà t có giá trị khác nhau, dựa vào giá trị của t chúng ta sẽ đưa ra các lệnh tương ứng
6. Hộp nhập(Input box)
Input box ít được dùng. Lý do là:
- Không có cách nào để kiểm định dữ liệu mà người sử dụng đưa vào khi họ chưa nhấn
Enter. Nếu dùng biểu mẫu do chính mình thiết kế, ta có thể đưa vào hộp văn bản và viết chương trình để xử lý sự kiện liên quan đến việc kiểm tra dữ liệu mà với Input box không thể làm được.
Cú pháp của hộp nhập:
Biết=inputbox(“Nội dung thông báo”, “tiêu đề hộp nhập”, giá trị mặt định) Ví dụ: t = InputBox("Nhap vao gia tri cua t", "Thong bao", 0)
Kết quả của lệnh này như sau:
Hình 17 : Hộp thoại thông báo 3
T sẽ nhận giá trị nhập từ bàn phím
BÀI TẬP TỔNG HỢP
Bài tập 1 Viết chương trình khi chạy chương trình sẽ hiện ra thông báo nhập mật khẩu,
nhập mật khẫu dúng sẽ xuất hiện 1 chương trình gồm hệ thống menu giống như hệ thống menu của Word. Khi thoát khỏi chương trình này sẽ hiện ra thông báo có muốn thoát hay không, nếu trả lời thoát chương trình sẽ thoát và ngược lại.
Bài 7
THỦ TỤC VÀ CHƯƠNG TRÌNH CON