




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫技術(shù)及應(yīng)用南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院主講:劉生第6章VisualFoxPro程序設(shè)計(jì)的面向?qū)ο蠓椒暇┬畔⒐こ檀髮W(xué)計(jì)算機(jī)與軟件學(xué)院主講:劉生數(shù)據(jù)庫技術(shù)及應(yīng)用教學(xué)目的和要求理解面向?qū)ο蟪绦蛟O(shè)計(jì)有關(guān)概念了解VFP基類掌握對(duì)象的引用與處理掌握VFP中常用的事件和方法掌握創(chuàng)建子類的過程,了解類的管理與應(yīng)用了解工具欄的創(chuàng)建與應(yīng)用
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法3主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生教學(xué)重點(diǎn)
類和對(duì)象的概念及特點(diǎn)對(duì)象的引用與處理VFP中的常用事件和方法類的創(chuàng)建、管理2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法4主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生章節(jié)名稱6.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述6.2VFP系統(tǒng)的基類6.3對(duì)象的引用與處理6.4VFP中的方法6.5VFP中的事件6.6類的創(chuàng)建與應(yīng)用6.7工具欄的創(chuàng)建與應(yīng)用2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法5主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向?qū)ο蟮某绦蛟O(shè)計(jì)方法類與對(duì)象類的特點(diǎn)對(duì)象的屬性、事件與方法2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法6主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.1面向?qū)ο蟮某绦蛟O(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)設(shè)計(jì)方法——自頂向下、功能分解開發(fā)過程通常是從“做什么”到“如何做”優(yōu)點(diǎn):結(jié)構(gòu)性強(qiáng)、便于設(shè)計(jì)和理解面向?qū)ο蟮某绦蛟O(shè)計(jì)基于問題對(duì)象的自底向上的功能綜合開發(fā)過程是從“用什么做”到“要做什么”優(yōu)點(diǎn):簡(jiǎn)化程序設(shè)計(jì),提高程序代碼的可重用性更接近現(xiàn)實(shí)世界,可降低開發(fā)和維護(hù)的費(fèi)用可以和各種模型自然的融合2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法7主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.2類與對(duì)象(1)對(duì)象(Object)對(duì)象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,是構(gòu)成系統(tǒng)的一個(gè)基本單位。對(duì)象由一組屬性(靜態(tài)特征)和一組行為(動(dòng)態(tài)特征、操作)構(gòu)成。屬性是用來描述對(duì)象靜態(tài)特征的數(shù)據(jù)項(xiàng),行為是用來描述對(duì)象動(dòng)態(tài)特征的操作序列。每個(gè)對(duì)象都具有屬性,以及與之相關(guān)的事件和方法,通過對(duì)象的屬性、事件和方法來處理對(duì)象。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法8主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.2類與對(duì)象(2)類(Class)類是具有相同屬性和行為的一組對(duì)象的抽象集合。如汽車、電話等。類是面向?qū)ο蟪绦蛟O(shè)計(jì)中的核心。類是對(duì)象的抽象,對(duì)象是類的實(shí)例類是靜態(tài)概念,對(duì)象是動(dòng)態(tài)概念2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法9主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.2類與對(duì)象(3)基類(BaseClass):VFP系統(tǒng)提供的內(nèi)部定義的類。(表單、控件)(表6-1)子類(SubClass):引用VFP基類或其他的子類,建立的新類。用戶自定義類(User-DefineClass):與基類相似,由用戶定義,可用于派生子類,但無可視化表示形式。VFP基類派生子類子類子類2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法10主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.3類的特點(diǎn)抽象性(Abstraction)是指提取一個(gè)類或?qū)ο笈c眾不同的特征,而不是對(duì)該類或?qū)ο蟮乃行畔⑦M(jìn)行處理。封裝性(Encapsulation)說明了包含和隱藏對(duì)象的內(nèi)部信息(如內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和代碼)的能力。封裝和隱藏是面向?qū)ο蠹夹g(shù)的核心。繼承性(Inheritance)就是子類延用其父類特征的能力。繼承性體現(xiàn)并擴(kuò)充了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的共享機(jī)制。(對(duì)應(yīng)的另一個(gè)概念:派生)多態(tài)性(Polymorphism)主要是指一些相關(guān)聯(lián)的類包含同名的方法程序,但方法程序的具體內(nèi)容可以不同。多態(tài)性使得相同的操作可以作用于多種類型的對(duì)象上并獲得不同的結(jié)果。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法11主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.4對(duì)象的屬性、事件與方法(1)屬性(Property)定義對(duì)象的特征或某一方面的行為。在VFP系統(tǒng)中,所創(chuàng)建對(duì)象的屬性由對(duì)象所基于的類決定,用戶也可以根據(jù)需要為對(duì)象創(chuàng)建新的屬性。事件(Event)是由系統(tǒng)預(yù)先定義好的、能夠被對(duì)象識(shí)別的一個(gè)動(dòng)作。用戶可以編寫相應(yīng)的代碼對(duì)此動(dòng)作進(jìn)行響應(yīng)。通常事件是由用戶的動(dòng)作產(chǎn)生的,也可以由程序代碼或系統(tǒng)產(chǎn)生,如計(jì)時(shí)器(Timer)。在VFP系統(tǒng)中,不同的對(duì)象所能識(shí)別的事件有所不同,但整個(gè)事件集合是固定的,用戶不能創(chuàng)建新的事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法12主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.1.4對(duì)象的屬性、事件與方法(2)方法(Method)是對(duì)象能夠執(zhí)行的一個(gè)操作。在VFP系統(tǒng)中,方法是與對(duì)象相關(guān)聯(lián)的過程(完成某種操作的處理代碼),通常也稱為方法程序。方法可以由用戶根據(jù)需要自己創(chuàng)建,因此其集合是可以無限制地?cái)U(kuò)展的。事件可以具有與之相關(guān)聯(lián)的方法程序。方法程序也可以獨(dú)立于事件而單獨(dú)存在,它在系統(tǒng)中被顯式地調(diào)用。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法13主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.2VFP系統(tǒng)的基類(1)容器類(ContainerClass)(表6-4)是可以包容其他類的基類。將容器類的對(duì)象加入表單后,無論在設(shè)計(jì)時(shí)還是在運(yùn)行時(shí),均可以將該容器類的對(duì)象作為一個(gè)整體來處理,也可以對(duì)其包容的對(duì)象分別進(jìn)行處理。控件類(ControlClass)是可以包含在容器類中的基類,也稱為非容器類,其封裝比容器類嚴(yán)密。例如,標(biāo)簽、文本框、命令按鈕等都屬于控件類。VFP中的對(duì)象根據(jù)所基于的類的性質(zhì),也可以分為容器對(duì)象和控件對(duì)象。容器對(duì)象可以作為其他對(duì)象的父對(duì)象,控件對(duì)象可以包含在容器對(duì)象中,但不能作為其他對(duì)象的父對(duì)象。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法14主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.2VFP系統(tǒng)的基類(2)最小屬性集屬性說明Class該類屬于何種類型BaseClass該類由何種基類派生而來ClassLibrary該類從屬于哪種類庫ParentClass對(duì)象所基于的類。若該類直接由VFP基類派生而來,則ParentClass屬性值與BaseClass屬性值相同2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法15主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.2VFP系統(tǒng)的基類(3)最小事件集事件說明Init當(dāng)對(duì)象創(chuàng)建時(shí)激活Destroy當(dāng)對(duì)象從內(nèi)存中釋放時(shí)激活Error當(dāng)類中的事件或方法程序發(fā)生錯(cuò)誤時(shí)激活2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法16主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3對(duì)象的引用與處理在VFP系統(tǒng)中,用戶可以基于類創(chuàng)建對(duì)象。一旦創(chuàng)建了對(duì)象,便可以通過對(duì)對(duì)象屬性的修改、方法程序的調(diào)用來處理對(duì)象。
引用對(duì)象設(shè)置對(duì)象屬性調(diào)用對(duì)象的方法程序響應(yīng)事件2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法17主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.1引用對(duì)象(1)容器作為父對(duì)象,允許包含子對(duì)象。如果子對(duì)象也是容器類對(duì)象,則還可以包含其子對(duì)象,從而形成對(duì)象嵌套的層次關(guān)系。若要引用一個(gè)對(duì)象,首先需要明確該對(duì)象所處的層次,這個(gè)層次可以看作對(duì)象的地址。引用時(shí)容器中各個(gè)對(duì)象之間(以及對(duì)象與屬性之間)用“.”(點(diǎn))進(jìn)行分隔。引用對(duì)象的格式如下所示:
引用地址.對(duì)象名稱
引用地址又可以分為絕對(duì)引用地址和相對(duì)引用地址,所以對(duì)象的引用也就可以分為絕對(duì)引用和相對(duì)引用。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法18主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.1引用對(duì)象(2)絕對(duì)引用如果引用地址是從最外層容器開始直到目標(biāo)對(duì)象,那就是絕對(duì)引用地址。用絕對(duì)引用地址引用對(duì)象稱為絕對(duì)引用。如:FormSet1.Form1.Text1相對(duì)引用如果引用地址是從指定參照開始直到目標(biāo)對(duì)象,那就是相對(duì)引用地址。用相對(duì)引用地址引用對(duì)象稱為相對(duì)引用。如:
ThisForm.Text12023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法19主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.2設(shè)置對(duì)象屬性通過對(duì)對(duì)象屬性的設(shè)置,可以定義對(duì)象的特征或某一方面的行為。對(duì)象的大多數(shù)屬性值既可以在設(shè)計(jì)階段設(shè)置,也可以在運(yùn)行階段進(jìn)行設(shè)置,但也有一些屬性是不能被設(shè)置的,即是只讀的(斜體)。
在采用可視化的方法進(jìn)行對(duì)象設(shè)計(jì)時(shí),可以在“屬性”窗口中對(duì)對(duì)象的屬性進(jìn)行設(shè)置;在程序代碼中,可以使用如下的語法對(duì)對(duì)象的屬性進(jìn)行設(shè)置:
引用對(duì)象.屬性=值可以利用WITH…ENDWITH語句簡(jiǎn)化對(duì)同一對(duì)象的多個(gè)屬性值的設(shè)置。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法20主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.3調(diào)用對(duì)象的方法程序?qū)τ谝呀?jīng)創(chuàng)建的對(duì)象,用戶可以根據(jù)需要在應(yīng)用程序的任何地方調(diào)用這個(gè)對(duì)象的方法程序。調(diào)用方法程序的語法格式如下:
引用對(duì)象.方法程序
FormSet1.Form1.Show&&激活并顯示表單對(duì)象“Form1”FormSet1.Form1.Text2.SetFocus
對(duì)于有返回值的方法程序必須以圓括號(hào)結(jié)尾(類似于函數(shù)調(diào)用),如果有參數(shù)傳遞給方法程序,該參數(shù)也必須放在括號(hào)中。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法21主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.4響應(yīng)事件(1)當(dāng)對(duì)象的某個(gè)事件發(fā)生時(shí),該事件的處理程序代碼將被執(zhí)行。如果事件沒有與之相關(guān)聯(lián)的處理程序,則當(dāng)事件發(fā)生時(shí)不會(huì)發(fā)生任何操作。因此,在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員需要對(duì)程序中的對(duì)象指派相應(yīng)的事件并編寫相應(yīng)的事件處理代碼。
大多數(shù)事件都是由用戶的操作觸發(fā)的,如用戶在某個(gè)對(duì)象上單擊、雙擊或移動(dòng)鼠標(biāo)將會(huì)觸發(fā)該對(duì)象的Click、DblClick或MouseMove事件。事件也能由系統(tǒng)事件觸發(fā),如計(jì)時(shí)器控件中的Timer事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法22主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.3.4響應(yīng)事件(2)為對(duì)象編寫事件處理代碼時(shí),應(yīng)注意:容器對(duì)象一般不處理與所包含的對(duì)象相關(guān)聯(lián)的事件;如果沒有與對(duì)象相關(guān)聯(lián)的事件代碼,VFP系統(tǒng)將在類等級(jí)的更高層次上檢查是否有與此事件相關(guān)聯(lián)的處理代碼。還需注意的是,當(dāng)連續(xù)發(fā)生一系列事件時(shí),若起始事件與某個(gè)對(duì)象相關(guān)聯(lián),那么整個(gè)事件隊(duì)列可以都屬于該對(duì)象,這取決于起始事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法23主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.4VFP中的方法(1)方法(程序)是對(duì)象能夠執(zhí)行的一個(gè)操作。在VFP中,系統(tǒng)提供了一些方法(表6-6),其程序是一些默認(rèn)過程。用戶可以調(diào)用這些方法程序,也可以為這些方法設(shè)計(jì)新的程序(即修改方法程序的默認(rèn)過程),還可以創(chuàng)建新的方法。Hide方法功能:通過把對(duì)象的Visible屬性設(shè)置為“假”(.F.),隱藏表單、表單集或工具欄。調(diào)用語法:對(duì)象名.Hide2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法24主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.4VFP中的方法(2)Quit方法功能:結(jié)束一個(gè)VFP實(shí)例,返回到創(chuàng)建該實(shí)例的應(yīng)用程序。調(diào)用語法:對(duì)象名.QuitRefresh方法功能:重畫表單或控件,并刷新所有值。調(diào)用語法:對(duì)象名.Refresh可使用Refresh方法強(qiáng)制性地完全重畫表單或控件,并更新控件的值。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法25主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.4VFP中的方法(3)Release方法功能:從內(nèi)存中釋放表單或表單集。調(diào)用語法:對(duì)象名.ReleaseReset方法功能:重置計(jì)時(shí)器控件,讓它從0開始。調(diào)用語法:計(jì)時(shí)器名.Reset2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法26主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.4VFP中的方法(4)SetAll方法功能:為容器對(duì)象中的所有控件或某類控件指定一個(gè)屬性設(shè)置。調(diào)用語法:容器名.SetAll(cProperty,Value[,cClass])其中,參數(shù)cProperty指定要設(shè)置的屬性,Value指定屬性的新值,cClass指定類名。17.SetFocus方法功能:為一個(gè)控件指定焦點(diǎn)。調(diào)用語法:控件名.SetFocus如果一個(gè)控件的Enabled或Visible屬性值為“假”(.F.),或者控件的When事件返回“假”(.F.),則不能給該控件指定焦點(diǎn)。
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法27主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.4VFP中的方法(5)Show方法功能:顯示一個(gè)表單,并確定是模式表單還是無模式表單。調(diào)用語法:表單名.Show([nStyle])Show方法把表單或表單集的Visible屬性設(shè)置為“真”(.T.),并使表單成為活動(dòng)的對(duì)象。如果表單的Visible屬性已經(jīng)設(shè)置為“真”(.T.),則Show方法使它成為活動(dòng)對(duì)象。
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法28主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5VFP中的事件每個(gè)對(duì)象都有與之相關(guān)的事件。對(duì)于已創(chuàng)建的多個(gè)對(duì)象,用戶根據(jù)需要可以為某個(gè)或某些事件配置相應(yīng)的事件處理代碼,使得應(yīng)用程序在運(yùn)行過程中根據(jù)所發(fā)生的事件做出相應(yīng)的處理。事件驅(qū)動(dòng)和事件循環(huán)核心事件事件觸發(fā)的順序常用事件2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法29主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.1事件驅(qū)動(dòng)和事件循環(huán)事件驅(qū)動(dòng)采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法設(shè)計(jì)的應(yīng)用程序,其功能的實(shí)現(xiàn)是由事件驅(qū)動(dòng)的。所謂事件驅(qū)動(dòng),是指一旦產(chǎn)生特定事件,就要對(duì)該事件做出響應(yīng)。而響應(yīng)就是執(zhí)行由用戶根據(jù)數(shù)據(jù)處理需要為該事件編寫的過程代碼。事件循環(huán)利用VFP進(jìn)行應(yīng)用程序設(shè)計(jì)時(shí),必須創(chuàng)建事件循環(huán)(EventLoop)。在VFP系統(tǒng)中,事件循環(huán)是由READEVENTS命令建立、CLEAREVENTS命令終止的交互式的運(yùn)行時(shí)刻環(huán)境。當(dāng)發(fā)出READEVENTS命令時(shí),系統(tǒng)啟動(dòng)事件處理,發(fā)出CLEAREVENTS命令時(shí),停止事件處理。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法30主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.2核心事件VFP基類的事件集合是固定的,不能進(jìn)行擴(kuò)充。每個(gè)類都可以識(shí)別固定的默認(rèn)事件集合,它的最小事件集包括Init、Destroy和Error事件。VFP系統(tǒng)核心事件集中的事件適用于大多數(shù)的對(duì)象(表6-7)。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法31主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.3事件觸發(fā)的順序在VFP中,有些事件以及事件激發(fā)的順序是固定的(例如,表單在創(chuàng)建或刪除時(shí)發(fā)生的事件序列),有些事件是獨(dú)立發(fā)生的(例如,Timer事件等),但大多數(shù)事件是用戶與VFP的交互操作時(shí)伴隨著其他一系列事件發(fā)生的。查看VFP事件的激發(fā)順序(事件序列)可以利用調(diào)試器中的事件跟蹤。當(dāng)與表單和控件相關(guān)聯(lián)的事件發(fā)生時(shí),事件跟蹤都將把發(fā)生的事件記錄下來,以便當(dāng)前或過后查看,幫助用戶確定事件處理代碼應(yīng)加入到哪個(gè)事件中。注:在事件跟蹤時(shí),通常將MouseMove事件和Paint事件從事件跟蹤表中移出,因?yàn)檫@些事件發(fā)生頻繁,較少對(duì)這些事件進(jìn)行跟蹤。表6-8列出了VFP中一些事件的一般觸發(fā)順序,其中假定數(shù)據(jù)環(huán)境的AutoOpenTables屬性設(shè)置為“真”(.T.)。
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法32主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.4常用事件(1)在VFP系統(tǒng)中,按觸發(fā)機(jī)制可以將事件分為鼠標(biāo)事件、鍵盤事件、表單事件、改變控件內(nèi)容事件、對(duì)象焦點(diǎn)事件、數(shù)據(jù)環(huán)境事件等類型。鼠標(biāo)事件在VFP應(yīng)用程序的界面中,利用鼠標(biāo)對(duì)其中對(duì)象進(jìn)行操作觸發(fā)的事件。主要包括:Click事件、DblClick事件、RightClick事件、MouseMove事件、MouseDown和MouseUp事件、DragDrop事件、DownClick和UpClick事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法33主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.4常用事件(2)鍵盤事件在VFP中,與鍵盤操作相關(guān)的事件主要是KeyPress事件。當(dāng)用戶按下并釋放某個(gè)鍵時(shí)發(fā)生此事件。KeyPress事件常用于截取輸入到控件中的鍵擊,使用戶可以立即檢驗(yàn)鍵擊的有效性或?qū)︽I入的字符進(jìn)行格式編排。表單事件表單事件是指操作表單對(duì)象時(shí)發(fā)生的事件。常用的表單事件主要有Load事件、Unload事件、Activate事件和Deactivate事件。
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法34主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.4常用事件(3)改變控件內(nèi)容事件改變控件內(nèi)容的事件有InteractiveChange事件和ProgrammaticChange事件。對(duì)象焦點(diǎn)事件當(dāng)對(duì)象取得焦點(diǎn)(Focus)時(shí),該對(duì)象成為當(dāng)前活動(dòng)對(duì)象。焦點(diǎn)事件用以指出當(dāng)前被操作的對(duì)象。焦點(diǎn)事件有GotFocus事件、LostFocus事件、When事件和Valid事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法35主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.5.4常用事件(4)數(shù)據(jù)環(huán)境事件數(shù)據(jù)環(huán)境包括與表單相關(guān)的表和視圖,以及表單要求的表之間的關(guān)系。與數(shù)據(jù)環(huán)境有關(guān)的事件有BeforeOpenTables事件和AfterCloseTables事件。其他事件Timer事件、Init事件、Destroy事件、Error事件。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法36主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6類的創(chuàng)建與應(yīng)用利用面向?qū)ο蟪绦蛟O(shè)計(jì)方法開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí),通常把常用的對(duì)象封裝成類。根據(jù)需要在類的基礎(chǔ)上實(shí)例化成一個(gè)或多個(gè)具體對(duì)象,再利用這些對(duì)象設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序。
子類和類庫類的設(shè)計(jì)和創(chuàng)建類和類庫的管理類的應(yīng)用2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法37主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.1子類和類庫(1)為了縮短VFP應(yīng)用程序的開發(fā)時(shí)間,提高開發(fā)效率,以及維護(hù)應(yīng)用程序的一致性,應(yīng)該盡可能地將一些通用的功能和一致的控件外觀設(shè)計(jì)成類。在VFP系統(tǒng)中,用戶可以基于系統(tǒng)提供的基類創(chuàng)建自定義子類以擴(kuò)展基類的功能,也可以基于已創(chuàng)建的自定義子類再創(chuàng)建子類(可形象地稱之為“孫類”),這一過程可以繼續(xù)下去,從而形成類等級(jí)結(jié)構(gòu)。但子類的層次不宜過深,一般三層就足夠使用了。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法38主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.1子類和類庫(2)VFP系統(tǒng)將用戶自定義子類保存在擴(kuò)展名為.VCX的可視類庫文件中。一個(gè)類庫文件中可以保存多個(gè)自定義子類,自定義子類及其“孫類”可以存儲(chǔ)在同一個(gè)類庫文件中,也可以保存在不同的類庫文件中。但VFP基類并不保存在.VCX類庫文件中。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法39主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.2類的設(shè)計(jì)和創(chuàng)建在VFP系統(tǒng)中,創(chuàng)建類的方法主要有兩種:使用“類設(shè)計(jì)器”和以編程方式創(chuàng)建類。無論使用哪一種方式,都要完成創(chuàng)建類、類屬性的定義、類的事件和方法的定義等操作。此外,還可以在設(shè)計(jì)表單時(shí)將表單和控件保存為類。
使用“類設(shè)計(jì)器”創(chuàng)建類以編程方式創(chuàng)建類將表單和控件保存為類2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法40主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生1.使用“類設(shè)計(jì)器”創(chuàng)建類“類設(shè)計(jì)器”是定義類的主要工具。首先通過“新建類”對(duì)話框創(chuàng)建子類和類庫,接著在“類設(shè)計(jì)器”窗口中定義類的屬性、事件和方法程序。(1)創(chuàng)建類(2)定義類的屬性(3)定義類的事件和方法程序(4)查看和設(shè)置類信息2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法41主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生2.以編程方式創(chuàng)建類DEFINECLASS命令用于創(chuàng)建一個(gè)用戶自定義的類或子類,且指定類或子類的屬性、事件和方法。語法格式:DEFINECLASS類名1AS父類名[[PROTECTED屬性名1,屬性名2…]屬性名=表達(dá)式…][ADDOBJECT[PROTECTED]對(duì)象名AS類名2[NOINIT][WITH屬性名表]]…[[PROTECTED]FUNCTION|PROCEDURE過程名[_ACCESS|_ASSIGN]|THIS_ACCESS[NODEFAULT]過程或函數(shù)語句[ENDFUNC|ENDPROC]]…ENDDEFINE
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法42主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生3.將表單和控件保存為類在設(shè)計(jì)表單時(shí),如果表單或表單上的某些控件具有通用性,也可以將表單或表單上的選定控件保存為類。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法43主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.3類和類庫的管理(1)在VFP系統(tǒng)中,用戶可以使用“項(xiàng)目管理器”或“類瀏覽器”來管理所創(chuàng)建的類和類庫,如類庫中類的修改、刪除、復(fù)制或移動(dòng)等。在“項(xiàng)目管理器”窗口中管理類和類庫(1)在項(xiàng)目中添加或移去類庫
注意:“移去”操作僅從當(dāng)前項(xiàng)目中移去類庫,而“刪除”操作不僅將類庫從當(dāng)前項(xiàng)目中移去,而且將相應(yīng)的類庫文件從磁盤上刪除。(2)復(fù)制或刪除類庫中的類注意:應(yīng)該盡可能地將所有子類都包含在同一個(gè)類庫中。(3)重命名類庫中的類注意:重命名一個(gè)類最好在創(chuàng)建其子類或應(yīng)用該類之前進(jìn)行,一旦該類被使用就不必再去重命名。
2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法44主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.3類和類庫的管理(2)在“類瀏覽器”窗口中管理類和類庫VFP系統(tǒng)中的“類瀏覽器”是專門用來顯示類庫或表單中的類的工具,它除了能瀏覽類庫中的類外,還能顯示.TLB、.OLB或.EXE文件中的類型庫信息。用戶可以使用“類瀏覽器”顯示類庫或表單中的表,以及查看、使用和管理類及其用戶自定義成員,使得管理類和類庫更加方便。選擇“工具”菜單中的“類瀏覽器”命令,或在“命令”窗口中輸入“DO(_BROWSER)”命令,都可以打開“類瀏覽器”窗口。2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法45主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.4類的應(yīng)用(1)用戶創(chuàng)建了合適的類以后,就可以在這些類的基礎(chǔ)上實(shí)例化成具體對(duì)象,通過對(duì)對(duì)象的引用來進(jìn)行應(yīng)用程序的開發(fā)。添加類到表單(1)從“項(xiàng)目管理器”窗口拖放到“表單設(shè)計(jì)器”如果所需的類庫和類已經(jīng)存在于一個(gè)項(xiàng)目中,則可將類從“項(xiàng)目管理器”的類庫中用鼠標(biāo)拖至“表單設(shè)計(jì)器”中的表單上或表單上的容器控件中,這便可以直接在表單或表單的容器控件中創(chuàng)建類所對(duì)應(yīng)的可視控件,并可以像使用基類控件一樣設(shè)置屬性或編輯事件代碼。(2)注冊(cè)可視類庫如果類庫中的類在表單設(shè)計(jì)時(shí)需要頻繁使用,可以將類注冊(cè),以便在“表單設(shè)計(jì)器”的“表單控件”工具欄上顯示和使用它們。(3)在“表單控件”工具欄中顯示類控件2023/7/22
第六章VFP面向?qū)ο蟪绦蛟O(shè)計(jì)方法46主講:南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院劉生6.6.4類的應(yīng)用(2)覆蓋默認(rèn)屬性設(shè)置基于用戶自定義類創(chuàng)建的對(duì)象被添加到表單后,可以修改該對(duì)象中所有未被保護(hù)的屬性值。表單運(yùn)行時(shí),表單中對(duì)象接受用戶修改后的屬性設(shè)置,即以用戶定義的新屬性值來覆蓋類的默認(rèn)屬性值。這樣,即使在“類設(shè)計(jì)器”中該屬性的值被重新修改,表單中對(duì)象的屬性值也不會(huì)改變。如果用戶在設(shè)計(jì)表單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人才評(píng)估報(bào)告范文
- 情感困惑的調(diào)查報(bào)告范文
- 橋梁造價(jià)實(shí)訓(xùn)報(bào)告范文
- 鉗工維修報(bào)告范文
- 二零二五年度帶車司機(jī)勞務(wù)派遣及車輛維護(hù)合同
- 二零二五年度生物制藥產(chǎn)業(yè)合作出資協(xié)議書
- 廣東省勞動(dòng)合同(2025年度)及企業(yè)員工健康體檢協(xié)議
- 2025年度環(huán)保產(chǎn)業(yè)銀行擔(dān)保免責(zé)合同
- 二零二五年度商鋪轉(zhuǎn)租定金及違約責(zé)任明確合同
- 二零二五年度挖掘機(jī)買賣及智能化升級(jí)合同
- 《汽車專業(yè)英語》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 煙草栽培(二級(jí))鑒定理論考試復(fù)習(xí)題庫-上(單選題匯總)
- 橋梁鋼筋加工安裝
- 動(dòng)物生物化學(xué)(全套577PPT課件)
- 中國(guó)傳統(tǒng)二十四節(jié)氣立春節(jié)氣介紹PPT模板課件
- 個(gè)人簡(jiǎn)歷求職競(jìng)聘自我介紹PPT模板課件
- 電廠粉煤灰儲(chǔ)灰場(chǎng)施工組織設(shè)計(jì)(DOC89頁)
- 活性炭生產(chǎn)工藝流程圖
- 《廣告學(xué)概論》教案
- 重量分析法實(shí)驗(yàn)
- [合同協(xié)議]車輛掛靠協(xié)議書
評(píng)論
0/150
提交評(píng)論