《數(shù)據(jù)應(yīng)用技術(shù)》第8章 自定義屬性與自定義方法_第1頁
《數(shù)據(jù)應(yīng)用技術(shù)》第8章 自定義屬性與自定義方法_第2頁
《數(shù)據(jù)應(yīng)用技術(shù)》第8章 自定義屬性與自定義方法_第3頁
《數(shù)據(jù)應(yīng)用技術(shù)》第8章 自定義屬性與自定義方法_第4頁
《數(shù)據(jù)應(yīng)用技術(shù)》第8章 自定義屬性與自定義方法_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第8章

自定義屬性與自定義方法8.1自定義屬性8.2自定義方法第8章自定義屬性與自定義方法任務(wù)導(dǎo)入VFP中,用戶可以像定義變量一樣自定義各種類型的屬性。也就是說,在VFP中,可以把內(nèi)存變量看作是自由的數(shù)據(jù)元素,而屬性就是與某對象相聯(lián)系的數(shù)據(jù)元素。屬性的作用域是整個對象(如表單)存在的時期。屬性的使用需要按照引用格式(即對象.屬性)進行。本任務(wù)學(xué)習(xí)在VFP中添加自定義屬性和自定義數(shù)組屬性的使用方法。學(xué)習(xí)目標(biāo)(1)能熟練添加和應(yīng)用自定義屬性解決實際問題。(2)能熟練添加和應(yīng)用自定義數(shù)組屬性解決實際問題。8.1自定義屬性1.

添加自定義屬性

VFP中,用戶可以像定義變量一樣自定義各種類型的屬性。

在表單中添加一個自定義屬性(如Desec)的操作步驟如下:

(1)進入“表單設(shè)計器”,單擊“表單”菜單→“新建屬性”命令,打開“新建屬性”對話框。8.1自定義屬性

(2)在“新建屬性”對話框的“名稱(Name)”欄中,輸入自定義屬性的名稱:Desec,然后在“說明”欄中填入該屬性的簡單說明:“這是一個自定義屬性,功能是記錄初始秒數(shù)?!薄罢f明”欄中的說明內(nèi)容可有可無,這是為了使用方便而附加的備注信息。

(3)單擊“添加”按鈕,然后單擊“關(guān)閉”按鈕,退出“新建屬性”對話框。

(4)此時,在屬性窗口的“全部”選項卡中可以看見新建的屬性及其說明,如圖8.2所示。

(5)新定義屬性的類型為邏輯型,值為.F.。與改變其他屬性的方法一樣,可以將它改為其他類型,如數(shù)值型其值為0。8.1自定義屬性8.1自定義屬性

2.自定義屬性應(yīng)用示例

【例8-1】計時器(秒表)可以在運動場上測試短跑項目的成績,可以記錄考試所用的時間等。設(shè)計一個計時器。按“開始”按鈕開始計時,按鈕變?yōu)椤皶和!薄T俅螁螕粼摪粹o,停止計時,顯示時間讀數(shù),同時按鈕變?yōu)椤袄^續(xù)”。任何時候按“重置”按鈕,時間讀數(shù)都將重置為0。

8.1自定義屬性設(shè)計步驟如下:

(1)建立應(yīng)用程序與用戶界面。進入“表單設(shè)計器”,增加一個文本框Text1、一個計時器控件Timer1與兩個命令按鈕Command1和Command2。其中,計時器控件Timer1可以放在表單的任何位置。

(2)設(shè)置對象屬性,如表8-1所示。其他屬性設(shè)置如圖8.4所示。

(3)增加一個自定義屬性sec0。選中表單,單擊“表單”菜單→“新建屬性”命令,在“新建屬性”對話框中添加一個自定義屬性sec0,用以記錄“秒表”的初始時間,并將sec0屬性的數(shù)據(jù)值改為0,如圖8.4所示。8.1自定義屬性表8-1屬性設(shè)置8.1自定義屬性8.1自定義屬性8.1自定義屬性8.1自定義屬性8.1自定義屬性

3.添加自定義數(shù)組屬性

數(shù)組屬性是一組具有不同下標(biāo)的同名屬性,可以在任何使用數(shù)組的地方使用數(shù)組屬性。但要注意,如同屬性是一種依附于表單的特殊變量,數(shù)組屬性是一種依附于表單的數(shù)組。要使用數(shù)組屬性,必須先在表單中定義數(shù)組屬性。

