版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第五章 程序設(shè)計基礎(chǔ)5.1
程序設(shè)計概述5.2
結(jié)構(gòu)化程序設(shè)計5.3
面向?qū)ο蟮某绦蛟O(shè)計基礎(chǔ)110/2/2023程序設(shè)計的優(yōu)點(與交互式相比)210/2/2023程序自動執(zhí)行多條命令,省去了鍵入大量字符的麻煩,并且節(jié)約了寶貴的時間。程序可被修改并重新運行,且可多次運行.一個程序可調(diào)用其他程序。程序中可使用結(jié)構(gòu)化程序設(shè)計命令來控制運算的流程。5.1程序設(shè)計概述310/2/2023什么是程序設(shè)計?程序設(shè)計方法有哪些?程序設(shè)計是利用系統(tǒng)所提供的設(shè)計工具,按照程序設(shè)計語言的規(guī)范描述解決問題的算法并進(jìn)行程序編寫的過程。程序設(shè)計的方法主要有:結(jié)構(gòu)化程序設(shè)計(SP)與面向?qū)ο蟮某绦蛟O(shè)計(OOP)。結(jié)構(gòu)化程序設(shè)計方法SP程序的設(shè)計應(yīng)遵循4條原則:自頂向下、逐步求精、模塊化、限制使用轉(zhuǎn)移語句。程序流程應(yīng)使用3種控制結(jié)構(gòu):順序、分支、循環(huán)結(jié)構(gòu)化程序設(shè)計的本質(zhì)是功能設(shè)計,其開發(fā)過程通常是從“做什么”到“如何做”。優(yōu)點:系統(tǒng)結(jié)構(gòu)性強(qiáng),便于設(shè)計和理解缺點:用戶需求一旦更改,系統(tǒng)在設(shè)計和實現(xiàn)階段要作相應(yīng)變動。功能分解模型難以與現(xiàn)實世界中的實際系統(tǒng)相吻合。410/2/2023面向?qū)ο蟮某绦蛟O(shè)計方法OOP510/2/2023
基于問題對象的自底向上的功能綜合,從內(nèi)部結(jié)構(gòu)上模擬客觀世界,其開發(fā)過程是從“用什么做”到“要做什么”。OOP的基石是對象和類,基本機(jī)制是方法和消息。類是具有相同的結(jié)構(gòu)、操作,并遵守相同規(guī)則的對象聚合在一起的對象。對象是基于某種類所創(chuàng)建的實例。OOP有三個重要的特性:封裝性、繼承性和多態(tài)性(Example:學(xué)生類與高中生類)優(yōu)點:P137Visual
FoxPro既支持結(jié)構(gòu)化程序設(shè)計,也支持面向?qū)ο蟮某绦蛟O(shè)計,并提供了許多相關(guān)的可視化開發(fā)工具!5.2結(jié)構(gòu)化程序設(shè)計610/2/2023順序(順序結(jié)構(gòu)由語句行組成,執(zhí)行時語句順序執(zhí)行)分支(根據(jù)邏輯表達(dá)式的值執(zhí)行不同的操作)循環(huán)(使得一組語句組重復(fù)執(zhí)行若干次)子程序(過程/函數(shù)的調(diào)用)5.2.1創(chuàng)建、修改和運行程序710/2/2023創(chuàng)建和修改程序文件程序是包含一系列命令的文本文件,文件擴(kuò)展名為.PRG法一:主菜單命令“文件”
“新建”,選擇“程序”,單擊“新建文件”按鈕法二:“常用”工具欄中的“新建”按鈕,…(同上)法三:項目管理器的“代碼”選項卡中選擇“程序”項,單擊“新建”按鈕法四:命令窗口中執(zhí)行命令MODIFY
COMMAND
文件名(擴(kuò)展名為.PRG)編輯和修改程序文件:項目管理器中選中被修改的程序文件,單擊“修改”按鈕或命令窗口利用MODIFY
COMMAND命令。對于已存在的程序文件,修改并保存后系統(tǒng)會將“上一版本”以.BAK文件保存!810/2/20232.運行程序法一:當(dāng)程序文件處于編輯狀態(tài)時,單擊常用工具欄的“!”按鈕法二:項目管理器窗口中選擇程序文件,然后單擊窗口中的“運行”按鈕法三:命令窗口中執(zhí)行命令DO
ProgramName
[WITH ParameterList
]一旦運行程序文件,系統(tǒng)會自動地對程序文件(.prg)進(jìn)行編譯(包括對程序的詞法檢查、語法檢查),生成“偽編譯”程序(.fxp)。執(zhí)行程序時,系統(tǒng)實質(zhì)上是執(zhí)行.fxp文件。910/2/2023Accept[<提示信息>]to<內(nèi)存變量>功能:暫停程序的運行,等待用戶鍵入一串字符賦給指定的內(nèi)存變量Input[<提示信息>]to<內(nèi)存變量>功能:暫停程序的運行,接受用戶鍵入的表達(dá)式并將其值賦給指定的內(nèi)存變量wait[<提示信息>][to<內(nèi)存變量>]功能:等待單字符輸入幾個常用交互命令1010/2/20235.2.2順序結(jié)構(gòu)一條一條的按順序依次執(zhí)行逗號將不同類型的數(shù)據(jù)一起顯示在屏幕例5.1
計算圓的面積Store
4.12
to
pS=p*p*3.14?S
&&或者?“圓面積為”,S例5.2
顯示一個字符串在另一個字符串中的位置c=“Visual
FoxPro”cc=“Fox”?at(cc,c)
&&顯示結(jié)果為81110/2/20235.2.3分支結(jié)構(gòu)(1)單分支結(jié)構(gòu)格式:IF
條件語句1ENDIF說明:當(dāng)“條件”成立時執(zhí)行“語句”,否則執(zhí)行ENDIF后面的語句條件成立?語句1yNENDIF后面的語句例:n=5X=0IF
n<=3X=2ENDIF?X1210/2/2023(2)雙分支結(jié)構(gòu)IF
條件語句1ELSE語句2ENDIF說明:當(dāng)“條件”成立時,執(zhí)行“語句1”,否則執(zhí)行“語句2”語句1語句2ENDIF后面的語句條件成立?YN例:X=3Y=1IF
X>2Y=0ELSEY=3ENDIF?
Y1310/2/2023例5.3
根據(jù)x的值決定y的值Input “請輸入一個數(shù)值:
”
to
xIf
x>0y=1Elsey=-1Endif?
y1410/2/2023例:判斷一年是否是閏年(若一年是閏年當(dāng)且僅當(dāng)年數(shù)可被400整除或能被4整除不能被100整除)**方法一clearInput
“請輸入你想判斷的年數(shù):”
to
yearrn=IIF((year%4=0
and
year%100!=0
)
or;year%400=0,
"閏年",
"不是閏年")?rn1510/2/2023clearInput"請輸入你想判斷的年數(shù):"to
yearif
year%4=0if
year%100=0if
year%400=0? "是閏年"else? "不是閏年"elseendif? "是閏年"endifelse? "不是閏年"endif**方法二
IF嵌套使用1610/2/2023(3)多分支結(jié)構(gòu)CASEDO
CASECASE
條件1語句1條件2語句2………CASE
條件n語句nOTHERWISE語句n+1ENDCASE1710/2/20231810/2/2023例:X=80Y=space(0)Do
casecase
X>=90Y="優(yōu)秀"case
X>=80Y="良好"case
X>=70Y="中等"case
X>=60Y="及格"otherwiseY="不及格"EndCase?Y說明:case
的個數(shù)與需要判斷的情況有關(guān)1910/2/2023例5.5
解一元二次方程(P141)Parameters
a,b,cIf
a=0=messagebox("二次項系數(shù)不能為0!",48,"錯誤對話框")return&&計算根的判別式endifDelta=b*b-4*a*cDO
CASECASE
delta>0?"方程有兩個不等的實數(shù)根:"??(-b+sqrt(delta))/(2*a)??(-b-sqrt(delta))/(2*a)CASE
delta=0?"方程有兩個相等的實數(shù)根:"??–b/(2*a)CASE
delta<0?"方程有兩個復(fù)根:"real_part=-b/(2*a) &&實部img_part=sqrt(-delta)/(2*a) &&虛部?alltrim(str(real_part))+"+"+alltrim(str(img_part))+"I"?alltrim(str(real_part))+"-"+alltrim(str(img_part))+"I"ENDCASE將文件保存為abc.prg在命令窗口輸入:
Do
abc
with
1,-5,62010/2/20235.2.4循環(huán)結(jié)構(gòu)一:使得一組語句重復(fù)執(zhí)行若干次。2110/2/2023(1)
FOR語句的格式:(預(yù)先知道循環(huán)的次數(shù))FOR
循環(huán)變量=初值
to
終值
[step
步長]循環(huán)體ENDFOR|next當(dāng)步長為正數(shù)時,循環(huán)變量的初值要小于等于終值。當(dāng)步長為負(fù)數(shù)時,循環(huán)變量的初值要大于等于終值。當(dāng)步長為1時,[step
步長]可以省略。FOR語句的執(zhí)行流程為:
1)將初值賦給循環(huán)變量2)判斷循環(huán)變量是否超出終值,若超出則結(jié)束循環(huán),否則執(zhí)行循環(huán)體。3)計算循環(huán)變量的值:循環(huán)變量=循環(huán)變量+步長注意:循環(huán)變量加步長的操作是系統(tǒng)自動完成的不需要在循環(huán)體中再出現(xiàn)該操作。循環(huán)變量賦初值循環(huán)變量超出終值?執(zhí)行循環(huán)體循環(huán)變量加步長ny2210/2/2023例5.6
計算100以內(nèi)的奇數(shù)之和sum=0for
i=1
to
100
step
2sum=
sum+iEndfor?sum練習(xí):請說出下面程序的功能及執(zhí)行結(jié)果。a=11
step -2For
n=10
toa=n**2?aEndfor2310/2/2023例5.6
計算50的階乘p=1for
i=1
to
50p=
p*iEndfor?"50的階乘p=",p例5.7
計算1~100之間非3的倍數(shù)的所有2410/2/2023奇數(shù)之和.法二:
S=0FOR
I=1
TO
100IF
MOD(I,3)<>0
and
I%2=1S=S+IENDIFENDFOR?S例5.8
顯示如圖5-5所示的文字(循環(huán)嵌套)Clearc="金字大寶塔"n=len(c)/2for
i=1
ton
&&顯示N行?
space(10-i)for
j=1toi&&每行第一個字位置
&&每行顯示J個字??
substr(c,2*i-1,2)&&等待0.5秒=inkey(0.5)endforendfor2510/2/2023補(bǔ)充:請寫出下面程序的輸出內(nèi)容
Clear?for
I=1
to
9??str(I,4)for
j=1
toI??str(I*j,4)endfor?endforreturn2610/2/20235.2.4循環(huán)結(jié)構(gòu)二:使得一組語句重復(fù)執(zhí)行若干次。(2)
DO
WHILE
條件循環(huán)體ENDDO注意:如果預(yù)先不能確定循環(huán)的次數(shù),而是根據(jù)某一條件決定是否結(jié)束循環(huán)。當(dāng)條件=
.T.時執(zhí)行循環(huán)體,否則結(jié)束循環(huán)在循環(huán)體中要有改變循環(huán)條件的語句。條件成立?循環(huán)體ENDDO后面語句YES2710/2/2023NOWHILE循環(huán)流程例5.10
對于任意給定的字符串反序顯示如:“abcdef”變成“fedcba”Store
"abcdef"
to
cP=space(0)Do
while
len(c)>0P=left(c,1)+Pc=substr(c,2)Enddo?p2810/2/2023例5.12統(tǒng)計字符串中大、小寫英文字母的個數(shù)Clearc="Visual
FoxPro"Nmax=0Nmin=0Do
while
len(c)
>0do
casecase
asc(left(c,1))>64
andasc(left(c,1))<91Nmax
=
Nmax
+1case
asc(left(c,1))>96
andasc(left(c,1))<123Nmin
=
Nmin
+1endcasec=subs(c,2)EnddoWait
windows
str(nMax,2)+str(nMin,4)2910/2/2023方法一:SET
TALK
OFFS=0
&&累加變量N=1
&&計數(shù)變量DO
WHILE
N<=100S=S+N&&修改循環(huán)條件N=N+1ENDDO?S方法二:Set
talk
offS=0FOR N=1
TO
100S=S+NENDFOR?S綜合1:求1至100之間的整數(shù)和兩種循環(huán)結(jié)構(gòu)比較3010/2/2023方法一:SET
TALK
OFFS=0方法二:SET
TALK
OFFS=0FOR
N=0
TO 100
STEP
2S=S+NENDFOR?SN=0DO WHILE
N<=100IF
MOD(N,2)=0S=S+NENDIFN=N+2ENDDO?S綜合2:求1至100之間的偶數(shù)和3110/2/2023兩種循環(huán)結(jié)構(gòu)比較在循環(huán)語句中兩條重要的命令:LOOP:如果循環(huán)體中含有LOOP語句,則當(dāng)執(zhí)行到LOOP
語句時,將跳過
LOOP后面的所有語句,重新開始循環(huán)EXIT:如果循環(huán)體中含有EXIT語句,則當(dāng)執(zhí)行到EXIT
語句時,將跳過
EXIT后面的所有語句,強(qiáng)行退出循環(huán)循環(huán)體Loop語句Exit語句3210/2/2023補(bǔ)充:下面的例子隨機(jī)產(chǎn)生一個70-80之間的數(shù):3310/2/2023x=0DO
WHILE
.T.
&&循環(huán)條件始終滿足X=RAND()*100IF
x>70
AND(1)______(2)ENDIFENDDO?XX<80EXITSum=0for
n=1
to
100Ifmod(n,
2)=0loop&&判斷N如果是偶數(shù)
&&返回到FOR且使N=N+1endifSum=Sum+n&&判斷是否已大于100If
Sum>=100Sum=Sum-n&&跳出FOR循環(huán)跳到?SUM語句exitendifEndfor?sum含loop
和exit
語句的例子:求連續(xù)奇數(shù)的和且和小于1003410/2/2023(3)SCAN
<條件><循環(huán)體>ENDSCAN注意:此語句僅限于處理表的記錄3510/2/20235.2.4循環(huán)結(jié)構(gòu)三:使得一組語句重復(fù)執(zhí)行若干次。例5.14
顯示所有籍貫為“江蘇”的學(xué)生姓名和籍貫ClearUse
xsScan
for"江蘇"$jg?xm,jgendscan例如,顯示CJ表中所有成績在60分以下的記錄,顯示一條畫一條橫線:3610/2/2023USE
CJSCAN
FOR
CJ<60?XH,
KCDH,
CJ?"
"ENDSCAN1、完善程序:下列程序用來求0~100偶數(shù)之和,請將它寫完整3710/2/2023STORE
0
TO
N,SDOWHILE
.T.IFN>100_______ELSES=S+NENDIFN=N+2ENDDO練一練EXIT2、運行下列程序以后,顯示運行結(jié)果的前二行:————————結(jié)果:—ABCDE
—、—BCDE
—SET
TALK
OFFS=“ABCDEF”N=LEN(S)K=1DO
WHILE
K<=N?SUBSTR(S,K,N-K)K=K+1ENDDO3810/2/20233、下列程序的功能是求100以內(nèi)的偶數(shù)之和及奇數(shù)之和,根據(jù)要求完善程序。P=0Q=0FOR
N=1
TO
100IF______________P=P+NELSE_____________ENDIF_______________?“奇數(shù)和為”,QMod(n,2)=0Q=Q+nENDFOR?“偶數(shù)和為”,P3910/2/2023
4、完善下列程序:以實現(xiàn)通過字符串變量操作豎向顯示“天長地久”、橫向顯示“地久天長”的功能。程序清單如下:4010/2/2023SET
TALK
OFFSTORE “天長地久”
TO
chCLEARN=1DO
WHILE
N<8?_________________N=N+2ENDDO?______________________??SUBSTR(ch,1,4)SUBSTR(Ch,N,2)SUBSTR(Ch,5)5、完善下列程序,使其如下圖所示。CLEARFOR
i=1
TO
9FOR
j=1
TO
9++SPACE(2)IF
i<=j??STR(i,1)+"*"+STR(j,1)+"="ENDIFENDFORENDFORStr(i*j,2)?4110/2/2023例,求100之內(nèi)的所有素數(shù),存放在數(shù)組A中,并將素數(shù)按每
行10個顯示。4210/2/2023綜合應(yīng)用例題dime
a(50)m=1a(1)=2for
i=3
to
99
step
2for
k=2
to
sqrt(i)if
mod(i,k)=0exitendifendforif
k>sqrt(i)m=m+1a(m)=Iendifendfork=0for
j=1
tomk=k+1??A(J)IFK%10=0?ENDIFENDFOR4310/2/20235.2.5過程與用戶自定義函數(shù)4410/2/2023我們可以將經(jīng)常執(zhí)行的具有某一功能的一段代碼獨立出來,創(chuàng)建一個過程或用戶自定義函數(shù)(UserDefined
Function,簡稱UDF)。如果需要多次用到該功能,就不必多次編寫該代碼,而只需調(diào)用這個過程或自定義函數(shù)。1.過程與自定義函數(shù)的定義過程的語法格式:PROCEDURE
過程名[PARAMETERS
參數(shù)列表]過程體[RETURN[返回值]]ENDPROC注意:當(dāng)缺省RETURN時,返回值為.T.用戶自定義函數(shù)的語法格式:FUNCTION
函數(shù)名[PARAMETERS
參數(shù)列表]函數(shù)體[RETURN[返回值]]ENDFUNC4510/2/20231、過程或函數(shù)可以放在一般程序的后邊,不能把可執(zhí)行的主程序代碼放在過程或函數(shù)之后;2、將過程或自定義函數(shù)保存為獨立的程序文件;3、建立包含多個過程和自定義函數(shù)的過程文件;4、過程或函數(shù)可以保存在數(shù)據(jù)庫的存儲過程中。4610/2/2023過程或函數(shù)的存放向過程或函數(shù)傳遞參數(shù)4710/2/2023為了使過程或函數(shù)具有一定的靈活性,可以向過程或自定義函數(shù)傳遞參數(shù)。參數(shù)語句格式為:PARAMETERS
參數(shù)表注意:如果有參數(shù)語句,則該語句必須為PROCEDURE或FUNCTION命令后的第一條語句。參數(shù)表也稱為虛參,最多可允許27個參數(shù),參數(shù)之間用逗號分開。例如:4810/2/2023K1,K2,K3FUNCTION
F1PARAMETER…………ENDFUNC2.過程與自定義函數(shù)的調(diào)用4910/2/2023可以使用DO命令
當(dāng)調(diào)用過程時:DOWITH過程名
實參表當(dāng)調(diào)用函數(shù)時采用與系統(tǒng)函數(shù)同樣的調(diào)用方法:函數(shù)名(實參表)實參表與虛參表應(yīng)在個數(shù)、位置上一一對應(yīng)。例:函數(shù)定義functionmyudf1parameters
rs=3.1415926*r*rreturn
sendfunc輸入?yún)?shù):r圓的半徑?
Myudf1(3)例:函數(shù)調(diào)用函數(shù)的返回值是S,s為局部變量,存放圓的面積調(diào)用已定義的函數(shù);3與r對應(yīng)。返回函數(shù)值(圓的面積)在命令窗口中執(zhí)行:5010/2/2023MODIFY
COMMAN
myudf1,接著輸入代碼。并將該函數(shù)保存為獨立的程序文件myudf1.prg例:過程定義輸入?yún)?shù):r圓的半徑輸出參數(shù):S圓的面積public
ss
&&須先定義變量do
myudf2
with
3,ss?'半徑為3圓面積=',ss計算圓的面積;結(jié)果送SProcedure
myudf2parameters
r,ss=3.1415926*r*rendproc例:過程調(diào)用調(diào)用已定義的過程;3與r對應(yīng);ss與S對應(yīng)5110/2/2023P147例5.15:定義一個函數(shù)ntoc(),當(dāng)傳遞給一個0~9之間的數(shù)字時,返回一個中文的“零~九”FUNCTION
ntocPARAMETER
dLOCAL
sS="零一二三四五六七八九"RETURN
substr(s,d*2+1,2)ENDFUNC在命令窗口中執(zhí)行:MODIFY
COMMAN
ntoc,接著輸入代碼。并將該函數(shù)保存為獨立的程序文件ntoc.prg對該函數(shù)的調(diào)用:?
Ntoc(3) &&顯示‘
三’5210/2/2023函數(shù)與過程的區(qū)別5310/2/20231、定義的區(qū)別procedurefunction函數(shù)要返回值2、調(diào)用的區(qū)別過程用DO
語句調(diào)用函數(shù)出現(xiàn)在表達(dá)式中,注意函數(shù)返回值的類型。注意:如果調(diào)用某過程文件中的過程和自定義函數(shù),則在調(diào)用之前運行:5410/2/2023(過程或自定義)文件名SET
PROCEDURE
TO重點掌握:1、完善程序2、寫出程序運行結(jié)果補(bǔ)充
下列定轉(zhuǎn)換FUNCTION義的dtocc()函數(shù)將一個日期型數(shù)據(jù)年XX月XX日”的中文字符串。dtoccPara
deDate
cYear=STR(YEAR(deDate),4)+”年”cMonth=STR(Month
(deDate),2)+”月”cDay=STR(DAY(deDate),2)+”日”________RETURNendfunccyear+cmonth+cday保存文件名為:dtocc5510/2/2023為形如”XXXX
調(diào)用函數(shù)過程:?dtocc(date())結(jié)果為:例5.16
下列程序計算S=1!+2!+3!+4!+5!s=0
&&主程序求和5610/2/2023&&自定義函數(shù)計算階乘!For
I=1
to
5s=s+fjc(I)Endfor?sFUNCTION
fjcParameters
xp=1for
n=1
toxp=p*nendforreturn
pEndfunc作業(yè)5710/2/20231、計算
S=1/1!+1/2!+1/3!+……+1/20!2、計算并顯示任意輸入的整數(shù)的因子。5.3面向?qū)ο蟮某绦蛟O(shè)計基礎(chǔ)類和對象概述類(class):具有相同的結(jié)構(gòu)、操作,并遵守相同規(guī)則的對象聚合在一起的對象。對象:對象是基于某種類所創(chuàng)建的實例。類是靜態(tài)概念,對象是動態(tài)概念。比如:我們把世界上的人通稱為人類5810/2/2023每個對象都具有屬性、事件和方法這三個要素。屬性(Property):對象的特征或某一方面的行為。屬性是可自定義的。事件(Event):由對象識別的一個動作(如單擊鼠標(biāo)),可以編寫相應(yīng)的代碼對此動作進(jìn)行響應(yīng)。事件是不可自定義的。方法(Method):對象能夠執(zhí)行的一個操作。方法是可自定義的。每個對象都具有屬性,以及與之相關(guān)的事件和方法,通過對象的屬性、事件和方法來處理對象。5910/2/2023Visual
FoxPro中,面向?qū)ο蟪绦蛟O(shè)計主要體現(xiàn)在作為用戶界面的表單(集)及其控件的設(shè)計。表單頁框命令按鈕復(fù)選框組合框微調(diào)框圖像6010/2/2023容器編輯框列表框標(biāo)簽控件文本框組合框圖像表單集微條框復(fù)選框形狀表單表格選項按鈕組線條工具欄標(biāo)頭*選項按鈕*分隔符*自定義列*計時器命令按鈕組頁框OLE綁定型控件命令按鈕頁面*OLE容器控件6110/2/2023表5-1
VFP的常用基類注:*表示該類是容器的集成部分,在類設(shè)計器中不能基于它們創(chuàng)建子類5.3面向?qū)ο蟮某绦蛟O(shè)計基礎(chǔ)6210/2/20235.3.2基類——類可以分成三大類基類(base
class):是VFP系統(tǒng)提供的內(nèi)部定義的類,可用作其他用戶自定義類的基礎(chǔ)。子類(Subclass):是以其他類定義為起點,為某一種對象所建立的新類。父類(parent
class):子類所基于的類。用戶自定義類(User-defined
Class):與VFP基類相似,但由用戶定義,并且可用來派生子類。5.3.2基類——基類也可以分成兩大類6310/2/2023容器類(Container
Classes):包容其他類的基類。VFP的容器類有:容器、工具欄、表單集、
表單、表格、表格列、頁框、頁面、命令按鈕組、選項按鈕組。如圖5-2所示??丶?Control
Classes):可以包含在容器類中的基類。容器類對象、控件類對象示例最外層容器對象次外層控件類對象次外層容器類對象次外層容器對象所包含的控件10/2/2023返回645.3.2基類P151最小屬性集:Class、BaseClass、ClassLibrary、ParentClass最小事件集:Init、Destroy、Error6510/2/20235.3.3處理對象6610/2/20231.
引用對象——在引用對象時,首先要弄清該對象相對于容器層次的關(guān)系。引用對象的格式為:引用地址.對象名稱絕對引用絕對引用是從最頂層對象開始,逐層引用,直到所指定的對象的方式。(絕對引用示例)相對引用相對引用是指在容器層次中相對于某個容器層次的引用。Form2對象圖中的Text1對象的絕對引用最高層容器對象表單集的name屬性Formset1.form2.Text1表單對象的name屬性對象與對象之間用點號分隔6710/2/2023返回*相對引用通常用于某個事件處理代碼或方法程序代碼中對所包容的對象的引用,引用時可以直接使用其對象名。6810/2/2023ActiveForm當(dāng)前活動表單Activepage當(dāng)前活動表單中的活動頁面ActiveControl當(dāng)前活動表單中具有焦點的控件PARENT該對象的直接容器THIS該對象THISFORM包含該對象的表單THISFORMSET包含該對象的表單集相對引用示例表5-5
VFP中相對引用對象時所用的關(guān)鍵字_SCREEN.activeform &&表示當(dāng)前活動的表單對該命令按鈕組對象中的“上一條”按鈕的引用,語句是:This.cmd1該命令按鈕組該命令按鈕組中的第一個按鈕的name屬性10/2/2023返回695.3.3處理對象2.設(shè)置對象屬性——有兩種方法在采用可視化的方法進(jìn)行對象設(shè)計時,可以在屬性窗口中對對象屬性進(jìn)行設(shè)置在程序代碼中,可以使用如下的語法對對象屬性進(jìn)行設(shè)置:引用對象.屬性名=屬性值比如將命令按鈕組中的第一個按紐(“上一條”)的前景色改為紅色:This.cmd1.forecolor=rgb(255,0,0)該命令按鈕組“上一條”按鈕的name屬性前景色屬性綠色rgb(0,255,0)藍(lán)色rg屬b(0性,0,值255)白色rgb(255,255,255)黑色rgb(0,0,0)7010/2/20235.3.3處理對象7110/2/2023釋放表單的語法:3.調(diào)用對象的方法程序方法程序是對象能夠執(zhí)行的一個操作,是和對象相聯(lián)系的過程。調(diào)用方法程序的語法如下:引用對象.方法程序例如 刷新表單的語法:Thisform.refreshThisform.release5.3.3處理對象7210/2/20234.對事件的響應(yīng)當(dāng)對象的某個事件發(fā)生時,該事件的處理程序代碼將被執(zhí)行。如果事件沒有與之相關(guān)聯(lián)的處理程序,則當(dāng)事件發(fā)生時不會發(fā)生任何操作比如
運動員踢足球,足球被踢出。在這個過程當(dāng)中,對象是足球,事件是踢,足球被踢出是對踢事件的響應(yīng)。比如
當(dāng)用戶單擊某命令按鈕時,該命令按鈕的Click事件的程序代碼將被執(zhí)行。5.3.4事件模型7310/2/2023核心事件VFP
基類的事件集合是固定的,不能進(jìn)行擴(kuò)充。核心事件集見P155
表5-6
(注意:最小事件集Init、Destroy、Error)容器層次與類層次中的事件為控件寫事件的處理代碼時,應(yīng)注意以下兩條一般性的原則:
容器不處理與包含的控件相關(guān)聯(lián)的事件。
如果沒有與控件相關(guān)聯(lián)的事件代碼,VFP將在類層次的更高層上檢查是否有與此事件相關(guān)聯(lián)的控件代碼5.3.4事件模型7410/
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陪駕的相關(guān)協(xié)議書范文范本
- 營業(yè)執(zhí)照合伙人協(xié)議書范文四川
- 多彩的秋天大班教案
- 二年級語文課件教學(xué)
- 注意衛(wèi)生演講稿(3篇)
- 雙層幕墻介紹
- 德育導(dǎo)師育人工作總結(jié)
- 電子廠實習(xí)總結(jié)600字(21篇)
- 工會迎新年聯(lián)歡會活動方案(3篇)
- 科學(xué)教學(xué)個人工作總結(jié)范例
- 人教版七年級數(shù)學(xué)上冊專題03線段的雙中點模型(原卷版+解析)
- 新外研版高中英語必修1單詞正序英漢互譯默寫本
- 工程款遲延支付影響工期的函(聯(lián)系單)
- 新生兒呼吸機(jī)使用及護(hù)理
- 電子元器件來料檢驗規(guī)范
- 滬科版七年級下冊《相交線、平行線與平移》
- ASME材料-設(shè)計許用應(yīng)力
- 家庭醫(yī)生簽約服務(wù)培訓(xùn)
- 設(shè)計部門降本增效措施方案
- 2024年環(huán)磷酰胺原料藥項目調(diào)研分析報告
- 2024年婚禮跟拍合同模板
評論
0/150
提交評論