我們有時(shí)希望表單在被關(guān)閉前能顯示確認(rèn)信息,給用戶留有選擇的余地。這在Windows程序中非常普遍,作用也是顯而易見的。在VFP中要實(shí)現(xiàn)此功能,方法也很簡(jiǎn)單。
首先,讓我們來看一個(gè)VFP表單的卸載步驟:表單在卸載前,首先要詢問表單的QueryUnload事件,然后再卸載表單。也就是說,QueryUnload事件是表單卸載時(shí)第一個(gè)被觸發(fā)的事件。在 QueryUnload 事件過程中執(zhí)行 NODEFAULT命令可以阻止表單卸載。這樣我們通過在QueryUnload 事件中巧妙包含NODEFAULT,就能避免直接卸載表單。
QueryUnload是怎樣被觸發(fā)的呢?當(dāng)在代碼中執(zhí)行 CLEAR WINDOWS,RELEASE WINDOWS 或 QUIT 等命令時(shí)、或者當(dāng)用戶雙擊控制菜單框時(shí)、或者當(dāng)用戶從表單的控制菜單中選擇執(zhí)行“關(guān)閉”命令時(shí),都會(huì)觸發(fā)表單的 QueryUnload 事件。
先在表單的QueryUnload事件中包含下面代碼:
*-- 顯示包含“是”、“否”兩個(gè)按鈕的對(duì)話框
nYesNo = MessageBox("確定要退出嗎?",4+48+256,"提示")
If nYesNo = 6 &&如果選取了“是”,則退出
*-- 退出前要執(zhí)行的代碼寫在這里,
*-- 然后執(zhí)行類似下面的退出代碼
ThisForm.Release
Else &&選取了“否”,不退出
NODEFAULT
EndIf
這樣當(dāng)有卸載表單的事件發(fā)生時(shí),都會(huì)顯示確認(rèn)要退出的對(duì)話框:只有選取“是”,才能卸載表單。
這樣做是非常有用的,例如我們?yōu)榱吮苊庹诓僮鞯臄?shù)據(jù)沒有保存就退出,可以在程序中使用這段代碼,至于如何保存數(shù)據(jù),不同的程序采取的方法不盡相同,這里我們不做詳細(xì)討論。
需要說明的是,當(dāng)在代碼中直接執(zhí)行 RELEASE 命令或直接調(diào)用表單的 Release 方法時(shí),不會(huì)觸發(fā) QueryUnload 事件。因此,我們應(yīng)盡量避免在代碼中直接執(zhí)行RELEASE 命令或調(diào)用表單的 Release 方法。取代的方法是,當(dāng)要卸載表單時(shí),轉(zhuǎn)向調(diào)用表單的QueryUnload方法。
例如,我們要在表單中放置一個(gè)標(biāo)題為“退出”的命令按鈕,用來退出這個(gè)表單,并希望在退出時(shí)能顯示確認(rèn)對(duì)話框,可以在這個(gè)命令按鈕的Click事件代碼中包含下面的命令:
ThisForm.QueryUnload
本方法在Visual FoxPro 6.0中文版環(huán)境下驗(yàn)證通過,操作系統(tǒng)為Windows 98中文版、Windows NT 4.0中文版。
首先,讓我們來看一個(gè)VFP表單的卸載步驟:表單在卸載前,首先要詢問表單的QueryUnload事件,然后再卸載表單。也就是說,QueryUnload事件是表單卸載時(shí)第一個(gè)被觸發(fā)的事件。在 QueryUnload 事件過程中執(zhí)行 NODEFAULT命令可以阻止表單卸載。這樣我們通過在QueryUnload 事件中巧妙包含NODEFAULT,就能避免直接卸載表單。
QueryUnload是怎樣被觸發(fā)的呢?當(dāng)在代碼中執(zhí)行 CLEAR WINDOWS,RELEASE WINDOWS 或 QUIT 等命令時(shí)、或者當(dāng)用戶雙擊控制菜單框時(shí)、或者當(dāng)用戶從表單的控制菜單中選擇執(zhí)行“關(guān)閉”命令時(shí),都會(huì)觸發(fā)表單的 QueryUnload 事件。
先在表單的QueryUnload事件中包含下面代碼:
*-- 顯示包含“是”、“否”兩個(gè)按鈕的對(duì)話框
nYesNo = MessageBox("確定要退出嗎?",4+48+256,"提示")
If nYesNo = 6 &&如果選取了“是”,則退出
*-- 退出前要執(zhí)行的代碼寫在這里,
*-- 然后執(zhí)行類似下面的退出代碼
ThisForm.Release
Else &&選取了“否”,不退出
NODEFAULT
EndIf
這樣當(dāng)有卸載表單的事件發(fā)生時(shí),都會(huì)顯示確認(rèn)要退出的對(duì)話框:只有選取“是”,才能卸載表單。
這樣做是非常有用的,例如我們?yōu)榱吮苊庹诓僮鞯臄?shù)據(jù)沒有保存就退出,可以在程序中使用這段代碼,至于如何保存數(shù)據(jù),不同的程序采取的方法不盡相同,這里我們不做詳細(xì)討論。
需要說明的是,當(dāng)在代碼中直接執(zhí)行 RELEASE 命令或直接調(diào)用表單的 Release 方法時(shí),不會(huì)觸發(fā) QueryUnload 事件。因此,我們應(yīng)盡量避免在代碼中直接執(zhí)行RELEASE 命令或調(diào)用表單的 Release 方法。取代的方法是,當(dāng)要卸載表單時(shí),轉(zhuǎn)向調(diào)用表單的QueryUnload方法。
例如,我們要在表單中放置一個(gè)標(biāo)題為“退出”的命令按鈕,用來退出這個(gè)表單,并希望在退出時(shí)能顯示確認(rèn)對(duì)話框,可以在這個(gè)命令按鈕的Click事件代碼中包含下面的命令:
ThisForm.QueryUnload
本方法在Visual FoxPro 6.0中文版環(huán)境下驗(yàn)證通過,操作系統(tǒng)為Windows 98中文版、Windows NT 4.0中文版。