(1)在“表單設(shè)計器”中單擊“表單”菜單→“新建屬性”命令,打開“新建屬性”對話框。

(2)在“名稱”欄中輸入數(shù)組屬性的名稱以及用括號括起來的數(shù)組大小。8.1自定義屬性

(3)如果能夠事先確定數(shù)組的維數(shù)和大小,就在括號中輸入其值,否則可以先隨意指定一個,然后在代碼中用DIMENSION再重新定義。

(4)單擊“添加”按鈕后,再單擊“關(guān)閉”按鈕。

8.1自定義屬性

2.自定義數(shù)組屬性示例

【例8-2】利用數(shù)組屬性輸出斐波那契(Fibonacci)數(shù)列。Fibonacci數(shù)列為:1,1,2,3,5,8,…,其中第n項的計算公式為

Fib(n)=Fib(n-1)+Fib(n-2)

(1)定義一個數(shù)組屬性f(30)。在“新建屬性”對話框中的“名稱”框中輸入f(30),單擊“添加”按鈕,然后單擊“關(guān)閉”按鈕。

(2)建立應(yīng)用程序用戶界面并設(shè)置對象屬性。選擇“新建”表單,進入“表單設(shè)計器”,增加一個標(biāo)簽Label1、一個微調(diào)器控件Spinner1和一個列表框List1,如圖8.6(a)所示。

設(shè)置各對象的屬性,如表8-2所示。8.1自定義屬性

8.1自定義屬性表8-2屬性設(shè)置8.1自定義屬性(3)編寫代碼。

編寫表單Form1的Load事件代碼:

DIMETHIS.F(2,2)

THIS.F(1,1)="Fib(1)"

THIS.F(1,2)=1

THIS.F(2,1)="Fib(2)"

THIS.F(2,2)=1

8.1自定義屬性編寫微調(diào)器控件Spinner1的InteractiveChange事件代碼:

n=THIS.Value

DIMETHISFORM.F(n,2)

FORi=3TOn

THISFORM.F(i,1)=“Fib(”+ALLT(STR(i))+“)”

THISFORM.F(i,2)=THISFORM.F(i-1,2)+

THISFORM.F(i-2,2)

ENDFOR

THISFORM.List1.NumberOfElements=n

運行程序,結(jié)果如圖8.6(b)所示。8.1自定義屬性

【例8-3】使用數(shù)組屬性來存放方陣的元素。設(shè)有一個5×5的方陣,其中元素是由計算機隨機生成的小于100的整數(shù)。試求主對角線上元素之和及方陣中最大的元素。

設(shè)計步驟如下:

(1)添加自定義屬性。進入“表單設(shè)計器”,首先在表單中添加一個自定義的數(shù)組屬性A(5,5)。

(2)建立應(yīng)用程序用戶界面并設(shè)置對象屬性,如圖8.7所示。

圖8.7中列表框List1的屬性設(shè)置如表8-3所示。8.1自定義屬性

8.1自定義屬性表8-3屬性設(shè)置8.1自定義屬性8.1自定義屬性8.1自定義屬性8.1自定義屬性圖8.8矩陣計算

8.1自定義屬性思考與練習(xí)1.使用數(shù)組屬性,求矩陣元素的平均值,并輸出高于平均值的元素以及它們的行、列號。2.使用自定義數(shù)組與屬性,求任意多數(shù)中的最大數(shù)。8.1自定義屬性8.1自定義屬性8.2自定義方法第8章自定義屬性與自定義方法任務(wù)導(dǎo)入上述重復(fù)使用的程序段,設(shè)計成能夠完成一定功能的、可供其它程序使用(調(diào)用)的獨立程序段。這種程序段稱為子程序,它獨立存在,但可以被多次調(diào)用,調(diào)用的程序稱為主程序。VFP中子程序的結(jié)構(gòu)分為過程、函數(shù)與方法三類。一般來說,過程與函數(shù)的區(qū)別在于函數(shù)返回一個值而過程不返回值,而方法則是VFP中限制在一個對象中的子程序。本任務(wù)將學(xué)習(xí)方法的基本概念,以及自定義方法的建立、調(diào)用等。學(xué)習(xí)目標(biāo)(1)理解子程序的概念。(2)理解自定義方法的概念。(3)會建立、調(diào)用自定義方法。(4)理解參數(shù)傳遞的概念,會正確進行傳址和傳值方式數(shù)據(jù)傳遞。(5)會使用方法的遞歸調(diào)用。8.2自定義方法

