自定義屬性與方法實(shí)用教案_第1頁
自定義屬性與方法實(shí)用教案_第2頁
自定義屬性與方法實(shí)用教案_第3頁
自定義屬性與方法實(shí)用教案_第4頁
自定義屬性與方法實(shí)用教案_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、會計學(xué)1自定義屬性自定義屬性(shxng)與方法與方法第一頁,共32頁。變量(binling)作用域第1頁/共32頁第二頁,共32頁。第2頁/共32頁第三頁,共32頁。【例【例8-1】設(shè)計一個計時器,能夠設(shè)置倒計時的時間,并進(jìn)行】設(shè)計一個計時器,能夠設(shè)置倒計時的時間,并進(jìn)行(jnxng)倒計時。倒計時。 設(shè)計步驟如下:設(shè)計步驟如下: (1) 添加自定義屬性(shxng)。 (2) 建立應(yīng)用程序用戶界面與設(shè)置屬性(shxng)。 8.1 自定義屬性自定義屬性 (3) 編寫代碼。編寫代碼。 編寫微調(diào)器編寫微調(diào)器Spinner1的的InteractiveChange事件代碼:事件代碼:THISFOR

2、M.sec = THIS.Value * 60 &給屬性給屬性SEC賦初始秒數(shù)賦初始秒數(shù)a1 = THIS.Valuea2 = IIF(a1 % 60 0 THISFORM.Command1.Enabled = .T.ELSE THISFORM.Command1.Enabled = .F.ENDIF 編寫命令按鈕編寫命令按鈕Command1的的Click事件事件(shjin)代碼:代碼:THISFORM.Timer1.Enabled=.T.THISFORM.Spinner1.Enabled=.F.THIS.Enabled=.F.編寫計時器編寫計時器Timer1的的Timer事件事件(s

3、hjin)代碼:代碼:THISFORM.sec=THISFORM.sec1a0 = THISFORM.sec & 秒數(shù)秒數(shù)IF a0 =0 a1 = INT(a0 / 60) & 分鐘數(shù)分鐘數(shù) a2 = INT(a1 / 60) & 小時數(shù)小時數(shù)第4頁/共32頁第五頁,共32頁。b0 = IIF(a0 % 60 10,0 + STR(a0 % 60,1),STR(a0 % 60,2) b1 = IIF(a1 % 60 10,0 + STR(a1 % 60,1),STR(a1 % 60,2) b2 = IIF(a2 % 60 10,0 + STR(a2 % 60,1),S

4、TR(a2 % 60,2) THISFORM.Text1.Value = ALLT(b2 +: + b1 + : + b0) THISFORM.Spinner1.Value = a1ELSE THIS.Enabled=.F. THISFORM.Spinner1.Enabled=.T.ENDIF 運(yùn)行程序,設(shè)置運(yùn)行程序,設(shè)置(shzh)時間后按時間后按“開始開始”按鈕,即開始倒計時,時間到時將彈出對話框。按鈕,即開始倒計時,時間到時將彈出對話框。 圖圖8-3 倒計時器倒計時器第5頁/共32頁第六頁,共32頁?!纠纠?-2】在例】在例7-3(P124)中使用數(shù)組屬性來存放方陣的元素。求出主對角線

5、上元素之和以及方陣的最大元素。中使用數(shù)組屬性來存放方陣的元素。求出主對角線上元素之和以及方陣的最大元素。 設(shè)計步驟如下:設(shè)計步驟如下: (1) 添加添加(tin ji)自定義屬性。自定義屬性。A(5,5) (2) 建立應(yīng)用程序用戶界面與設(shè)置屬性建立應(yīng)用程序用戶界面與設(shè)置屬性 。 (3) 修改代碼。修改代碼。 清除表單的清除表單的Load、UnLoad事件代碼,并修改表單的事件代碼,并修改表單的Activate事件代碼:事件代碼:FOR i = 1 TO 25 yes = 1 DO WHILE yes = 1 x = INT(RAND() * 100) yes = 0 FOR j = 1 TO

6、i 1 第6頁/共32頁第七頁,共32頁。IF x = VAL(THIS.a(j) yes = 1 & 如與前面的元素相同如與前面的元素相同(xin tn),則返回到,則返回到Do循環(huán)循環(huán) EXIT ENDIF ENDFOR ENDDO THIS.a(i) = STR(x,3)ENDFORTHISFORM.Text1.Value = THISFORM.Text2.Value = THIS.List1.Refresh 修改修改“計算計算”按鈕按鈕Command1的的Click事件代碼:事件代碼:s = 0FOR I = 1 TO 5 s = s + VAL(THISFORM.a(i,i)

7、ENDFORTHISFORM.Text1.Value = s第7頁/共32頁第八頁,共32頁。第8頁/共32頁第九頁,共32頁?!纠纠?-3】使用微調(diào)器控制色彩,還可以返回色彩的】使用微調(diào)器控制色彩,還可以返回色彩的RGB值值 設(shè)計步驟如下:設(shè)計步驟如下: (1) 添加自定義屬性添加自定義屬性,SPI(3),存放微調(diào)器對象。存放微調(diào)器對象。 (2) 建立應(yīng)用程序用戶界面。建立應(yīng)用程序用戶界面。 選擇新建表單,進(jìn)入表單設(shè)計器,首先增加一個命令按鈕選擇新建表單,進(jìn)入表單設(shè)計器,首先增加一個命令按鈕Command1、一個、一個形狀控件形狀控件Shape1和一個容器和一個容器(rngq)控件控件Co

8、ntainer1,并在,并在Shape1上覆蓋一上覆蓋一個標(biāo)簽控件個標(biāo)簽控件Label1。然后用鼠標(biāo)右鍵單擊容器。然后用鼠標(biāo)右鍵單擊容器(rngq)控件,在彈出的快捷菜控件,在彈出的快捷菜單中選擇單中選擇“編輯編輯”,進(jìn)入容器,進(jìn)入容器(rngq)控件的編輯狀態(tài)(四周出現(xiàn)淺綠色邊界)控件的編輯狀態(tài)(四周出現(xiàn)淺綠色邊界)。在容器。在容器(rngq)中增加兩個文本框中增加兩個文本框Text1、Text2和三個微調(diào)器和三個微調(diào)器Spinner1、Spinner2、Spinner3(如圖(如圖7-7所示)。所示)。 圖7-6 調(diào)色盤 圖7-7 設(shè)計(shj)表單界面第9頁/共32頁第十頁,共32頁。

9、(3) 設(shè)置對象屬性。設(shè)置對象屬性。 (4) 編寫程序代碼。編寫程序代碼。 編寫表單的編寫表單的Init事件事件(shjin)代碼,建立屬性數(shù)組對對象變量的代碼,建立屬性數(shù)組對對象變量的引用:引用:THIS.spi(1) = THIS.Container1.Spinner1THIS.spi(2) = THIS.Container1.Spinner2THIS.spi(3) = THIS.Container1.Spinner3 編寫編寫Spanner1的的InteractiveChange事件事件(shjin)代碼:代碼:r = THISFORM.spi(1).Valueg = THISFORM.

10、spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor = RGB(r,g,b)THIS.Parent.Text1.Value = ;Color = RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)第10頁/共32頁第十一頁,共32頁。 編寫編寫Spanner2的的InteractiveChange事件事件(shjin)代碼:代碼:r = THISFORM.spi(1).Valueg = THISFORM.spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Par

11、ent.Text2.BackColor = RGB(r,g,b)THIS.Parent.Text1.Value = ;Color = RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)“ 編寫編寫Spanner3的的InteractiveChange事件事件(shjin)代碼:代碼:r = THISFORM.spi(1).Valueg = THISFORM.spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor = RGB(r,g,b)THIS.Parent.Text1.Value = ;Colo

12、r = RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)第11頁/共32頁第十二頁,共32頁。8.2.1 自定義方法自定義方法(fngf)的概念的概念第12頁/共32頁第十三頁,共32頁。第13頁/共32頁第十四頁,共32頁。8.2 自定義方法自定義方法(fngf) 自定義方法的建立與調(diào)用 自定義方法的建立分為兩步:方法的定義和編寫方法代碼。而自定義自定義方法的建立分為兩步:方法的定義和編寫方法代碼。而自定義方法的調(diào)用則要指明調(diào)用的路徑。方法的調(diào)用則要指明調(diào)用的路徑。 方法的命名遵循下列方法的命名遵循下列VFP中名稱的使用原則:中名稱的使用原則: (1) 只能使用字母

13、、漢字、下劃線和數(shù)字。只能使用字母、漢字、下劃線和數(shù)字。 (2) 使用字母、漢字或下劃線作為名稱的開頭。使用字母、漢字或下劃線作為名稱的開頭。 (3) 名稱可以是名稱可以是1至至128個字符。個字符。 (4) 避免使用避免使用VFP的保留字。的保留字。 另外還要注意,方法名不要與變量、數(shù)組名稱相同,盡量取有意義另外還要注意,方法名不要與變量、數(shù)組名稱相同,盡量取有意義的名稱。的名稱。第14頁/共32頁第十五頁,共32頁。【例【例8-4】在例】在例8-3中使用自定義方法中使用自定義方法(fngf)來統(tǒng)一處理微調(diào)器的操來統(tǒng)一處理微調(diào)器的操作。作。 在例在例8-3的基礎(chǔ)上進(jìn)行修改,具體步驟如下:的基

14、礎(chǔ)上進(jìn)行修改,具體步驟如下: (1) 添加新方法(fngf)。進(jìn)入表單設(shè)計器,單擊系統(tǒng)主菜單中“表單”項,在下拉菜單中選擇“新方法(fngf)程序”,打開“新建方法(fngf)程序”對話框。 圖8-6 打開“新建方法程序”對話框圖7-9 自定義的新方法單擊單擊“添加添加”按鈕后再單擊按鈕后再單擊“關(guān)閉關(guān)閉”按鈕,按鈕,退出新建方法程序?qū)υ捒颉4藭r,在屬性退出新建方法程序?qū)υ捒颉4藭r,在屬性窗口的窗口的“方法程序方法程序”選項卡中可以看見新選項卡中可以看見新建的方法及其說明。建的方法及其說明。第15頁/共32頁第十六頁,共32頁。 (2) 編寫自定義方法的代碼。編寫自定義方法的代碼與編寫表單的事

15、件過程代碼一樣,可以雙擊屬性窗口的新方法項SpiCh,或直接打開“代碼”窗口,在“過程”下拉列表(li bio)中選擇新方法SpiCh,即可開始編寫新方法的代碼(圖7-10):r = THISFORM.spi(1).Valueg = THISFORM.spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Container1.Text2.BackColor = RGB(r,g,b)THIS.Container1.Text1.Value=Color= RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+) 編寫自定義方法(fngf)的代碼第16頁

