Các khái niệm event

Chia sẻ: Nguyenhoang Phuonguyen | Ngày: | Loại File: PDF | Số trang:6

0
505
lượt xem
308
download

Các khái niệm event

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Sự kiện (event) là một hành động xác định xảy ra trên hoặc với một đối tượng nào đó. MS Access có thể đáp lại nhiều sự kiện: nhấn chuột, thay đổi dữ liệu, mở hoặc đóng form, ... Sự kiện thường là kết quả tạo ra bởi một hành động của người sử dụng.

Chủ đề:
Lưu

Nội dung Text: Các khái niệm event

  1. CÁC KHÁI NI M S ki n là gì? S ki n (event) là m t hành ng xác nh x y ra trên ho c v i m t i tư ng nào ó. MS Access có th áp l i nhi u s ki n: nh n chu t, thay i d li u, m ho c óng form, ... S ki n thư ng là k t qu t o ra b i m t hành ng c a ngư i s d ng. Th t c là gì? Th t c (procedure) là m t ơn v code c a VB. M t th t c bao g m m t dãy các l nh (statement) ho c các phương th c (method) th c thi m t hành ng ho c tính toán m t giá tr . Th t c s ki n là gì? Th t c s ki n (event procedure) là m t th t c t ng th c thi áp l i m t s ki n ư c kh i xư ng t m t hành ng c a ngư i dùng ho c t code c a chương trình. VD: Th t c s ki n sau ây s th c thi m t l nh m câu thông báo chào khi form ư c m ra: Private Sub Form_Load() MsgBox "Xin chào các b n." End Sub M TS S KI N THƯ NG G P VÀ CÁCH ĐI U KHI N S KI N Các s ki n x y ra v i i tư ng Form: 1. S ki n Open: S ki n x y ra khi form ư c m , nhưng trư c khi record u tiên ư c hi n th . (Ghi chú: i tư ng Report cũng có s ki n Open, trong report s k n Open x y ra trư c khi report ư c preview ho c ư c in) T khi g i form cho n khi form xu t hi n l n u trên màn hình, m t lo t các s ki n x y ra, trong ó s ki n Open là s ki n ư c x y ra u tiên. Các s ki n này và th i i m x y ra c a nó ư c th hi n b ng chu i sau: Open --> Load --> Resize --> Activate --> Current Thu c tính g n v i s ki n Open có tên là OnOpen. (Các b n lưu ý: v i nh ng thu c tính b t u b ng On có nghĩa là s ki n ó ang di n ti n,Before là trư c khi s ki n x y ra, After là sau khi s ki n x y ra). Th t c s ki n g n v i s ki n này là Form_Open. S ki n có m t tham s có tên là Cancel ki u Integer (th c ch t nó ch nh n hai giá tr True và False). Tham s này các b n có th nh l i giá tr cho nó. N u nh là True, s ki n s b hoãn, nghĩa là s ki n s không hoàn t t, nhưng không x y ra l i. M c nhiên là False. VD: B n mu n r ng khi form A m ra thì form B s m ra n u ngư i s d ng ng ý, b n có th code cho th t c s ki n như sau: Private Sub Form_Open(Cancel As Integer) If MsgBox("Ban co muon form B mo ra dong th oi luon khong?", vbYesNo) = vbYes Then DoCmd.OpenForm "form B" Else
  2. Cancel = True End If End Sub Ghi chú: B t kỳ m t th t c s ki n nào nó thông s là Cancel, thì s ki n tương ng u có th cho ngưng không cho hoàn t t. Trong trư ng h p b n s d ng m t macro ho c m t phương th c c a DoCmd thì n u hoãn m t s ki n, s có m t error tr v . tránh xu t hi n l i thì n dùng macro, b n có th t trư c macro ó m t macro SetWarnings và gán cho thu c tính WarningOn là No, dùng DoCmd trong code thì trư c ó b n t câu On Error Resume Next. 2. S ki n Load: S ki n Load x y ra b i tác ng c a ngư i dùng như: -B t u m t ng d ng. - M m t form b ng cách nh p vào Open trên c a s Database. - Th c thi m t hành ng OpenForm trong macro. - G i form b ng DoCmd.OpenForm trong th t c. Thu c tính s ki n tương ng có tên là OnLoad. Th t c s ki n tương ng có tên là Form_Load, không có tham s . Khi i u khi n s ki n này, b n có th th c hi n nh ng công vi c sau: Thi t l p các giá tr m c nh cho các control ho c th hi n các giá tr tính toán tùy thu c vào d li u có trên form. VD: Trong public module b n có m t bi n language. N u bi n này là "V" thì b n cho hi n th các caption c a các Label là ti ng Vi t, "E" thì hi n th là ti ng Anh. Bi n này s tùy thu c vào vi c ngư i ta ch n trong m t th t c nào ó trư c khi form b n ư c g i vào. Trư c tiên, khi thi t k form, các label, b n t các t "ính l t" tương ng property Tag c a nó. Sau ó b n thi t k th t c Form_Load như sau: Private Sub Form_Load () Dim ctl As Control For Each ctl In Detail.Controls ' or FormHeader.Controls, FormFooter.Controls If TypeOf ctl Is Label Then x = ctl.Caption ctl.Caption = ctl.Tag ctl.Tag = x End If Next End Sub 3. S ki n Resize: S ki n x y ra khi form ư c g i và b t c khi nào kích thư c c a form thay i. Thu c tính s ki n tương ng có tên là OnResize. Th t c s ki n tương ng có tên là Form_Resize. Th t c này không có tham s . Khi i u khi n s ki n này, b n có th : - Di chuy n ho c nh l i kích thư c c a m t control. - Tính toán l i các bi n.
  3. - Reset l i các thu c tính có liên quan n kích thư c c a form. VD: Khi có s thay i kích thư c c a form s cho hoàn t t nh ng c p nh t màn hình còn ang treo ho c nh ng tính toán chưa th c hi n xong trên các control b ng phương th c Repaint. Private Sub Form_Resize() Me.Repaint End Sub 4. S ki n Activate: S ki n x y ra khi m t form (cũng úng v i report) nh n m t focus (cái này không dám d ch ra ti ng vi t, b i d ch ra thì h ng ai hi u, còn nguyên thì ai cũng hi u !!! ) và tr thành c a s ho t ng. Thu c tính s ki n tương ng có tên là OnActivate. Th t c s ki n tương ng có tên là Form_Activate. Th t c không có tham s . VD: Bây gi b n có thi t k m t cái toolbar ch dành riêng cho form A. Như v y n u form A ư c kích ho t thì m i hi n toolbar này (ví d toolbar này có tên là FormA_Toolbar). Private Sub Form_Activate() DoCmd.ShowToolbar "FormA_Toolbar", acToolbarYes End Sub 5. S ki n Current: S ki n x y ra khi m t focus ư c di chuy n n m t record, làm cho nó tr thành record hi n hành, ho c khi form ư c "làm tươi mát" (refresh) ho c ư c gán l i source (requery). Thu c tính s ki n tương ng có tên là OnCurrent. Th t c s ki n tương ng có tên là Form_Current. Th t c này không có tham s . VD: B n có m t form hi n th m t s thông tin c a m t table, trong ó có 3 textbox ng v i 3 field(t m là text1, text2, text3) và m t checkbox cũng ng v i m t field Yes/No(check1). Yêu c u t ra là n u check1 b ng True thì không cho thay i n i dung trong 3 textbox. Private Sub Form_Current () text1.Locked = check1 text3.Locked = check1 text3.Locked = check1 End Sub 6. S ki n UnLoad: S ki n Unload x y ra khi: - Ngư i s d ng nh n nút Close trên c a s Form. - Ngư i s d ng g i menu File - Close. - G i m t macro Close m t c a s có thu c tính Form. - G i m t l nh DoCmd.Close v i ki u c a s là acForm. - Đóng Windows trong khi ng d ng Access ang ch y.
  4. Unload là s ki n u tiên c a chu i s ki n sau: Unload --> DeActivate --> Close Thu c tính s ki n tương ng là OnUnload. Th t c s ki n tương ng là Form_Unload. Th t c này có m t thu c tính Cancel. Như bài trư c, b n ã bi t n u Cancel = True thì có nghĩa gì r i ph i không? VD: Gi s trong Form b n có m t bi n tên là danglam ki u Boolean. N u bi n là True thì có nghĩa b n ang nh p li u và ang có thay i d li u. B n mu n r ng khi óng form, nó s h i lưu thay i không, n u có thì trư c khi óng, b n cho lưu. (Code dư i ây ch là dàn ý, b n ph i tùy bi n cho phù h p v i ng d ng mà b n thi t k ). Private Sub Form_Unload (Cancel As Integer) If danglam Then If MsgBox ("Du lieu da co thay doi. Co muon luu truoc khi dong khong?", vbYesNo) = vbYes then DoCmd.SaveRecord Else DoCmd.Undo End If End Sub 7. S ki n DeActivate: S ki n x y ra khi b n r i focus ra kh i form (ho c report). Nó cũng x y ra sau khi form (report) ư c Unload. Thu c tính s ki n tương ng có tên OnDeactivate. Th t c s ki n tương ng có tên Form_Deactivate. Không có tham s . VD: Ti p theo ví d c a m c 4 phía trên (bài trư c), khi chuy n focus ra kh i form A, b n cho n tool box i. Private Sub Form_Deactivate() DoCmd.ShowToolbar "FormA_Toolbar", acToolbarNo End Sub 8. S ki n Close: S ki n x y ra khi form ã th c s ư c óng l i nhưng chưa r i h i màn hình. V cơ b n xem như nó ã ư c óng l i, nhưng n u b n có "lưu luy n" gì v i ngư i dùng, b n có th g i m t thông i p gì ó ây i lo i như ... xem ví d bên dư i. Tên thu c tính s ki n tương ng là OnClose. Tên th t c s ki n là Form_Close. Không có tham s . VD: G i m t thông i p "lưu luy n" Private Sub Form_Close ()
  5. MsgBox "See you soon." End Sub 9. S ki n BeforeInsert: S ki n này x y ra khi ngư i s d ng gõ vào ký t u tiên trong record m i, nhưng trư c khi record y th c s ư c t o. S ki n này b t u m t dãy s ki n sau ây: BeforeInsert --> BeforeUpdate --> AfterUpdate --> AfterInsert Thu c tính s ki n có tên là BeforeInsert. Th t c s ki n có tên là Form_BeforeInsert. Có m t tham s quen thu c là Cancel. VD: Gi s b n là ngư i r t c n th n. B n mu n r ng khi m t ngư i s d ng gõ m t ký t b t kỳ vào record m i, b n s lưu ý h li n, s r ng h vô tình nh n phím mà thôi. B n có th code nh nhàng như sau: Private Sub Form_BeforeInsert(Cancel As Integer) If MsgBox("Them record moi ha ban?", vbOKCancel) = vbCancel Then MsgBox "Lan sau nho can than khi su dung ban phim nghen !!!" Cancel = True End If End Sub 10. S ki n BeforeUpdate: S ki n x y ra khi có m t s thay i d li u trong m t control thu c form ho c khi record ư c c p nh t (update). Đúng ra ây ang li t kê các s ki n c a Form, nhưng s ki n này cũng nh hư ng n m t control, v y có nên nói luôn ây không ta? Thôi chơi luôn há? Đ i v i form, s ki n này s x y ra khi b n d i focus t record hi n hành sang m t record khác nhưng chưa d i th t s , ho c b n ã g i l nh Save Record trong menu Records, ho c b n g i macro SaveRecord ho c b n dùng l nh DoCmd.RunCommand acCmdSaveRecord. Đ i v i control, s ki n này s x y ra khi b n d i focus t control ó sang m t control khác mà control hi n hành b n có thay i d li u. S ki n BeforeUpdate c a form x y ra sau s ki n BeforeUpdate c a control. B n nên chú ý i u này vi c i u khi n b ng th t c s ki n cho phù h p. Thu c tính s ki n có tên là BeforeUpdate. Th t c s ki n có tên là: Form_BeforeUpdate i v i form controlname_BeforeUpdate i v i m t control C hai u có tham s quen thu c Cancel. V i form, khi Cancel = True, nó s không cho b n r i kh i record ó, tr khi b n nh n ESC h y thay i (ho c m t macro hay l nh tương ng) hay nh p li u cho chính xác v i yêu c u. Đ i v i control, khi Cancel = True, nó s không cho b n r i kh i control ó tr khi b n cũng nh n ESC h y b thay i (ho c nh p d li u phù h p). VD: Gi s b n nh p d li u i m thi 3 môn h c A, B, C cho các thí sinh. Trong ó
  6. n u kh i c a thí sinh là 1 thì môn A nhân h s 3, kh i c a thí sinh là 2 thì môn B nhân h s 3, kh i c a thí sinh là 3 thì môn C nhân h s 3. Đi m trung bình là t ng i m 3 môn sau khi ã nhân v i h s chia cho 5. Các i m ch ư c t 0 n 10. Đi m trung bình s tính ngay sau khi 3 môn ư c nh p. Đi m t ng môn s ki m sau khi nh p xong i m môn ó. Gi s các control c a b n là: mahs, hotenhs, khoi, monA, monB, monC, dtb Bây gi b n s "ch " 2 cái th t c BeforeUpdate cho form và cho các control i m như sau: Làm m t cái cho i m môn A, i m môn B và môn C tương t : Private Sub monA_BeforeUpdate (Cancel As Integer) If monA < 0 Or monA > 10 Then MsgBox "Diem mon chi tu 0 den 10 thoi." Cancel = True End If End Sub Làm cho form: Private Sub Form_BeforeUpdate (Cancel As Integer) dim diem as double ' Lay theo kieu chuan, dung Single cung duoc tuy ban diem = IIf(khoi = 1, monA*3, IIf(khoi = 2, monB*3, monC*3))/5 dtb=diem End Sub

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản