16.1對(duì)象、屬性、事件和方法
目的與要求: 通過本次課的學(xué)習(xí),掌握VFP的對(duì)象的操作方法。 | ||
教學(xué)內(nèi)容與時(shí)間安排、教學(xué)方法: 教學(xué)安排: 對(duì)象的引用、屬性設(shè)置 40分鐘 調(diào)用方法程序、響應(yīng)事件 40分鐘 教學(xué)方法: CAI、圖形、表格 | ||
教學(xué)重點(diǎn)及如何突出重點(diǎn)、難點(diǎn)及如何突破難點(diǎn): 教學(xué)重點(diǎn): 對(duì)象的引用、屬性設(shè)置、調(diào)用方法程序、響應(yīng)事件 教學(xué)難點(diǎn): 調(diào)用方法程序、響應(yīng)事件 | ||
基本內(nèi)容 | 教學(xué) | 課堂設(shè)計(jì) |
9.4 對(duì)象的操作 1.對(duì)象的引用 在Visual FoxPro中,由于包容對(duì)象的存在,對(duì)象是可以進(jìn)行嵌套的。為了引用和處理包容對(duì)象,需要知道對(duì)象相對(duì)于容器的層次關(guān)系。圖8-1給出一種可能的容器嵌套方式,表單form1在表單集formset1中 知道了對(duì)象在容器中的層次,就可以引用對(duì)象。引用對(duì)象分為絕對(duì)引用和相對(duì)引用兩種方法: (1)對(duì)象的絕對(duì)引用: 對(duì)象絕對(duì)引用通過提供對(duì)象完整的容器層次來引用對(duì)象。絕對(duì)引用使用格式如下:<對(duì)象>.<屬性>或<對(duì)象>.<方法> 例如:在圖8-1中,要使嵌套在頁(yè)框中的命令按鈕1(Command1)可用,命令按鈕2(Command2)禁用,可以通過設(shè)置命令按鈕的Enabled屬性來實(shí)現(xiàn)。 Formset1.Form1.PageFrame1.Page1.Command1.Enabled=.T. Formset1.Form1.PageFrame1.Page1.Command2.Enabled=.F. 以上示例引用格式為:表單集.表單.頁(yè)框.頁(yè).命令按鈕.Enabled=.T.。其中Enabled屬性用于指定對(duì)象能否響應(yīng)用戶引發(fā)的事件,允許將對(duì)象設(shè)置為啟用或被禁 (2)對(duì)象的相對(duì)引用 對(duì)象除了采用絕對(duì)引用方式外,還可以采用相對(duì)引用的方式。相對(duì)引用是通過使用一些屬性和關(guān)鍵字,更方便地從容器層次中引用對(duì)象。表8-9列出了常用的引用關(guān)鍵字: 要設(shè)置表單集中Form1表單的Command1命令按鈕的標(biāo)題屬性,可以使用下面的命令 : ThisformSet.Form1.Command1.Caption="確定"或 Thisform.Command1.Caption="確定"或 This.Caption="確定" 2.設(shè)置屬性 對(duì)象的屬性既可以在設(shè)計(jì)對(duì)象時(shí)設(shè)置,也可以在程序運(yùn)行時(shí)設(shè)置。在設(shè)計(jì)對(duì)象時(shí)對(duì)象屬性可以通過“屬性”窗口設(shè)置,屬性窗口的使用方法將在后緒章節(jié)介紹,下面介紹如何使用命令在程序中設(shè)置對(duì)象的屬性。 用戶在編程時(shí)可以引用對(duì)象的屬性值,也可以以命令方式對(duì)對(duì)象的某些屬性進(jìn)行修改。在運(yùn)行時(shí)可以設(shè)置并可讀取屬性值的屬性稱為“讀寫屬性”;而在運(yùn)行時(shí)只能讀取屬性值的屬性稱“只讀屬性”。設(shè)置對(duì)象屬性的語法格式如下:<容器>.<對(duì)象>.<屬性>=<屬性值> 例如,下面的命令對(duì)表單Form1中復(fù)選框Check1的屬性進(jìn)行設(shè)置: thisForm.Check1.Value=1 thisForm.Check1.Enabled=.F. 在屬性設(shè)置時(shí),可能要為一個(gè)對(duì)象設(shè)置多個(gè)屬性,或者要為同一容器中的多個(gè)對(duì)象設(shè)置屬性,都需要給出相同層次結(jié)構(gòu)中的從屬關(guān)系。為此Visual FoxPro提供了WITH……ENDWITH結(jié)構(gòu)語句,簡(jiǎn)化了設(shè)置多個(gè)對(duì)象、多個(gè)屬性的過程。例如,在當(dāng)前表單集的表單中,要設(shè)置表格列的多個(gè)屬性,可以使用以下格式: WITH Thisformset.Form1.Grid1.Column1 .Width = 25 .Resizable = .F. .ForeColor = RGB(0,0,0) .BackColor = RGB(255,255,255) .SelectOnEntry = .T. ENDWITH 注:為生成高效的程序代碼和減少數(shù)據(jù)冗余,當(dāng)引用當(dāng)前對(duì)象的時(shí)候,當(dāng)前對(duì)象在程序代碼中可以省略.
-----------本節(jié)課結(jié)束-----------
3.調(diào)用方法程序 如果已經(jīng)創(chuàng)建對(duì)象,便可以在應(yīng)用程序的任何一個(gè)地方調(diào)用這個(gè)對(duì)象的方法程序。調(diào)用方法程序,可以使用以下語法:Parent.<對(duì)象>.<方法> 例如,下列語句調(diào)用方法程序來顯示表單,并將焦點(diǎn)設(shè)置在文本框上: FormSet.Form1.Show FormSet.Form1.Text1.SetFocus 有些方法可以帶返回值,調(diào)用時(shí)方法名后就要使用園括號(hào)。如果方法使用多個(gè)參數(shù),調(diào)用時(shí)需要將這些參數(shù)放到方法名后的園括號(hào)內(nèi),并用逗號(hào)將它們分開。 語法是:Parent.<對(duì)象>.<方法>(參數(shù)1,參數(shù)2,...參數(shù)n) 4.響應(yīng)事件 當(dāng)事件發(fā)生時(shí),包含在事件過程中的代碼就會(huì)執(zhí)行,這是對(duì)事件的響應(yīng)。對(duì)于控件類對(duì)象,它們能夠識(shí)別的事件是固定的,用戶不能用程序設(shè)計(jì)方法再產(chǎn)生其它事件,但是可以設(shè)計(jì)和調(diào)用與這些事件相關(guān)的過程代碼。例如:包含在命令按鈕Command1的Click事件中的代碼,當(dāng)用戶單擊該命令按鈕時(shí)將會(huì)被執(zhí)行。如果我們?cè)诿畎粹oCommand1的Click事件中添加如下代碼:ThisForm.Release,則當(dāng)用戶單擊該命令按鈕Command1時(shí),將會(huì)調(diào)用釋放表單的方法程序 事件有兩種觸發(fā)方式: 第一種是用戶干預(yù)觸發(fā)事件,如點(diǎn)擊鼠標(biāo),可以產(chǎn)生Click(單擊)、DoubleClick(雙擊)、MouseMove(移動(dòng)到)、DragDrop(拖放)等事件,按鍵可以產(chǎn)生一個(gè)KeyPress(按鍵)事件,這些事件是用戶的實(shí)際操作。另外,用戶還可以通過MOUSE、KEYBOARD和ERROR命令來模擬鼠標(biāo)、鍵盤操作和模擬錯(cuò)誤,產(chǎn)生相應(yīng)的事件。例如,使用ThisForm.Command1.Click可以觸發(fā)單擊鼠標(biāo)事件。 第二種是Visual FoxPro系統(tǒng)自動(dòng)觸發(fā)事件,這類事件占Visual FoxPro事件的絕大部分。例如,當(dāng)創(chuàng)建對(duì)象時(shí),都會(huì)自動(dòng)產(chǎn)生Init(初始)事件;釋放對(duì)象時(shí),會(huì)自動(dòng)產(chǎn)生Destroy(釋放)事件。 在容器層次中,容器不處理與其所包含控件相關(guān)聯(lián)的事件,也就是容器事件的過程代碼與控件的事件過程代碼是相互獨(dú)立的。當(dāng)事件發(fā)生時(shí),只有與事件相關(guān)聯(lián)的最里層對(duì)象識(shí)別事件,較高層的容器不識(shí)別該事件。例如,當(dāng)用戶單擊表單上的命令按鈕時(shí),表單的Click事件不會(huì)發(fā)生,只有命令按鈕的Click事件發(fā)生。
|
講述
|
對(duì)象的絕對(duì)引用15分鐘
對(duì)象的相對(duì)引用10分鐘
設(shè)置屬性10分鐘
調(diào)用方法程序15分鐘
響應(yīng)事件20分鐘 |
CopyRight ? 2016 宣城市信息工程學(xué)校 地址:宣城市梅溪路902號(hào) 后臺(tái)登錄
郵編:242000 電話(傳真):0563-2629508 如有問題,歡迎惠賜 Email:xclmq@163.com