當作用在對象上的一個事件發(fā)生時,若沒有與之相關聯(lián)的代碼,則不會發(fā)生任何操作。對 于絕大多數(shù)事件,開發(fā)者都不必編寫代碼,實際上只需對少數(shù)幾個系統(tǒng)中要用到的事件設計響應程序即可。
事件的響應程序段一般是一個過程,用事件的名稱來命名。
一段事件響應代碼應置于何處,是由事件發(fā)生的順序決定的。
表單中所有對象的Init事件將在表單的Init事件之前執(zhí)行,所以在表單顯示以前,就可在表單的Init事件代碼中處理表單上的任意一個對象。
若要在列表框、組合框或復選框的值改變時執(zhí)行某代碼,可將它編寫在InteiactiveChange事件(不是Click事件)中,因為一般而言,對象的值的改變并不觸發(fā)對象的Click事件,有時對象的值沒改變,而C1ick事件卻會發(fā)生。
當拖動一對象時,系統(tǒng)將忽略其他鼠標事件。例如,在拖放操作中:MotlseUp和Mot,se—Move事件不會發(fā)生。
Valid和when事件有返回值,默認為“真”(.T.)。若從when事件返回“假”(.F.)或O,對象將不能被激活。若從Valid事件返回“假”(.F.)或O,不能將焦點從對象上移走。
方法程序的層次
(1)容器事件和對象事件
為對象編寫事件代碼時,應注意以下兩條基本規(guī)則:
①容器不處理與所包含的對象相關聯(lián)的事件。
②若沒有與某對象相關聯(lián)的事件代碼,則Visual FoxPro在該對象所在類的層次結(jié)構中逐層向上檢查是否有與此事件相關聯(lián)的代碼。
當用戶以任意一種方式(使用Tab鍵、單擊鼠標、將鼠標指針移至對象上等)與對象交互作用時,對象事件被觸發(fā)。每個對象只接收自己的事件。例如,盡管命令按鈕位于表單上,當用戶單擊命令按鈕時,不會觸發(fā)表單的Click事件,只觸發(fā)命令按鈕的Click事件。
容器事件代碼與其所包含的對象事件代碼相互獨立。
若沒有與命令按鈕相關聯(lián)的Click事件代碼,盡管有與表單相關聯(lián)的Click事件代碼,當用戶單擊按鈕時,也不會執(zhí)行與表單相關聯(lián)的Click事件代碼。
這條規(guī)則也適用于表格控件。表格包含列,列又包含標頭和文本框。當事件發(fā)生時,只有與事件相關聯(lián)的最底層對象識別該事件,高層的容器不識別這個事件。
事件的響應程序段一般是一個過程,用事件的名稱來命名。
一段事件響應代碼應置于何處,是由事件發(fā)生的順序決定的。
表單中所有對象的Init事件將在表單的Init事件之前執(zhí)行,所以在表單顯示以前,就可在表單的Init事件代碼中處理表單上的任意一個對象。
若要在列表框、組合框或復選框的值改變時執(zhí)行某代碼,可將它編寫在InteiactiveChange事件(不是Click事件)中,因為一般而言,對象的值的改變并不觸發(fā)對象的Click事件,有時對象的值沒改變,而C1ick事件卻會發(fā)生。
當拖動一對象時,系統(tǒng)將忽略其他鼠標事件。例如,在拖放操作中:MotlseUp和Mot,se—Move事件不會發(fā)生。
Valid和when事件有返回值,默認為“真”(.T.)。若從when事件返回“假”(.F.)或O,對象將不能被激活。若從Valid事件返回“假”(.F.)或O,不能將焦點從對象上移走。
方法程序的層次
(1)容器事件和對象事件
為對象編寫事件代碼時,應注意以下兩條基本規(guī)則:
①容器不處理與所包含的對象相關聯(lián)的事件。
②若沒有與某對象相關聯(lián)的事件代碼,則Visual FoxPro在該對象所在類的層次結(jié)構中逐層向上檢查是否有與此事件相關聯(lián)的代碼。
當用戶以任意一種方式(使用Tab鍵、單擊鼠標、將鼠標指針移至對象上等)與對象交互作用時,對象事件被觸發(fā)。每個對象只接收自己的事件。例如,盡管命令按鈕位于表單上,當用戶單擊命令按鈕時,不會觸發(fā)表單的Click事件,只觸發(fā)命令按鈕的Click事件。
容器事件代碼與其所包含的對象事件代碼相互獨立。
若沒有與命令按鈕相關聯(lián)的Click事件代碼,盡管有與表單相關聯(lián)的Click事件代碼,當用戶單擊按鈕時,也不會執(zhí)行與表單相關聯(lián)的Click事件代碼。
這條規(guī)則也適用于表格控件。表格包含列,列又包含標頭和文本框。當事件發(fā)生時,只有與事件相關聯(lián)的最底層對象識別該事件,高層的容器不識別這個事件。