1.方法的基本概念

在可視化編程中,“方法”是很常用的,下面介紹VFP“方法”的特點、分類和命名規(guī)則。

1)方法的特點

方法可以像過程那樣以傳值或傳址的方式傳遞參數(shù),也可以像函數(shù)那樣返回值,它集中了過程和函數(shù)的所有功能與優(yōu)點。與過程、函數(shù)的不同之處在于:方法總是與一個對象密切相聯(lián),即僅當(dāng)對象存在并且可見時方法才能被訪問。8.2自定義方法

2)方法的分類

VFP的方法分為兩類:內(nèi)部方法和用戶自定義方法。

內(nèi)部方法是VFP預(yù)制的子程序,可供用戶直接調(diào)用或修改后使用,如在前面章節(jié)中所使用過的Release、SetAll、SetFocus等方法。

VFP提供了數(shù)十種內(nèi)部方法,并且允許用戶使用自定義方法。用戶自定義方法其實就是用戶為某種需要所編寫的子程序。8.2自定義方法

3)方法的命名規(guī)則

VFP中方法的命名規(guī)則如下:

(1)由字母、漢字、下劃線和數(shù)字組成,并且必須以字母、漢字或下劃線開頭。

(2)可以是1~128個字符。

(3)不能使用VFP的保留字。

(4)方法名不要與變量、數(shù)組名稱相同,盡量取有意義的名稱。8.2自定義方法2.建立自定義方法

自定義方法的建立分為兩步:方法的定義和編寫方法代碼。

1)自定義新方法

(1)進入“表單設(shè)計器”,單擊“表單”菜單→“新建方法程序”命令,打開“新建方法程序”對話框。8.2自定義方法

(2)在“名稱”欄中填入自定義方法的名稱(如vvv)。

(3)在“說明”欄中填入新方法的簡單說明(如求某數(shù)的立方。)。說明內(nèi)容可有可無,主要是為了使用方便。

(4)單擊“添加”按鈕,將新方法添加到方法程序中。

(5)單擊“關(guān)閉”按鈕,退出“新建方法程序”對話框。

此時,在屬性窗口的“方法程序”選項卡中可以看見新建的方法及其說明。

8.2自定義方法

2)

編寫自定義方法的代碼

編寫自定義方法的代碼與編寫表單的事件過程代碼基本一樣。

在編寫時,可以雙擊屬性窗口的新方法項vvv,或直接打開“代碼”窗口,在“過程”下拉列表中選擇新方法vvv。

8.2自定義方法

3.自定義方法的調(diào)用

自定義方法的調(diào)用與表單內(nèi)部方法的調(diào)用一樣,可以在事件過程或其他的方法代碼中調(diào)用。8.2自定義方法

1.參數(shù)傳遞

方法可以接收主程序傳遞的參數(shù),也可以不接收參數(shù)。方法可以有返回值(如函數(shù)),也可以沒有返回值(如過程)。

如果需要方法能夠接收參數(shù),則在方法代碼的開始部分增加下面的命令行:

PARAMETERS〈形參表〉

LPARAMETERS〈形參表〉

調(diào)用時使用括號將實參括起:

對象名.方法名(〈實參表〉)8.2自定義方法說明:

(1)LPARAMETERS與PARAMETERS的區(qū)別在于:以PARAMETERS命令所接收的參數(shù)變量屬于PRIVATE(專用)性質(zhì),而以LPARAMETERS命令所接收的參數(shù)變量屬于LOCAL(局部)性質(zhì)。

(2)〈實參表〉中實際參數(shù)的個數(shù)最多不能超過27個。

(3)若〈形參表〉中形參的個數(shù)多于實際參數(shù)的個數(shù),則多余的形參變量的值為.F.。若實際參數(shù)的個數(shù)多于〈形參表〉中形參的個數(shù),則出現(xiàn)“程序錯誤”提示:必須指定額外參數(shù)。

