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