16、/共32頁第十七頁,共32頁。 (3) 自定義方法的調(diào)用。自定義方法的調(diào)用與表單的內(nèi)部方法的調(diào)用一樣,可以在事件過程或其他(qt)的方法代碼中調(diào)用。 修改Spanner1的InteractiveChange事件代碼:THISFORM.spich 修改Spanner2的InteractiveChange事件代碼:THISFORM.spich 修改Spanner3的InteractiveChange事件代碼:THISFORM.spich 表單的運(yùn)行結(jié)果與例8-3完全相同。第17頁/共32頁第十八頁,共32頁。1. 參數(shù)的傳遞 若想使方法能夠接收參數(shù),只需在方法代碼(di m)的開始增加命令行:PA

17、RAMETERS 形參表或LPARAMETERS 形參表 調(diào)用時使用括號將實(shí)參括起:對象名.方法名(實(shí)參表)第18頁/共32頁第十九頁,共32頁。第19頁/共32頁第二十頁,共32頁。【例8-5】在一個窗口中包含3個命令按鈕,當(dāng)用戶單擊其中(qzhng)一個時,要求其他個別按鈕不能使用: 單擊Command1后 單擊Command3后 單擊Command2后 三個按鈕第20頁/共32頁第二十一頁,共32頁。 設(shè)計步驟如下: 應(yīng)用程序用戶界面的建立與對象屬性的設(shè)置參見圖8-10,下面介紹代碼的編寫。 (1) 添加新方法。 進(jìn)入表單設(shè)計器,單擊系統(tǒng)(xtng)主菜單中“表單”項,在下拉菜單中選擇“

