設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

【技巧】Open打開事件與Load加載事件

2015-4-21 20:29| 發(fā)布者: tmtony| 查看: 2680| 評論: 3|原作者: tmtony|來自: Office中國論壇

摘要: 很多網(wǎng)友對于Access的Open打開事件與Load加載事件,以及Close關(guān)閉事件及Unload卸載事件的區(qū)別一直比較迷糊 有不少網(wǎng)友多次問過我,這里就做個貼子說明一下: 1.Open事件發(fā)生在前,Load事件發(fā)生在后,前后不一 ...
很多網(wǎng)友對于Access的Open打開事件與Load加載事件,以及Close關(guān)閉事件及Unload卸載事件的區(qū)別一直比較迷糊
有不少網(wǎng)友多次問過我,這里就做個貼子說明一下:


1.Open事件發(fā)生在前,Load事件發(fā)生在后,前后不一樣
2.在Open里支持取消打開的Cancel屬性,而Load里沒有,這個事件很有用
3.窗體Open時,窗體還沒有顯示出來,相關(guān)的控件都還沒有加載,而Load時,窗體顯示出來了,對相關(guān)的控件可用代碼來設(shè)置
4.有些屬性必須在LOAD里更改 ,即窗體加載時才會出現(xiàn)的


官方的解釋



1.在打開窗體,但第一條記錄尚未顯示時,發(fā)生此事件的Open事件。
   參數(shù)Cancel的設(shè)置  該設(shè)置確定是否打開窗體或報表。將 Cancel 參數(shù)設(shè)置為 True (–1) 可以取消窗體或報表打開。
   通過窗體的Open事件發(fā)生時運行宏或事件過程,您可以關(guān)閉另一個窗口或?qū)⒔裹c移到窗體上的特定控件。您還可以運行一個宏或在窗體之前需要要求提供信息的事件過程或打開或打印報表。

例如,打開的宏或事件過程可以打開自定義對話框中的用戶輸入的條件來篩選窗體或報表中包含的日期范圍上顯示的記錄集。

當激活已打開的窗體時, Open事件不會發(fā)生 — 例如,您從 Microsoft Access 中的另一個窗口切換到窗體或在宏中使用 OpenForm 操作將打開的窗體置于頂部。但是,在這些情況下會激活事件。

當打開一個基于基礎(chǔ)查詢的窗體時,Microsoft Access 先運行該窗體的基礎(chǔ)查詢,然后才運行 Open 宏或事件過程。

如果您的應用程序可以有多個窗體一次加載,使用,而不是 Open 事件ActivateDeactivate事件來顯示和隱藏自定義工具欄時將焦點移到不同的窗體。

Open 事件發(fā)生在Load事件之前,在打開窗體并顯示其記錄時觸發(fā)。

首次打開窗體時,下列事件將按如下順序發(fā)生:

打開負載→ 調(diào)整 →激活當前

Close 事件發(fā)生在Unload事件之后,后者在窗體被關(guān)閉但尚未從屏幕上刪除之前被觸發(fā)。

當關(guān)閉窗體時,下列事件將按如下順序發(fā)生:

卸載停用關(guān)閉

當 Close 事件發(fā)生時,可以打開另一個窗口或要求輸入用戶名來產(chǎn)生日志項,以表明使用該窗體或報表的用戶。

如果您正在嘗試決定是否要打開或加載事件用于您的宏或事件過程,一個顯著差別可取消的Open事件,但不能Load事件。例如,如果您正在動態(tài)構(gòu)建窗體的Open事件的事件過程中的窗體的記錄源,您可以取消打開窗體,如果要顯示的記錄。同樣,可取消Unload事件,但Close事件不能。


下面的示例用于顯示在用戶單擊"否"按鈕時,如何取消窗體的打開操作。消息框提示用戶輸入訂單的詳細信息。如果用戶單擊"否",則"訂單明細"窗體將不打開。

要試用該示例,請將以下事件過程添加到窗體中。

[size=1em][url=]VBA[/url]



Private Sub Form_Open(Cancel As Integer)  Dim intReturn As Integer  intReturn = MsgBox("Enter order details now?", vbYesNo)  Select Case intReturn  Case vbYes  ' Open Order Details form.  DoCmd.OpenForm "Order Details"  Case vbNo  MsgBox "Remember to enter order details by 5 P.M."  Cancel = True ' Cancel Open event.  End Select End Sub



2.Load事件 :在打開窗體并顯示其記錄時發(fā)生。


  若要這些事件發(fā)生時運行宏或事件過程,請將OnLoad屬性設(shè)置為宏的名稱或 [事件過程]。

諸如以下的用戶操作將引起Load事件:

  • 啟動應用程序。

  • 通過在"數(shù)據(jù)庫"窗口中單擊"打開"來打開窗體。

  • 在宏中運行 OpenForm 操作。


通過在窗體的Load事件發(fā)生時運行宏或事件過程,可以指定控件的默認設(shè)置,或顯示計算取決于該窗體的記錄中的數(shù)據(jù)的數(shù)據(jù)。

通過窗體Unload事件發(fā)生時運行宏或事件過程,您可以驗證應卸載窗體,或指定窗體卸載時應該發(fā)生的操作。您還可以打開另一個窗體或顯示一個對話框要求輸入用戶名來產(chǎn)生日志項,以表明使用該窗體。

首次打開窗體時,下列事件將按如下順序發(fā)生:

Open → Load → Resize → Activate → Current

如果您正在嘗試決定是否要打開加載事件用于您的宏或事件過程,一個顯著差別可取消的Open事件,但不能Load事件。例如,如果您正在動態(tài)構(gòu)建窗體的Open事件的事件過程中的窗體的記錄源,您可以取消打開窗體,如果要顯示的記錄。

當關(guān)閉窗體時,下列事件將按如下順序發(fā)生:

Unload → Deactivate → Close

Unload事件發(fā)生的Close事件之前?扇∠Unload事件,但Close事件不能。

注釋

創(chuàng)建宏或事件過程的Load事件,如激活GotFocus,與相關(guān)的事件時請確保它們不會發(fā)生沖突 (例如,請確保不會導致發(fā)生一個宏或取消在另一種過程) 和它們不會導致級聯(lián)事件。



下面的示例可以在加載窗體時在窗體的標題中顯示當前日期。

若要嘗試運行該示例,請將以下事件過程添加到窗體中:

[size=1em][url=]VBA[/url]




Private Sub Form_Load()  Me.Caption = Date End Sub  




幫助中有詳盡說明,你還可以用代碼測試先后的,例如在各事件中寫一個彈出提示Msgbox()


相關(guān)鏈接
vba中unload事件與close事件的區(qū)別:

相關(guān)閱讀

發(fā)表評論

最新評論

引用 zpy2 2015-4-22 04:45
璧炰竴涓
引用 WFH6898 2015-11-12 12:55
Open事件發(fā)生在前,Load事件發(fā)生在后,打開后才加載

查看全部評論(3)

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-17 06:03 , Processed in 0.087412 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部