(4)調(diào)用方法時,無論是否指定實際參數(shù),方法名后都可以帶一對括號。

(5)〈實參表〉中的實際參數(shù)可以是任何類型的變量、函數(shù)、數(shù)組、表達式,甚至是對象。8.2自定義方法

4.

參數(shù)傳遞的方式

參數(shù)傳遞的方式有傳址方式和傳值方式兩種。

1)傳址方式

傳址方式是指主程序?qū)嶋H參數(shù)在內(nèi)存中的地址傳給子程序(被調(diào)用的方法),由形式參數(shù)接收,而形式參數(shù)也使用該地址。即實際參數(shù)與形式參數(shù)使用相同的內(nèi)存地址,形式參數(shù)的內(nèi)容一經(jīng)改變,實際參數(shù)的內(nèi)容也將跟著改變。

2)傳值方式

傳值方式是指主程序?qū)嶋H參數(shù)的一個備份傳給子程序(被調(diào)用的方法),這個備份可以被子程序改變,但在主程序中變量的原值不會改變。8.2自定義方法

3)傳址方式與傳值方式的區(qū)別

傳址方式和傳值方式對于數(shù)組的影響較大,如果采用傳值方式,則只能傳遞數(shù)組的第一個元素的內(nèi)容,其他元素?zé)o法傳遞。如果采用傳址方式,則整個數(shù)組的地址將被傳給所調(diào)用的方法,形式參數(shù)會自動變成一個與實際參數(shù)同樣大小的數(shù)組。

默認情況下,VFP在調(diào)用方法時采用傳值方式。如果要改變參數(shù)的傳遞方式,則可以采用以下兩種方式:

(1)使用SETUDFPARMSTOVALUE|REFERENCE命令強制改變參數(shù)傳遞方式。

(2)使用@符號強制VFP使用傳址方式。

8.2自定義方法

3.方法的返回值

如果需要方法返回一個值,則要在方法代碼的結(jié)束處增加下面的命令行:

RETURN[〈表達式〉]

如果缺省〈表達式〉,VFP將自動返回.T.。

當(dāng)代碼執(zhí)行到RETURN命令時,立即返回到主程序中。

在主程序中可用以下形式調(diào)用方法:

(1)在表達式中調(diào)用方法,例如,k=x()*Thisform.Demo(r)。

(2)在賦值語句中調(diào)用方法,例如,k=Thisform.Demo(r)。

(3)以等號命令調(diào)用方法,例如,=Thisform.Demo(r)。以該形式調(diào)用方法將舍棄返回值。8.2自定義方法

6.自定義方法使用示例

【例8-4】編寫分數(shù)化簡程序,在其中調(diào)用求最大公約數(shù)的自定義方法。

8.2自定義方法設(shè)計步驟如下:

(1)程序界面的設(shè)計如圖8.13所示。其中,文本框的InputMask屬性設(shè)為9999999,Value屬性為0。

(2)單擊“表單”菜單→“新建方法程序”,建立自定義方法hcf。

8.2自定義方法8.2自定義方法8.2自定義方法

【例8-5】驗證哥德巴赫猜想:一個不小于6的偶數(shù)可以分解為兩個素數(shù)之和。

分析:輸入一個不小于6的偶數(shù),由計算機將其分解為兩個素數(shù)之和。

8.2自定義方法8.2自定義方法8.2自定義方法

THISFORM.Text1.SetFocus

表單Form1的Activate事件代碼:

THISFORM.Text1.SetFocus &&焦點

文本框Text1的InteractiveChange事件代碼:

THISFORM.Text2.Value=‘’

&&文本框Text2中的值置空

8.2自定義方法7.

方法的遞歸調(diào)用

簡單地說,遞歸就是指過程調(diào)用過程本身。在方法的遞歸調(diào)用中,一個方法執(zhí)行的某一步要用到它自身的上一步(或上幾步)的結(jié)果。遞歸調(diào)用在處理階乘運算、級數(shù)運算、冪指數(shù)運算等方面特別有效。例如,自然數(shù)n的階乘可以遞歸定義為8.2自定義方法

例8-6】如圖8.15所示,利用遞歸調(diào)用計算n!。

(1)用戶界面的設(shè)計以及對象屬性的設(shè)置如圖8.15所

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論