18、新方法程序”,打開“新建方法程序”對話框。 在“名稱”欄中填入自定義方法的名稱:CmdClk,單擊“添加”按鈕后再單擊“關(guān)閉”按鈕,退出新建方法程序?qū)υ捒?。此時,在屬性窗口的“方法程序”選項卡中可以看見新建的方法。第21頁/共32頁第二十二頁,共32頁。 (2) 編寫自定義方法CmdClk的代碼:LPARAMETERS xDO CASE CASE x = THIS.Command1 THIS.Command2.Enabled=.F. CASE x = THIS.Command2 THIS.Command1.Enabled=.F. CASE x = THIS.Command3 THIS.Comm

19、and1.Enabled=.T. THIS.Command2.Enabled=.T.ENDCASE (3) 三個命令按鈕的Click事件(shjin)代碼完全相同:THISFORM.cmdclk(THIS) 說明:要注意在不同代碼中THIS所代表的不同對象。第22頁/共32頁第二十三頁,共32頁。2. 參數(shù)傳遞的方式參數(shù)傳遞的方式(fngsh) 參數(shù)傳遞的方式參數(shù)傳遞的方式(fngsh)分為傳址方式分為傳址方式(fngsh)和傳值方式和傳值方式(fngsh)。 傳址方式傳址方式是指主程序?qū)?shí)際參數(shù)在內(nèi)存中的地址傳給被調(diào)用的方法,由形式參數(shù)接收,而形式參數(shù)也使用該地址。即實(shí)際參數(shù)與形式參數(shù)使用相

