Bất kỳ một form nào của Access 2000 cũng đều có một module hậu thuẫn, nó là một lớp form; Bạn có thể tạo một trường hợp mới của lớp với từ khóa Weu giống như bạn làm với bất kỳ lớp Access có đặc tính chung nào khác. Một trong những cải tiến của những lớp form là chúng có tất cả những thuộc tính của form chuẩn và 368
Chương 5: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG BẰNG FORM
những phương pháp cũng như những phần thêm vào khách hàng của bạn.
Xem Những Thuộc Tính Vò Phương Phớp Của Lớp Form
Bạn có thể xem những thuộc tính và phương pháp của những lớp form bằng cách sử dung Object Browser. Bạn chọn tên của Project trong hộp danh sách thả xuống Project/Library và chọn một tên lớp form để xem những thuộc tính và phương pháp của nó.
Man hinh Object Browser trong Hinh 5-15 hién thi tap con của các thành phần trong lớp Form_frmButtonSwitchboard. Nhắc lại là form nay diéu khiển tới bất kỳ form nào trong ba form khác qua những thủ tục sự kiện. Những thủ tục sự kiện là những phương pháp lớp, như cmđGoHere_click. Những nút lénh, nhu cmdGoHere là những thuộc tính của lớp.
PW ka than Eo [Jot ~)
[chapters =} ôff Babe} 2)
=) AL!
jtlasses tempers af Form_tmButtonSencnboard”
@ <globaiss ˆ bordershte 4}
<j Form _ConditiouaiPusCustomblavigaiod: uF Caphon 4 fj Form _ConddionaiPtusCustomiavqationRA CloseButtan:
Gj Form _frevtuttonGoliers cmdSoree 4 Ferm _frmBs#lonGeToOtherVWRvoie 9 cmdGoHote_Chch sối Feem frinBifon©oThese (m3òoTneOihevWiete
03 > cmaGaTheomernmiere_Cick
0% Form _srevChart a cmdoo There 223 Form _frnCouboBerd ookup © cindGoThere Click
1% Form_trrvCombol ookup SOL Le? Conbolbox i
Preeate Class Form frmButtonSeatchboard
¡_ Meebw of Chott
‡
Hình 5-15. Những phương pháp và thuộc tính của mội lớp form.
Thao Tác Các Lớp Form
Thủ tục dưới đây tham chiếu đến cdc module lép trong Access 2000. Nó có một số phân đoạn chương trình để thao tác lớp form cơ
369
bản trong những cách càng ngày càng tỉnh xảo hơn, Làm việc với những lớp form và những trường hợp của chúng tương tự như thao tác với một máy cắt bánh ngọt và những cái bánh ngọt. Máy cắt là lớp form và những chiếc bánh là những trường hợp của nó. Việc thay đổi một cái bánh không làm ảnh hưởng đến máy cắt. Ngược lại, việc thay đổi máy cắt sẽ ảnh hưởng đến tất cả các chiếc bánh sau khi thay đối.
Sub testformclass() Dim frm1 As Form
hân đoạn chương trình thứ nhất
ưu tham chiếu vào lừng trường hợp của một lớp form trong formI.
có thể tham chiếu với lớp hoặc tên tham chiếu khác.
Set frm1 = Form_frmCustomers frm1.Caption = "foo"
MsgBox Form_frmCustomers.Caption MsgBox frm1.Caption
DoCmd.Close acForm, frm1 .Name 'Phân đoạn chương trình thứ 2
bằng cách lập trình để sửa đổi và mở trường hợp của form mặc định.
“hông thiết lập tham chiếu tới trudng hop.
Xóa trường hợp bằng cách thiết lập Visible là False.
Form_frmCustomers.Caption = “foo"
Form_frmCustomers. Visible = True MsgBox Form_frmCustomers.Caption
If MsgBox("Do you want to close form instance?", vbYesNo, _
“Programming Microsoft Access 2000") = vbYes Then Form_frmCustomers. Visible = False
End If
Phan doan chuong trinh thi 3
Mở khung nhìn form để xem ảnh hưởng của sự thay đổi khung nhìn Design.
DoCmd.OpenForm *frmCustomers", acDesign Forms(“frmCustomers*).Caption = “foo"
Chương 5: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG BẰNG FORM
MsgBox Form_frmCustomers.Caption
DoCmd.Ciose acForm, "frmCustomers", acSaveYes Form_frmCustomers. Visible = True
MsgBox Form_frmCustomers.Caption 'Phân đoạn chương trình thứ 4
phục hồi thuộc tính đầu đề lóp.
DoCmd.OpenForm "frmCustomers", acDesign Set frm1 = Form_frmCustomers
frm1.Caption = “Customers”
DoCmd.Close acForm, frm1.Name, acSaveYes Form_frmCustomers. Visible = True
MsgBox Form_frmCustomers.Caption + End Sub
Phân đoạn chương trình thứ nhất gán một lớp form tới một tham chiếu. Nó tạo một trường hợp cia lép Form _frmCustomers va gan no 1a frm1. Ban có thể thao tác trường hợp hoặc bằng cách sử dụng lớp hoặc bằng tên tham chiếu; những kết quả giống nhau từ hai hộp thông báo xác nhận điều này. Thay đổi truờng hợp của một lớp form không làm thay đổi bản thân lớp.
Bạn không cân tham chiếu để chọn lựa hoặc chỉnh sửa những thuộc tính về các trường hợp của lớp form. Phân đoạn chương trình thứ hai thực hiện cùng một tác vụ như tác vụ ban đầu mà không
tạo ra một con trổ (pointer) chỉ đến lớp form. Phân đoạn chương
trình này còn có một câu nhắc nhở để yêu cầu người dùng có muốn đóng trường hợp của form này hay không. (Một trường hợp còn tên tại phụ thuộc vào thời gian sử dụng thủ tục tạo nó trừ khi chương trình của bạn chấm dứt nó sớm hơn.)
Phân đoạn chương trình thứ ba mở một form trong khung nhìn Design và thao tác các thuộc tính. Không giống như khi bạn lập trình chỉnh sửa những thuộc tính của form trong khung nhìn Form, việc thay đổi những thuộc tính trong khung nhìn Design là 371
liên tục sau khi bạn lưu form. Hai dòng lệnh cuối cùng trong phân đoạn thứ ba mở một trường hợp của lớp form trong khung nhìn Form. Lân đầu tiên chạy thủ tục, form mở với đầu dé la "foo".
Phân đoạn chương trình thứ tư khôi phục lại giá trị ban đầu của đầu đề là "Customers".
Tham Chiếu Đến Các Trường Hợp Của Lớp Form
Ví dụ lớp form giúp chúng ta nghiên cứu sâu hơn nữa vào các lớp của form. Bạn có thể dễ dàng kiểm tra thể thức của thủ tục này bằng việc sử dụng form frmFirstWithControls, bao gồm một nút lệnh để thực thi thủ tuc testformelass2. Tha tue testformcelass2 xt ly nhiéu trudng hgp cia một lớp form.
Sub testformclass2()
©n Error GoTo testclass2Trap Dim frm1 As Form
Dim frm2 As New Form_frmCustomers Dim intt As Integer
‘Trinh bay tiéu dé cia trm2 trudc khi sửa chữa thuộc tính. MsgBox "Frm2 default caption is " & frm2.Caption, _ “ vbInformation, “Programming Microsoft Access 2000"
'Thiết lập frm? 1a một tham chiếu cho lóp rmCustomers. Set frm1 = Form_frmCustomers frm1 Caption = “Caption from frm1 instance”
'Đặt lại tiêu dé cho trường hợp trm2.
frm2.Caption = “Caption from frm2 instance"
‘Trinh bay cae tiêu dé của các trường hợp được tham chiếu bởi
‘frm? va frm2.
frm1.SetFocus frm2.SetFocus 372
Chương 5: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG BẰNG FORM
MsgBox frm1.Caption, vblnformation, _
"Programming Microsoft Access 2000”
MsgBox frm2.Caption, vbInformation, _
“Programming Microsoft Access 2000"
'Đóng các trường hợp của form bằng các tham chiếu của chúng.
frm1†.SetFocus `
DoCmd.Close frm2.SetFocus DoCmd.Close testclass2Exit:
Exit Sub
testclass2Trap: ;
If Err.Number = 2467 Then
'Cố gắng bẫy để in tiêu đề cho các form đã đóng.
MsgBox "Cannot print caption of closed form", _
vbinformation, "Programming Microsoft Access 2000"
Resume Next Else
Debug.Print Err.Number, Err.Description Resume testclass2Exit
End If End Sub
Việc sử dụng tham chiếu đến các trường hợp của lớp form rất tiện lợi khi bạn xử lý với nhiều trường hợp ở trên. Ví dụ trên đây sử dụng tham chiếu #m1 và m3. Sau khi khai báo m1 như là một lớp form chung, chương trình gán một tham chiếu đến một trường hợp của lớp Form_fmCustomers vào nó. Câu lệnh khai báo
m2 hướng nó đến một trường hợp của cùng một lớp form. Vì thế m1 và m2 là hai trường hợp khác nhau của cùng một lớp form.
373
Câu lệnh Dứn thứ hai tạo một trường hợp dựa trên một lớp form sử dụng từ khóa Neu. (Bạn phải tham chiếu đến một lớp form với tiền tố Form_ khi sử dụng từ khóa New để tạo một trường hợp.) Sau khi tạo các tham chiếu, bạn có thể thực hiện những thuộc tính và phương pháp chuẩn của form cho những đối tượng để cho các biến tham chiếu. Ví dụ, thủ tục thiết lập lại giá trị thuộc tính Caption cia frm2 réi quy định tiêu điểm, đầu tiên là #m1 rồi đến frm2. Diéu nay mé cả hai form nhưng form này ở sau form kia trên man hinh Access.
Cuối cùng, bạn có thể đóng một trường hợp của form bằng cách đưa nó vào tiêu điểm rồi thực hiện phương pháp Close cia đối tượng DoCmd.