20、同的內(nèi)存地址,是指主程序?qū)?shí)際參數(shù)在內(nèi)存中的地址傳給被調(diào)用的方法,由形式參數(shù)接收,而形式參數(shù)也使用該地址。即實(shí)際參數(shù)與形式參數(shù)使用相同的內(nèi)存地址,形式參數(shù)的內(nèi)容一經(jīng)改變,實(shí)際參數(shù)的內(nèi)容也將跟著改變。形式參數(shù)的內(nèi)容一經(jīng)改變,實(shí)際參數(shù)的內(nèi)容也將跟著改變。 傳值方式傳值方式是指主程序?qū)?shí)際參數(shù)的一個備份傳給被調(diào)用的方法,這個備份可以被方法改變,但在是指主程序?qū)?shí)際參數(shù)的一個備份傳給被調(diào)用的方法,這個備份可以被方法改變,但在主程序中變量的原值不會改變。主程序中變量的原值不會改變。在默認(rèn)的情況下,在默認(rèn)的情況下,VFP在調(diào)用方法時采用傳值方式。如果要改變參數(shù)的傳遞方式,可以采用以下兩種方法:在調(diào)用方法時

21、采用傳值方式。如果要改變參數(shù)的傳遞方式,可以采用以下兩種方法: (1) 使用使用SET UDFPARMS TO VALUE|REFERENCE命令來強(qiáng)制改變參數(shù)的傳遞方式。命令來強(qiáng)制改變參數(shù)的傳遞方式。 (2) 使用使用符號來強(qiáng)制符號來強(qiáng)制VFP使用傳址的參數(shù)傳遞方式。使用傳址的參數(shù)傳遞方式。第23頁/共32頁第二十四頁,共32頁?!纠?-6】編寫求最大公約數(shù)的自定義方法,輸入的兩個整數(shù)按值傳遞,求出的最大公約數(shù)按地址傳遞。 設(shè)計步驟如下: 應(yīng)用程序用戶界面的建立與對象(duxing)屬性的設(shè)置參見圖7-13,下面介紹代碼的編寫:圖7-13 求最大公約數(shù) (1) 首先首先(shuxin)添加自

22、定義方法添加自定義方法Hcf。 (2) 編寫自定義方法Hcf的代碼:PARAMETERS m, n, ZIF m n t = m m = n n = tENDIFr = m % n第24頁/共32頁第二十五頁,共32頁。DO WHILE r 0 m = n n = r r = m % nENDDOZ = n & 將求出的最大公約數(shù)賦值給變量將求出的最大公約數(shù)賦值給變量Z (3) 編寫編寫“計算計算”按鈕的按鈕的Click事件代碼,調(diào)用自定義方法事件代碼,調(diào)用自定義方法(fngf)Hcf:x=VAL(THISFORM.Text1.Value)y=VAL(THISFORM.Text2.Va

23、lue)a=0IF x*y0 THISFORM.hcf(x,y,a) & 變量變量a按傳址方式傳遞按傳址方式傳遞 THISFORM.Label2.Caption=兩數(shù)的最大公約是兩數(shù)的最大公約是:+ALLT(STR(a)ENDIF例題:數(shù)據(jù)傳遞例題:數(shù)據(jù)傳遞.prg(調(diào)用過程時參數(shù)的傳遞)(調(diào)用過程時參數(shù)的傳遞)第25頁/共32頁第二十六頁,共32頁。3. 方法的返回值方法的返回值 若想使方法能夠返回一個值,只需在方法代碼的結(jié)束處增加若想使方法能夠返回一個值,只需在方法代碼的結(jié)束處增加(zngji)命令行:命令行:RETURN 表達(dá)式表達(dá)式 如果缺省表達(dá)式,如果缺省表達(dá)式,VFP將自動

24、返回將自動返回 .T.。 當(dāng)代碼執(zhí)行到當(dāng)代碼執(zhí)行到RETURN命令,就會立即返回到主程序中。命令,就會立即返回到主程序中。 在主程序中可用以下形式調(diào)用方法:在主程序中可用以下形式調(diào)用方法: (1) 在表達(dá)式中調(diào)用方法。如:在表達(dá)式中調(diào)用方法。如:k = PI()*THISFORM.Demo(r) (2) 在賦值語句中調(diào)用方法。如:在賦值語句中調(diào)用方法。如:k = THISFORM.Demo(r) (3) 以等號命令調(diào)用方法。如:以等號命令調(diào)用方法。如:= THISFORM.Demo(r)注:以等號命令調(diào)用方法將舍棄返回值。注:以等號命令調(diào)用方法將舍棄返回值。第26頁/共32頁第二十七頁,共32頁。【例8-7】改寫例8-6中的自定義方法,使其能夠(nnggu)返回值。然后通過在表達(dá)式中調(diào)用方法,得到三個整數(shù)的最大公約數(shù)。 設(shè)計步驟如下: 應(yīng)用程序用戶界面的建立與對象屬性的設(shè)置參見圖7-14,下面介紹代碼的編寫:圖7-14 求最大公約數(shù) (1) 首先添加首先添加(tin ji)自定義方

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論