




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章VisualFoxPro6.0初步1.1數(shù)據(jù)庫的基本概念1.2Fox系列數(shù)據(jù)庫的發(fā)展1.3VisualFoxPro6.0的啟動及主窗口組成1.1數(shù)據(jù)庫的基本概念1.數(shù)據(jù)和數(shù)據(jù)處理數(shù)據(jù)是指存儲在某一種媒體上,能夠識別的物理符號。數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程。廣義地講,處理包括對數(shù)據(jù)的收集、存儲、加工、分類、計算、檢索、傳輸?shù)纫幌盗刑幚砘顒?。狹義地講,處理是指對所輸入的數(shù)據(jù)進(jìn)行加工整理。2.數(shù)據(jù)模型數(shù)據(jù)模型是指數(shù)據(jù)庫的組織形式,它決定了數(shù)據(jù)庫中數(shù)據(jù)之間聯(lián)系的表達(dá)方式,即把在計算機(jī)中表示客觀事物及其聯(lián)系的數(shù)據(jù)及結(jié)構(gòu)稱為數(shù)據(jù)模型。
(1)層次數(shù)據(jù)模型層次模型是以記錄數(shù)據(jù)為節(jié)點(diǎn)的樹,節(jié)點(diǎn)之間的聯(lián)系像一棵倒放的樹,樹根、樹的分枝點(diǎn)、樹葉都是節(jié)點(diǎn)。節(jié)點(diǎn)是分層的,樹根是最高層。例如家譜、企事業(yè)中各部門編制之間的聯(lián)系。(2)網(wǎng)狀數(shù)據(jù)模型網(wǎng)狀模型是以記錄數(shù)據(jù)為結(jié)點(diǎn)的連通圖,節(jié)點(diǎn)之間的聯(lián)系像一張網(wǎng),網(wǎng)上的連接點(diǎn)都是節(jié)點(diǎn)。節(jié)點(diǎn)之間是平等的,不分層次。例如同事、同學(xué)、朋友、親戚之間的聯(lián)系。
(3)關(guān)系數(shù)據(jù)模型關(guān)系模型中每個關(guān)系對應(yīng)一張二維表,采用二維表來表示數(shù)據(jù)及其聯(lián)系,表格與表格之間通過相同的欄目建立聯(lián)系。例如學(xué)生成績表、工資表等。
3.數(shù)據(jù)庫系統(tǒng)的特點(diǎn)數(shù)據(jù)庫是以一定的組織方式存儲在一起的、能為多個用戶共享的、獨(dú)立于應(yīng)用程序的、相互關(guān)聯(lián)的數(shù)據(jù)集合。數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)如下:
(1)數(shù)據(jù)的共享性:數(shù)據(jù)庫中的數(shù)據(jù)能為多個用戶服務(wù)。
(2)數(shù)據(jù)的獨(dú)立性:用戶的應(yīng)用程序與數(shù)據(jù)的邏輯組織與物理存儲方式無關(guān)。
(3)數(shù)據(jù)的完整性:數(shù)據(jù)庫中的數(shù)據(jù)在操作和維護(hù)過程中保持正確無誤。
(4)數(shù)據(jù)的集中性:數(shù)據(jù)庫中的數(shù)據(jù)冗余(重復(fù))少。4.關(guān)系數(shù)據(jù)庫一個關(guān)系數(shù)據(jù)庫是由若干個數(shù)據(jù)表組成,數(shù)據(jù)表又由若干個記錄組成,而每個記錄由若干個以字段屬性加以分類的數(shù)據(jù)項(xiàng)組成。
(1)表名在關(guān)系數(shù)據(jù)庫中,每一個數(shù)據(jù)表都具有相對的獨(dú)立性,這個獨(dú)立性的唯一標(biāo)志是數(shù)據(jù)表的名字,稱其為數(shù)據(jù)表文件名。
(2)記錄表格中的每一行在關(guān)系中稱為一個記錄。(3)字段表格中的每一列在關(guān)系中稱為一個字段,每個字段都要有一個字段名,它對應(yīng)表格中的欄目名。記錄中的一個字段的取值,稱為字段值。字段值隨著每一行記錄的不同而變化。1.2Fox系列數(shù)據(jù)庫的發(fā)展20世紀(jì)70年代后期,數(shù)據(jù)庫理論的研究已較為成熟。1982年美國Ashton-Tate公司推出了適合8位微機(jī)的dBASEII關(guān)系數(shù)據(jù)庫管理系統(tǒng)。隨著16位微機(jī)的出現(xiàn),Ashton-Tate公司于1984年6月推出了更新版本dBASEIII。
1984年美國FoxSoftware公司推出了與dBASE完全兼容的FoxBASE,且引入了編譯器。1986年,與dBASEIIIPlus兼容的FoxBASE+推出。1987年7月推出了FoxBASE+2.0,其最高版本是1988年7月推出的FoxBASE+2.1。1989年,F(xiàn)oxPro1.0正式推出。FoxPro采用友好的圖形界面,引入基于DOS環(huán)境的窗口技術(shù),用戶使用的界面再也不是圓點(diǎn),而是與圓點(diǎn)提示符下等效命令的菜單系統(tǒng)。
1991年7月FoxPro2.0推出,它面向?qū)ο笈c事件,能充分使用擴(kuò)展內(nèi)存,是一個真正的32位產(chǎn)品。
1992年,F(xiàn)ox軟件公司被Microsoft軟件公司收購后,于年中推出了FoxPro2.5。
1995年9月,Microsoft公司推出VisualFoxPro3.0,目前VisualFoxPro的最高版本是1998年推出的VisualFoxPro6.0。1.3VisualFoxPro6.0的啟動及主窗口組成1.3.1啟動VisualFoxPro6.0
從“開始”菜單中選擇“程序”項(xiàng),從其子菜單中單擊“MicrosoftVisualFoxPro6.0”。進(jìn)入VisualFoxPro6.0后,窗口中部的對話框有5個單選項(xiàng)和1個復(fù)選項(xiàng):
·
打開組件管理器。
·
查找示例程序。
·
創(chuàng)建新的應(yīng)用程序。
·
打開一個已存在的項(xiàng)目。
·
關(guān)閉此屏。1.3.2VisualFoxPro的主界面窗口
VFP窗口的顯示如圖1.3所示。標(biāo)題欄菜單欄標(biāo)準(zhǔn)工具欄命令窗口主窗口圖1.3VisualFoxPro的主界面窗口1.標(biāo)題欄標(biāo)題欄的最左邊是窗口控制圖標(biāo),單擊該圖標(biāo),將拉出控制菜單,從中可以進(jìn)行窗口的移動、最大、最小、恢復(fù)和關(guān)閉操作??刂瓢粹o的右邊是應(yīng)用程序名稱“MicrosoftVisualFoxPro”。標(biāo)題欄的最右邊依次是最小化、最大化或恢復(fù)、關(guān)閉按鈕。2.菜單欄
VisualFoxPro的大部分功能和操作都可以通過菜單系統(tǒng)來實(shí)現(xiàn)。單擊菜單欄將彈出下拉菜單,選擇相應(yīng)的命令就可實(shí)現(xiàn)相應(yīng)的功能或操作。
3.標(biāo)準(zhǔn)工具欄標(biāo)準(zhǔn)工具欄上的按鈕代表了最為常用的命令,有效地利用工具欄,能大大方便程序開發(fā)工作。4.命令窗口在VisualFoxPro6.0中,菜單中的命令也可以通過命令窗口進(jìn)行輸入來執(zhí)行。命令窗口是一個可編輯的窗口,可在命令窗口中進(jìn)行各種插入、刪除、塊復(fù)制等操作,也可用通過光標(biāo)或滾動條在整個命令窗口中上下移動。1.3.3定制VisualFoxPro開發(fā)環(huán)境
1.定制VisualFoxPro工具欄
VisualFoxPro6.0中可定制的工具欄,見表1-2。表1-2VisualFoxPro6.0中可定制的工具欄工具相關(guān)的工具欄命令數(shù)據(jù)庫設(shè)計器數(shù)據(jù)庫CREATEDATABASE表單設(shè)計器表單控件、表單設(shè)計器、調(diào)色板、布局CREATEFORM打印預(yù)覽打印預(yù)覽
查詢設(shè)計器查詢設(shè)計器CREATEQUERY報表設(shè)計器報表控件、報表設(shè)計器、調(diào)色板、布局CREATEREPORT(1)激活及關(guān)閉工具欄單擊“顯示”菜單中的“工具欄”,打開“工具欄”對話框,在“工具欄”對話框中,選中需激活的工具欄。若要關(guān)閉某工具欄,可以直接單擊該工具欄上的“關(guān)閉”按鈕,或者單擊“顯示”菜單中的“工具欄”,在“工具欄”對話框中,清除欲關(guān)閉工具欄前面的復(fù)選框內(nèi)容,使之空白。(2)自定義工具欄選擇“顯示”菜單中的“工具欄”,在“工具欄”對話框中,選定需定制的工具欄并單擊“定制”按鈕,打開“定制工具欄”對話框,在“定制工具欄”對話框中選擇適當(dāng)?shù)念悇e,然后把所需按鈕拖到工具欄上。在“定制工具欄”對話框中選擇“關(guān)閉”按鈕,關(guān)閉工具窗口來結(jié)束工具欄的定制工作。2.設(shè)置環(huán)境和管理臨時文件
(1)使用“選項(xiàng)”對話框工作要查看或更改環(huán)境設(shè)置,可以通過“選項(xiàng)”對話框來實(shí)現(xiàn)。單擊“工具”菜單中的“選項(xiàng)”命令,打開“選項(xiàng)”對話框,“選項(xiàng)”對話框中具有一系列代表不同類別環(huán)境選項(xiàng)的選項(xiàng)卡。(2)保存設(shè)置如果在“選項(xiàng)”對話框中選擇設(shè)置,然后單擊“確定”按鈕,則這些設(shè)置僅在當(dāng)前工作期有效,直到退出VisualFoxPro(或直到再次更改它們)。要永久保存所做更改,可以單擊“設(shè)置為默認(rèn)值”按鈕。(3)管理臨時文件指定臨時文件位置的步驟為:單擊“工具”菜單中的“選項(xiàng)”命令,在“選項(xiàng)”對話框中選擇“文件位置”選項(xiàng)卡,輸入臨時文件的位置。若要永久保存所做更改,單擊“設(shè)置為默認(rèn)值”按鈕。1.3.4設(shè)置編輯器選項(xiàng)
在VisualFoxPro6.0中,可以配置VisualFoxPro編輯器使之按用戶希望的方式顯示文本。
(1)首先用下列方法之一,打開一個編輯器窗口:
·
在“項(xiàng)目管理器”中,選擇一個程序或文本文件,然后選擇“新建”?;蛘唠p擊現(xiàn)有程序或文本文件的名稱。
·
在“命令”窗口中,輸入MODIFYCOMMAND、MODIFYFILE或MODIFYMEMO。
·
從“文件”菜單選擇“新建”命令,然后指定文件類型為“程序”或“文本文件”;或者選擇“打開”,然后選擇程序或文本文件名稱。
·
在“表單設(shè)計器”中,雙擊一個表單或控件。
(2)在編輯窗口的任意位置上單擊鼠標(biāo)右鍵顯示快捷菜單,然后選擇“屬性”,將打開“編輯屬性”對話框。默認(rèn)時,在“編輯屬性”對話框中所作設(shè)置僅用于當(dāng)前編輯窗口。1.3.5恢復(fù)VisualFoxPro環(huán)境
如果希望關(guān)閉所有操作返回VisualFoxPro啟動時的狀態(tài),在命令窗口或在退出VisualFoxPro之前最后調(diào)用的程序中,按下列順序運(yùn)行命令:
CLEARALLCLOSEALLCLEARPROGRAM2.1VisualFoxPro6.0語言基礎(chǔ)2.1.1數(shù)據(jù)和數(shù)據(jù)類型1.數(shù)據(jù)的分類從數(shù)據(jù)的類型來分,數(shù)據(jù)可分為:數(shù)值型數(shù)據(jù)、字符型數(shù)據(jù)、邏輯型數(shù)據(jù)等。從數(shù)據(jù)的處理層次上分,數(shù)據(jù)又可分為:常量、變量、函數(shù)和表達(dá)式。2.數(shù)據(jù)類型與其他程序設(shè)計語言一樣,VisualFoxPro提供了多種數(shù)據(jù)類型。
(1)字符型(Character)由字母(漢字)、數(shù)字、空格等任意ASCII碼字符組成。字符數(shù)據(jù)的長度為0~254,每個字符占1個字節(jié)。
(2)貨幣型(Currency)在使用貨幣值時,可以使用貨幣型來代替數(shù)值型。小數(shù)位數(shù)超過4位時,系統(tǒng)將進(jìn)行四舍五入的處理。每個貨幣型數(shù)據(jù)占8個字節(jié)。(3)日期型(Date)用以保存不帶時間的日期值。日期型數(shù)據(jù)的存儲格式為“yyyymmdd”其中yyyy為年,占4位,mm為月,占2位,dd為日,占2位。日期型數(shù)據(jù)的表示有多種格式,最常用的格式為mm/dd/yyyy。日期型數(shù)據(jù)取值的范圍是:公元0001年1月1日~公元9999年12月31日(4)日期時間型(DateTime)用以保存日期和時間值。日期時間型數(shù)據(jù)的存儲格式為“yyyymmddhhmmss”。
(5)邏輯型(Logical)用于存儲只有兩個值的數(shù)據(jù)。存入的值只有真(.T.)和假(.F.)兩種狀態(tài),占1個字節(jié)。
(6)數(shù)值型(Numeric)用來表示數(shù)量,它由數(shù)字0~9、一個符號(+或-)和一個小數(shù)點(diǎn)(.)組成。數(shù)值型數(shù)據(jù)的長度為1~20,每個數(shù)據(jù)占8個字節(jié)。(7)雙精度型(Double)雙精度型只能用于數(shù)據(jù)表中字段的定義,它采用固定存儲長度的浮點(diǎn)數(shù)形式。與數(shù)值型不同,雙精度型數(shù)據(jù)的小數(shù)點(diǎn)的位置是由輸入的數(shù)據(jù)值來決定的。每個雙精度型數(shù)據(jù)占8個字節(jié)。
(8)浮點(diǎn)型(Float)只能用于數(shù)據(jù)表中字段的定義,浮點(diǎn)型在功能上與數(shù)值型等價。
(9)通用型(General)用于存儲OLE對象,只能用于數(shù)據(jù)表中字段的定義。該字段包含了對OLE對象的引用。(10)整型(Integer)用于存儲無小數(shù)部分的數(shù)值,只能用于數(shù)據(jù)表中字段的定義。在數(shù)據(jù)表中,整型字段占用4個字節(jié)。整型以二進(jìn)制形式存儲,不象數(shù)值型那樣需要轉(zhuǎn)換成ASCII字符存儲。
(11)備注型(Memo)備注型用于字符型數(shù)據(jù)塊的存儲,只能用于數(shù)據(jù)表中字段的定義。在數(shù)據(jù)表中,備注型字段占用10個字節(jié),并用這10個字節(jié)來引用備注的實(shí)際內(nèi)容。實(shí)際備注內(nèi)容的多少只受內(nèi)存可用空間的限制。(12)字符型(二進(jìn)制)用于存儲任意不經(jīng)過代碼頁修改而維護(hù)的字符數(shù)據(jù),只能用于數(shù)據(jù)表中字段的定義。
(13)備注型(二進(jìn)制)用于存儲任意不經(jīng)過代碼頁修改而維護(hù)的備注型數(shù)據(jù),只能用于數(shù)據(jù)表中字段的定義。2.1.2常量與變量
1.常量常量是一個命名的數(shù)據(jù)項(xiàng),在整個操作過程中其值保持不變。
VisualFoxPro6.0定義了以下類型的常量:
(1)數(shù)值型常量,如:5,28.23,-3;
(2)字符型常量,用單引號或雙引號括起來的字符串,如:"ABCD",'你好';
(3)邏輯型常量,只有兩種:.T.和.F.;
(4)日期型常量和日期時間型常量,如:{^2001-10-30},{^2001-10-3011:25am}。2.變量(1)變量的概念
VFP有3種形式的變量:內(nèi)存變量、數(shù)組變量和字段變量。內(nèi)存變量是存放單個數(shù)據(jù)的內(nèi)存單元;數(shù)組變量是存放多個數(shù)據(jù)的內(nèi)存單元組;字段變量則是存放在數(shù)據(jù)表中的數(shù)據(jù)項(xiàng)。(2)變量名的命名規(guī)則每個變量都有一個名稱,叫做變量名,VFP通過相應(yīng)的變量名來使用變量。變量名的命名規(guī)則是:變量名由字母、數(shù)字及下劃線組成,以字母或下劃線開頭,長度為1~128個字符。但要注意,不能使用VFP的保留字。中文VFP中,可以使用漢字作變量名,可以漢字開頭,每個漢字占2個字符。
(3)變量的作用域變量的作用域包括定義它的過程以及該過程所調(diào)用的子過程范圍。在VisualFoxPro中,還可以使用LOCAL、PRIVATE和PUBLIC命令強(qiáng)制規(guī)定變量的作用范圍。2.1.3運(yùn)算符與表達(dá)式
運(yùn)算是對數(shù)據(jù)進(jìn)行加工的過程,描述各種不同運(yùn)算的符號稱為運(yùn)算符。表達(dá)式用來表示某個求值規(guī)則,它由運(yùn)算符和配對的圓括號將常量、變量、函數(shù)、對象等操作數(shù)以合理的形式組合而成。表達(dá)式可用來執(zhí)行運(yùn)算、操作字符或測試數(shù)據(jù),每個表達(dá)式都產(chǎn)生唯一的值。表達(dá)式的類型由運(yùn)算符的類型決定。1.算術(shù)運(yùn)算符與算術(shù)表達(dá)式算術(shù)表達(dá)式也稱數(shù)值型表達(dá)式,由算術(shù)運(yùn)算符、數(shù)值型常量、變量、函數(shù)和圓括號組成,其運(yùn)算結(jié)果為一數(shù)值。例如,3*4+(6–2)/2。算術(shù)表達(dá)式的格式為:
〈數(shù)值1〉〈算術(shù)運(yùn)算符1〉〈數(shù)值2〉[〈算術(shù)運(yùn)算符2〉〈數(shù)值3〉…](1)算術(shù)運(yùn)算符表2-1算術(shù)運(yùn)算符運(yùn)算符名稱說明及示例+加同數(shù)學(xué)中的加法,如3+5-減同數(shù)學(xué)中的減法,如8-2*乘同數(shù)學(xué)中的乘法,如2*6/除同數(shù)學(xué)中的除法,如8/4^或**乘方同數(shù)學(xué)中的乘方,如6^2表示62%求余26%3表示26除以3所得的余數(shù),結(jié)果為2算術(shù)運(yùn)算符的優(yōu)先級依次為:()→^或**→*和/→%→+和-
(2)表達(dá)式的書寫規(guī)則
1)每個符號占1格,所有符號都必須一個一個并排寫在同一橫線上,不能在右上角或右下角寫方次或下標(biāo)。例如,52要寫成5^2,x1+x2要寫成x1+x2。
2)原來在數(shù)學(xué)表達(dá)式中省略的內(nèi)容必須重新寫上。例如,3xy要寫成3*x*y。
3)所有括號都用小括號(),括號必須配對。例如,2[x+5(y+z)]必須寫成2*(x+5*(y+z))。
4)要把數(shù)學(xué)表達(dá)式中的有些符號,改成VFP中可以表示的符號。例如,需要把πr2改為pi*r^2。2.字符串運(yùn)算符與字符串表達(dá)式字符串表達(dá)式由字符串常量、字符串變量、字符串函數(shù)和字符串運(yùn)算符組成。字符串表達(dá)式的值為字符串。
VFP提供的字符運(yùn)算符有兩個(其運(yùn)算級別相同),見表2-2。表2-2字符運(yùn)算符運(yùn)算符名稱說明+連接將字符型數(shù)據(jù)進(jìn)行連接-空格移位連接兩字符型數(shù)據(jù)連接時,將前一數(shù)據(jù)尾部的空格移到后面數(shù)據(jù)的尾部
字符串表達(dá)式的格式為:
〈字符串1〉〈字符串運(yùn)算符1〉〈字符串2〉[〈字符串運(yùn)算符2〉〈字符串3〉…]3.日期時間運(yùn)算符與日期時間表達(dá)式日期型表達(dá)式由算術(shù)運(yùn)算符“+、-”、算術(shù)表達(dá)式、日期型常量、日期型變量和函數(shù)組成。有下面3種情況:
(1)兩個日期型數(shù)據(jù)相減,結(jié)果是一個數(shù)值型數(shù)據(jù)(兩個日期相差的天數(shù))。
(2)一個表示天數(shù)的數(shù)值型數(shù)據(jù)加到日期型數(shù)據(jù)中,其結(jié)果為一日期型數(shù)據(jù)(向后推算日期)。
(3)一個表示天數(shù)的數(shù)值型數(shù)據(jù)從日期型數(shù)據(jù)中減掉它,其結(jié)果為一日期型數(shù)據(jù)(向前推算日期)。4.類與對象運(yùn)算符類與對象運(yùn)算符專門用于實(shí)現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計。
5.名表達(dá)式
(1)VFP中使用的名在VFP中,許多命令和函數(shù)需要提供一個名。可在VFP中使用的名有:表/.DBF(文件名)、表/.DBF(別名)、表/.DBF(字段名)、索引文件名、文件名、內(nèi)存變量和數(shù)組名、窗口名、菜單名、表單名、對象名、屬性名等。(2)定義名的原則在VFP中定義一個名時,應(yīng)遵循以下原則:
1)只能由字母、數(shù)字和下劃線字符組成。
2)以字母或下劃線開頭。
3)長度為1~128個字符,但自由表中的字段名、索引標(biāo)記名最多為10個字符。文件名按操作系統(tǒng)的規(guī)定。
4)不能使用VFP的保留字。2.1.4函數(shù)
VFP的函數(shù)有兩種,即系統(tǒng)函數(shù)和用戶定義函數(shù)。
(1)系統(tǒng)函數(shù):是由VFP提供的內(nèi)部函數(shù),用戶可以隨時調(diào)用。
(2)用戶定義函數(shù):由用戶根據(jù)需要自行編寫。2.2可視化編程的基本概念2.2.1對象、對象的屬性、方法1.對象從可視化編程的角度來看,對象是一個具有屬性(數(shù)據(jù))和方法(行為方式)的實(shí)體。一個對象建立以后,其操作就通過與該對象有關(guān)的屬性、事件和方法來描述。2.對象的屬性每個對象都有其特征,在計算機(jī)程序語言中叫做屬性(Property)。記錄屬性數(shù)據(jù)的地方就叫做屬性欄。屬性欄中記錄的屬性數(shù)據(jù)叫做屬性值。在可視化編程中,每一種對象都有一組特定的屬性。常見的屬性有標(biāo)題(Caption)、名稱(Name)、背景色(BackColor)、字體大?。‵ontSize)、是否可見(Visible)等。通過修改或設(shè)置某些屬性便能有效地控制對象的外觀和操作。
對象屬性的設(shè)置一般有兩條途徑:
(1)如果在程序設(shè)計時設(shè)置對象的屬性,需要使用屬性窗口。
(2)如果要在程序運(yùn)行中更改對象的屬性,可以使用VFP的賦值語句,在代碼中通過編程設(shè)置,格式為:表單名.對象名.屬性名=屬性值3.方法
VFP的方法用于完成某種特定功能。VFP的方法也屬于對象的內(nèi)部函數(shù),如添加對象(AddObject)方法、繪制矩形(Box)方法、釋放表單(Release)方法等。方法被“封裝”在對象之中,不同的對象具有不同的內(nèi)部方法。2.2.2事件與程序1.事件對于對象而言,事件(Event)就是發(fā)生在該對象上的事情。例如,在按鈕上用鼠標(biāo)按一下,在Windows環(huán)境下中稱為“單擊”,于是說按鈕會有一個單擊(Click)事件。2.事件過程當(dāng)對象上發(fā)生了某個事件后,處理這個事件的步驟就是事件過程(EventProcedure)。事件過程是針對事件而來的,而事件過程中的處理步驟在VFP程序設(shè)計中就是所謂的程序代碼。
3.事件驅(qū)動程序設(shè)計寫完程序后開始執(zhí)行時,程序會先等待某個事件的發(fā)生,然后再去執(zhí)行處理此事件的事件過程。事件過程要經(jīng)過事件的觸發(fā)才會被執(zhí)行,這種動作模式就稱為事件驅(qū)動程序設(shè)計(EventDrivenProgrammingModel),也就是說,由事件控制整個程序的執(zhí)行流程。4.事件與方法的程序調(diào)用事件過程由事件的激發(fā)而調(diào)用其代碼,也可以在運(yùn)行中由程序調(diào)用其代碼,而方法的代碼只能在運(yùn)行中由程序調(diào)用。在程序中調(diào)用事件代碼的格式是:表單名.對象名.事件名在程序中調(diào)用對象方法的格式是:[[〈變量名〉]=]〈表單名〉.〈對象名〉.〈方法名〉()2.3VFP的控件與對象
控件(Control)是某種圖形構(gòu)件的統(tǒng)稱,如“標(biāo)簽控件”、“文本框控件”、“列表框控件”等,構(gòu)造應(yīng)用程序界面的具體方法就是利用控件創(chuàng)建對象。(1)VisualFoxPro6.0的常用控件
VisualFoxPro6.0的常用控件有:表示標(biāo)簽(Label)控件,通過它可以創(chuàng)建一個標(biāo)簽對象,用于保存不希望用戶改動的文本,如復(fù)選框上面或圖形下面的標(biāo)題;表示文本框(TextBox)控件,創(chuàng)建用于單行數(shù)據(jù)輸入的文本框?qū)ο?,用戶可以在其中輸入或更改單行文本?.常用控件和內(nèi)部對象(2)內(nèi)部對象
VFP提供了一些內(nèi)部對象,如表單對象、表單集對象、頁對象和工具欄對象等。內(nèi)部對象一般可以直接使用,但某些對象是要在建立某對象之后才能被使用。例如:分隔符(Separator)對象可以直接加入到一個工具欄(ToolBar)對象中當(dāng)間隔。2.表單對象表單(Form)是應(yīng)用程序的用戶界面,也是進(jìn)行程序設(shè)計的基礎(chǔ)。各種圖形、圖象、數(shù)據(jù)等都是通過表單或表單中的對象顯示出來,因此表單是一個容器對象。
(1)表單的結(jié)構(gòu)表單有:圖標(biāo)、標(biāo)題、極小化按鈕、極大化按鈕、關(guān)閉按鈕、移動欄、表單體及其周圍的邊框,其中除了表單體之外的所有特征都可以部分或全部從表單中被刪除。(2)表單的屬性
VFP中表單的屬性就是表單的結(jié)構(gòu)特征。通過修改表單的屬性可以改變表單的內(nèi)在或外在的特征。常用的表單屬性,見表2-4。表2-4VisualFoxPro6.0中常用的表單屬性屬性名作用BackColor用于確定表單的背景顏色BorderStyle用于控制表單是否有邊框:系統(tǒng)(可調(diào))、單線、雙線Caption表單的標(biāo)題Movable用于控制表單是否可移動(3)表單的事件與方法
VisualFoxPro6.0中最常用的表單事件,見表2-5。表2-5VisualFoxPro6.0中常用的表單事件
事件含義說明Load事件當(dāng)表單被裝入內(nèi)存時發(fā)生事件被激發(fā)的順序?yàn)長oad、Init、ActivateActivate事件當(dāng)表單被激活時發(fā)生Destroy事件當(dāng)表單被釋放時發(fā)生事件被激發(fā)的順序?yàn)閁nload、DestroyUnload事件當(dāng)表單被關(guān)閉時發(fā)生VisualFoxPro6.0中常用的表單方法,見表2-6。表2-6VisualFoxPro6.0中常用的表單方法方法含義Hide方法隱藏表單Show方法顯示表單Release方法釋放表單Refresh方法刷新表單3.對象的引用(1)對象的包容層次
VFP中的對象根據(jù)它們所基于的類的性質(zhì)可分為兩類:容器類對象和控件類對象。
1)容器類對象:可以包含其他對象,并且允許訪問這些對象,例如表單集、表單、表格等。當(dāng)一個容器包含一個對象時,稱該對象是容器的子對象,而容器稱為該對象的父對象。所以,容器對象可以作為其他對象的父對象。
2)控件類對象:只能包含在容器對象之中,而不能包含其他對象,例如命令按鈕、復(fù)選框等。3.1項(xiàng)目管理器
項(xiàng)目管理器是按一定的順序和邏輯關(guān)系對應(yīng)用系統(tǒng)的文件進(jìn)行有效組織的工具,它可以用最簡單可視化的方法對數(shù)據(jù)庫和數(shù)據(jù)表進(jìn)行管理。3.1.1項(xiàng)目文件的建立和項(xiàng)目管理器界面1.項(xiàng)目文件的建立(1)單擊“文件”菜單中的“新建”命令,或者單擊常用工具欄上的“新建”按鈕,打開“新建”對話框。
(2)選中“項(xiàng)目”單選項(xiàng),單擊“新建文件”按鈕,此時將打開“創(chuàng)建”對話框。
(3)輸入新項(xiàng)目的名稱,選擇保存新項(xiàng)目的文件夾,單擊“保存”按鈕。
(4)此時進(jìn)入“項(xiàng)目管理器”窗口,這時空的“項(xiàng)目1”項(xiàng)目文件已建成。打開已有項(xiàng)目的步驟為:
(1)單擊常用工具欄上的“打開”按鈕,顯示“打開”對話框。
(2)在“打開”對話框中,顯示當(dāng)前文件夾下的內(nèi)容,選擇“文件類型”為“項(xiàng)目”,輸入或選擇已有項(xiàng)目的名稱。
(3)單擊“確定”按鈕。3.項(xiàng)目管理器界面“項(xiàng)目管理器”為數(shù)據(jù)提供了一個組織良好的分層結(jié)構(gòu)視圖。若要處理項(xiàng)目中某一特定類型的文件或?qū)ο?,可選擇相應(yīng)的選項(xiàng)卡?!叭俊边x項(xiàng)卡:包含了數(shù)據(jù)、文檔、類庫、代碼和其他;“數(shù)據(jù)”選項(xiàng)卡:包含了數(shù)據(jù)庫、自由表和查詢;“文檔”選項(xiàng)卡:包含了表單、報表和標(biāo)簽;其余選項(xiàng)卡(如“類”、“代碼”和“其他”):主要用于創(chuàng)建應(yīng)用程序。3.1.2項(xiàng)目管理器的操作1.查找數(shù)據(jù)文件項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中,包含一個項(xiàng)目中的所有數(shù)據(jù):數(shù)據(jù)庫、自由表、查詢和視圖。
(1)數(shù)據(jù)庫:表的集合,一般通過公共字段彼此關(guān)聯(lián),使用“數(shù)據(jù)庫設(shè)計器”可以創(chuàng)建一個數(shù)據(jù)庫,數(shù)據(jù)庫文件的擴(kuò)展名為.DBC。(2)自由表:存貯在以.DBF為擴(kuò)展名的文件中,它不是數(shù)據(jù)庫的組成部分。
(3)查詢:是檢查存貯在表中的特定信息的一種結(jié)構(gòu)化方法,利用“查詢設(shè)計器”,可以設(shè)置查詢的格式,該查詢將按照輸入的規(guī)則從表中提取記錄,查詢被保存為帶.QPR擴(kuò)展名的文件。2.查找表單和報表文件項(xiàng)目管理器的“文檔”選項(xiàng)卡中,包含了處理數(shù)據(jù)時所用的全部文檔,即輸入和查看數(shù)據(jù)所用的表單,以及打印表和查詢結(jié)果所用的報表及標(biāo)簽。
(1)表單:用于顯示和編輯表的內(nèi)容。
(2)報表:是一種文件,指明如何設(shè)置查詢來從表中提取結(jié)果,以及如何將結(jié)果打印出來。
(3)標(biāo)簽:是打印在專用紙上的帶有特殊格式的報表。3.添加或移去文件
(1)在項(xiàng)目中加入文件在項(xiàng)目管理器中,選擇要添加項(xiàng)的類型,單擊“添加”按鈕,在“打開”對話框中,選擇要添加的文件名,然后選擇“確定”。
(2)從項(xiàng)目中移去文件在項(xiàng)目管理器中,選定要移去的內(nèi)容,單擊“移去”按鈕,在提示框中選擇“移去”。如果要從計算機(jī)中刪除文件,單擊“刪除”按鈕。4.創(chuàng)建和修改文件
(1)創(chuàng)建添加到“項(xiàng)目管理器”中的文件在項(xiàng)目管理器中,選定要創(chuàng)建的文件類型,單擊“新建”按鈕。
(2)修改文件在項(xiàng)目管理器中,選定一個已有的文件,單擊“修改”按鈕。
(3)為文件添加說明在“項(xiàng)目管理器”中選定文件,從“項(xiàng)目”菜單中選擇“編輯說明”,在“說明”對話框中鍵入對文件的說明,單擊“確定”。5.查看表中的數(shù)據(jù)選擇“數(shù)據(jù)”選項(xiàng)卡,選定一個表,單擊“瀏覽”按鈕。
6.在項(xiàng)目間共享文件打開要共享文件的兩個項(xiàng)目,在包含該文件的“項(xiàng)目管理器”中,選擇該文件。拖動該文件到另一個的項(xiàng)目容器中。3.1.3定制“項(xiàng)目管理器”1.改變顯示外觀
(1)移動“項(xiàng)目管理器”指向標(biāo)題欄,將“項(xiàng)目管理器”拖到屏幕上的其他位置。(2)改變“項(xiàng)目管理器”窗口的大小指向“項(xiàng)目管理器”窗口的頂端、底端、兩邊或角上,拖動鼠標(biāo)即可擴(kuò)大或縮小它的尺寸。
(3)折疊“項(xiàng)目管理器”折疊:單擊右上角的上箭頭。還原:單擊右上角的下箭頭,可以將“項(xiàng)目管理器”還原為通常大小。2.拖開選項(xiàng)卡折疊“項(xiàng)目管理器”,選定一個選項(xiàng)卡,將它拖離“項(xiàng)目管理器”。
(1)使選項(xiàng)卡始終顯示在屏幕的最上層單擊選項(xiàng)卡上的圖釘圖標(biāo),使其變?yōu)?,該選項(xiàng)卡就會一直保留在其他VisualFoxPro窗口的上面。再次單擊圖釘圖標(biāo)可以取消選項(xiàng)卡的“頂層顯示”設(shè)置。3.“項(xiàng)目管理器”中的選項(xiàng)卡(2)還原選項(xiàng)卡單擊選項(xiàng)卡上的“關(guān)閉”按鈕?;蛘?,將選項(xiàng)卡拖回到“項(xiàng)目管理器”。
(3)停放“項(xiàng)目管理器”直接將“項(xiàng)目管理器”拖到VisualFoxPro主窗口的頂部。3.2表單設(shè)計器3.2.1打開表單設(shè)計器
打開表單設(shè)計器的方法有4種。
?單擊常用工具欄上的“新建”按鈕,彈出“新建”對話框,選中“表單”單選鈕,單擊“新建文件”。
?在命令窗口中使用CREATEFORM命令。
?在“項(xiàng)目管理器”的“文檔”選項(xiàng)卡中,選中“表單”,再單擊“新建”按鈕。
?在彈出的“新建表單”對話框中,選擇“新建表單”按鈕。3.2.2“表單設(shè)計器”工具欄(1)從快捷菜單中啟動“表單設(shè)計器”工具欄右鍵單擊常用工具欄上的任意位置,從彈出的快捷菜單中選中“表單設(shè)計器”。
(2)從“工具欄”對話框啟動“表單設(shè)計器”工具欄單擊“顯示”菜單中的“工具欄”命令,在“工具欄”對話框中,選中“表單設(shè)計器”,然后單擊“確定”按鈕。(3)“表單設(shè)計器”中的工具按鈕表3-1“表單設(shè)計器”中的工具按鈕圖標(biāo)名稱說明屬性窗口在表單設(shè)計過程中,單擊此按鈕,可以啟動或關(guān)閉屬性窗口,以便在屬性窗口中查看和修改各個控件的屬性代碼窗口在表單設(shè)計過程中,單擊此按鈕,可以啟動或關(guān)閉代碼窗口,以便在代碼窗口中編輯各對象的方法及事件代碼表單控件工具欄在表單設(shè)計過程中,單擊此按鈕,可以啟動或關(guān)閉表單控件工具欄,以便于利用各控件進(jìn)行用戶界面的設(shè)計表單生成器啟動表單生成器,直接以填表的方式進(jìn)行相關(guān)對象的各項(xiàng)設(shè)置,以方便我們快速建立表單3.2.3“表單控件”工具欄單擊“表單設(shè)計器”工具欄上的“表單控件工具欄”按鈕,屏幕出現(xiàn)“表單控件”工具欄,可以把它拖放到適當(dāng)?shù)奈恢谩?.2.4“屬性”窗口
設(shè)計時,一般在“屬性窗口”中修改或設(shè)置屬性。通過單擊“表單設(shè)計器”工具欄中的“屬性窗口”按鈕,可打開“屬性”窗口。1.“對象”下拉列表框
標(biāo)識當(dāng)前選定的對象。單擊右端的向下箭頭,可看到包括當(dāng)前表單(或表單集)及其所包含的全部對象的列表??梢詮牧斜碇羞x擇要更改其屬性的表單或?qū)ο蟆?.選項(xiàng)卡選項(xiàng)卡中,按分類方式顯示所選對象的屬性、事件和方法。
(1)“全部”選項(xiàng)卡:顯示全部屬性、事件和方法。
(2)“數(shù)據(jù)”選項(xiàng)卡:顯示所選對象如何顯示或怎樣操縱數(shù)據(jù)的屬性。
(3)“方法程序”選項(xiàng)卡:顯示方法和事件。
(4)“布局”選項(xiàng)卡:顯示所有的布局屬性。
(5)“其他”選項(xiàng)卡:顯示其他和用戶自定義的屬性。3.屬性設(shè)置框在屬性設(shè)置框中,可以更改屬性列表中選定的屬性值。如果選定的屬性具有預(yù)定義的設(shè)置值,則在右邊出現(xiàn)一個向下箭頭。如果屬性設(shè)置需要指定一個文件名或一種顏色,則在右邊出現(xiàn)按鈕。單擊“接受”按鈕來確認(rèn)對此屬性的更改;單擊“取消”按鈕取消更改,恢復(fù)以前的值。4.屬性列表在屬性列表中,顯示所有可在設(shè)計時更改的屬性和它們的當(dāng)前值。對于具有預(yù)定值的屬性,在“屬性”列表中,雙擊屬性名,可以遍歷所有可選項(xiàng);對于具有兩個預(yù)定值的屬性,在“屬性”列表中,雙擊屬性名,可在兩者間切換。
5.屬性說明顯示屬性類型和對屬性的簡短幫助。3.2.5代碼窗口代碼(Code)窗口是編寫事件過程和方法代碼的地方??捎孟率龇椒ㄖ淮蜷_代碼窗口。
?在表單中用鼠標(biāo)右鍵單擊需要編寫代碼的對象,在彈出的快捷菜單中選擇“代碼”。
?單擊“表單設(shè)計器”工具欄中的“代碼”按鈕。
?雙擊需要編寫代碼的對象。3.3VFP編程步驟VisualFoxPro可視化編程的一般步驟為:
(1)建立應(yīng)用程序的用戶界面,主要是建立表單,并在表單上安排應(yīng)用程序所需的各種對象(由控件創(chuàng)建)。
(2)設(shè)置各對象(表單及控件)的屬性。
(3)編寫方法及事件過程代碼。也可以邊建立對象,邊設(shè)置屬性、編寫方法及事件過程代碼。3.4控件的畫法3.4.1在表單上畫一個控件
在表單上畫一個控件有兩種方法。
?單擊“表單控件”工具欄中的某個圖標(biāo),在表單適當(dāng)位置拖動鼠標(biāo)畫出控件。
?單擊“表單控件”工具欄中的某個圖標(biāo),在表單適當(dāng)位置單擊鼠標(biāo)左鍵,這時所畫控件的大小是固定的。3.4.2控件的縮放和移動
(1)控件的縮放:用鼠標(biāo)拖拉活動控件邊框上的小方塊。調(diào)整控件的寬度:〈Shift〉鍵+左右方向鍵。調(diào)整控件的高度:〈Shift〉鍵+上下方向鍵。
(2)控件的移動:
1)當(dāng)控件為活動控件時,用鍵盤的方向鍵可以使控件向相應(yīng)的方向移動。
2)把鼠標(biāo)指向控件內(nèi)部,拖動控件到表單的任何位置。3.4.3控件的復(fù)制與刪除
對控件進(jìn)行復(fù)制與刪除的常用方法有下面3種:
?將所要操作的控件變?yōu)椤盎顒涌丶保础碈trl〉+〈C〉鍵將該控件拷貝到剪貼板中,按〈Ctrl〉+〈V〉鍵可以在表單中得到該控件的復(fù)制品。對于活動控件,只須按〈Delete〉鍵即可刪除該控件。
?用常用工具欄上的“復(fù)制”和“粘貼”按鈕,以及“剪切”按鈕。
?直接用鼠標(biāo)右擊要操作的控件,打開快捷菜單,在快捷菜單中選取需要的項(xiàng)。3.4.4在表單上畫多個同類控件在“表單控件”工具欄中單擊“按鈕鎖定”按鈕,然后單擊“表單控件”工具欄中的某個所需控件的圖標(biāo),就可以在表單上連續(xù)畫出控件,直到再次單擊該按鈕取消該功能。3.4.5布局工具欄1.多重選定按住〈Shift〉鍵,用鼠標(biāo)單擊所要選擇的控件?;蛘咧苯佑檬髽?biāo)在表單上拉出一個矩形,凡是與此矩形相交的控件均被選定。4.1賦值及幾個常用簡單語句4.1.1賦值語句
在程序中若要使用(引用)變量,必須在使用(引用)之前為變量設(shè)定一個初值。使用賦值語句,可以將指定的值賦給內(nèi)存變量或?qū)ο蟮哪硞€屬性,其一般格式為:
STORE〈表達(dá)式〉TO〈名稱列表〉或
〈名稱〉=〈表達(dá)式〉
說明:
(1)STORE可以給多個變量或?qū)傩再x值,=只能給一個變量或?qū)傩再x值。例如:
STORE2+3TOx,y,zTHISFORM.Caption="學(xué)生成績管理軟件"(2)賦值號的左邊只能是一個變量名,不能是表達(dá)式。例如:不能將z=x+y寫成x+y=z。(3)不要將賦值號“=”與是數(shù)學(xué)中的等號混淆,x=2應(yīng)讀作“將數(shù)值2賦給變量x”或是“使變量x的值等于2”,可以理解為:x
2。下面兩個語句的作用是不同的:
x=yy=x(4)當(dāng)一條語句較長時,可用分號“;”將較長的語句分為兩行或多行。例如:
THISFORM.Label1.Caption="計算機(jī)可以接受數(shù)據(jù)和處理數(shù)據(jù),"+;"并可將處理完的數(shù)據(jù)以完整有效的方式提供給用戶。"
注意,作為續(xù)行符的分號只能出現(xiàn)在行尾。4.1.2程序注釋語句1.行首注釋
行首注釋語句的語法格式為:NOTE[注釋內(nèi)容]
或*[注釋內(nèi)容]2.行尾注釋行尾注釋語句的語法格式為:
&&[〈注釋內(nèi)容〉]4.1.3程序暫停語句WAIT語句用來暫停程序的執(zhí)行并顯示提示信息,按任意鍵或單擊鼠標(biāo)后繼續(xù)執(zhí)行程序。其語法格式為:
WAIT[提示信息][TO〈內(nèi)存變量〉]4.1.4程序結(jié)束語句
在VFP中,要終止表單的運(yùn)行可以使用RELEASE語句或Release方法。它們直接激發(fā)Unload事件從內(nèi)存中釋放表單或表單集。
RELEASE語句的格式為:
RELEASE〈THISFORM〉Release方法的格式為:
〈THISFORM|THISFORMSET〉Release4.2利用標(biāo)簽控件實(shí)現(xiàn)數(shù)據(jù)輸出1.標(biāo)簽的外觀標(biāo)簽(Label)控件顯示的文本信息用戶不能直接修改,Label所顯示的內(nèi)容由標(biāo)題(Caption)屬性控制。在缺省情況下,標(biāo)題(Caption)是Label控件中唯一的可見部分。如果把BorderStyle(邊框樣式)屬性設(shè)置成1,那么Label就有了一個邊框。還可以通過設(shè)置Label的BackColor、ForeColor和FontName等屬性,改變Label的外觀。2.使標(biāo)簽適應(yīng)內(nèi)容對于一個較長的或在運(yùn)行時可能變化的標(biāo)題,Label提供了兩種屬性:AutoSize和WordWrap來改變控件尺寸以適應(yīng)較長或較短的標(biāo)題。為使控件能夠自動調(diào)整以適應(yīng)內(nèi)容多少,必須將AutoSize屬性設(shè)置為.T.。這樣控件可水平并垂直擴(kuò)充以適應(yīng)Caption屬性內(nèi)容。為使Caption屬性的內(nèi)容自動換行,應(yīng)將WordWrap屬性設(shè)置為.T.。4.3使用文本框?qū)崿F(xiàn)數(shù)據(jù)輸入4.3.1使用文本框文本框(TextBox)是用來進(jìn)行文本數(shù)據(jù)輸入的,可以用來向程序輸入各種不同類型的數(shù)據(jù),也可以被用來作數(shù)據(jù)的輸出。文本框中顯示的文本是受Value屬性控制的。Value屬性可以用3種方式設(shè)置:
?設(shè)計時在“屬性”窗口進(jìn)行。
?編程時通過代碼設(shè)置。
?在運(yùn)行時由用戶輸入。
4.3.2焦點(diǎn)與〈Tab〉鍵序1.焦點(diǎn)焦點(diǎn)(Focus)就是光標(biāo),當(dāng)對象具有“焦點(diǎn)”時才能響應(yīng)用戶的輸入??梢杂肧etFocus方法在代碼中設(shè)置焦點(diǎn)。例如,編寫表單的Activate事件代碼,其中調(diào)用SetFocus方法,使得程序開始時光標(biāo)(焦點(diǎn))位于輸入框Text1中:
THIS.Text1.SetFocus
在程序運(yùn)行的時候,用戶可以按下列方法之一改變焦點(diǎn):
(1)用鼠標(biāo)單擊對象。
(2)按〈Tab〉鍵或〈Shift〉+〈Tab〉在當(dāng)前表單的各對象之間巡回移動焦點(diǎn)。
(3)按熱鍵選擇對象。2.〈Tab〉鍵序
(1)TabIndex屬性決定控件接收焦點(diǎn)的順序。當(dāng)在表單上畫出第一個控件時,TabIndex屬性默認(rèn)值為0,第二個控件為1,第三個控件為2,…。當(dāng)用戶在程序運(yùn)行中按〈Tab〉鍵時,焦點(diǎn)將根據(jù)TabIndex屬性值所指定的焦點(diǎn)移動順序移動到下一個控件。
(2)TabStop屬性決定焦點(diǎn)是否能夠停在該控件上。如果控件的TabStop屬性設(shè)置為假(.F.),則在運(yùn)行中按〈Tab〉鍵選擇控件時,將跳過該控件,并按焦點(diǎn)移動順序把焦點(diǎn)移到下一個控件上。4.4形狀與容器控件1.使用形狀形狀(Shape)控件可以在表單中產(chǎn)生圓、橢圓以及圓角或方角的矩形。
2.使用容器控件由于容器(Container)控件的封裝性與外形更具立體感的特點(diǎn),使得通常使用容器控件對程序界面進(jìn)行修飾。所謂“容器”的封裝性是指,象表單一樣,可以在容器(Container)控件上面加上一些其他控件。這些控件隨容器移動而移動,其Top和Left屬性都是相對于容器而言的,與表單無關(guān)。4.5使用對話框MESSAGEBOX函數(shù)在對話框中顯示信息,等待用戶單擊按鈕,并返回一個整數(shù)以標(biāo)明用戶單擊了哪個按鈕。其語法格式為:
[〈變量名〉]=MESSAGEBOX(〈信息內(nèi)容〉[,〈對話框類型〉[,〈對話框標(biāo)題〉]])
說明:
(1)〈信息內(nèi)容〉指定在對話框中出現(xiàn)的文本。
(2)〈對話框類型〉指定對話框中出現(xiàn)的按鈕和圖標(biāo),一般有3個參數(shù),這3種參數(shù)值可以相加以達(dá)到所需要的樣式。
(3)〈對話框標(biāo)題〉指定對話框的標(biāo)題。
(4)MESSAGEBOX()返回的值指明了在對話框中選擇哪一個按鈕。
選擇結(jié)構(gòu)是計算機(jī)科學(xué)用來描述自然界和社會生活中分支現(xiàn)象的重要手段。其特點(diǎn)是:根據(jù)所給定的條件為真(即條件成立)與否,而決定從各實(shí)際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作,并且任何情況下總有:“無論分支多寡,必?fù)衿湟?;縱然分支眾多,僅選其一”的特性。5.1條件表達(dá)式
在條件語句中作為判斷依據(jù)的表達(dá)式稱為“條件表達(dá)式”,條件表達(dá)式的取值為邏輯值:真(.T.、.t.)或假(.F.、.f.)。根據(jù)“條件”的簡單或復(fù)雜程度,條件表達(dá)式可以分為兩類:關(guān)系表達(dá)式與邏輯表達(dá)式。5.1.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式
關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子(例如x>0),關(guān)系運(yùn)算符又稱比較運(yùn)算符,用來對兩個表達(dá)式的值進(jìn)行比較,比較的結(jié)果是一個邏輯值(.T.或.F.),這個結(jié)果就是關(guān)系表達(dá)式的值。
VFP提供的關(guān)系運(yùn)算符有8種,見表5-1。表5-1VFP中的關(guān)系運(yùn)算符運(yùn)算符名稱示例<小于2<3值為:.T.<=小于或等于2+3<=1+2值為:.F.>大于5>2+3值為:.F.>=大于或等于"abc">="abd"值為:.F.=等于4+3=2+5值為:.T.<>、#、!=不等于7<>2+5值為:.F.$包含于"AB"$"ABCD"值為:.T.==等同于
5.1.2邏輯運(yùn)算符與邏輯表達(dá)式
邏輯表達(dá)式是指用邏輯運(yùn)算符連接若干關(guān)系表達(dá)式或邏輯值而成的式子。如不等式:2≤x≤10可以表示為:2<=xANDx<=10。邏輯表達(dá)式的值也是一個邏輯值。
VFP提供的邏輯運(yùn)算符有以下3種,見表5-2。表5-2邏輯運(yùn)算符運(yùn)算符名稱示例NOT非NOT(3<2)值為:.T.,(由真變假或由假變真,進(jìn)行取“反”操作)AND與(2>3)AND(1<2)值為:.F.,(兩個表達(dá)式的值均為真,結(jié)果才為真,否則為假)OR或(2>3)OR(1<2)值為:.T.,(兩個表達(dá)式中只要有一個值為真,結(jié)果就為真,只有兩個表達(dá)式的值均為假,結(jié)果才為假)
邏輯運(yùn)算的運(yùn)算規(guī)則,見表5-3。表5-3邏輯運(yùn)算真值表abNOTaaANDbaORb.T..T..F..T..T..T..F..F..F..T..F..T..T..F..T..F..F..T..F..F.5.1.3運(yùn)算符的優(yōu)先順序表5-4運(yùn)算符的優(yōu)先順序優(yōu)先順序運(yùn)算符類型運(yùn)算符運(yùn)算符類型運(yùn)算符1算術(shù)運(yùn)算符^(指數(shù)運(yùn)算)字符串運(yùn)算符+、–(字符串連接)2-(負(fù)數(shù))3*、/(乘法和除法)4%(求模運(yùn)算)5+、–(加法和減法)6關(guān)系運(yùn)算符=、<>、<、>、<=、>=、$、==7邏輯運(yùn)算符NOT8AND9OR5.2條件選擇語句5.2.1單條件選擇語句IF
單條件選擇語句IF實(shí)現(xiàn)的是最常用的雙分支選擇,其特點(diǎn)是:根據(jù)所給定的選擇條件(條件表達(dá)式)的值為真與否,來執(zhí)行相應(yīng)的分支。1.IF語句的語法格式單條件選擇語句IF的語法格式為:
IF〈條件〉[〈語句列1〉][ELSE[〈語句列2〉]ENDIF
說明:
(1)如果〈條件〉為真(.T.),就執(zhí)行〈語句列1〉。如果〈條件〉為假(.F.),若有ELSE子句,則程序會執(zhí)行ELSE部分的〈語句列2〉;若無ELSE子句,則程序會直接轉(zhuǎn)到ENDIF之后的語句繼續(xù)執(zhí)行。
(2)〈語句列1〉和〈語句列2〉中還可以包含IF語句,稱為IF語句的嵌套。要注意,每次嵌套中的IF語句必須與ENDIF成對出現(xiàn)。2.使用IIF函數(shù)還可以使用IIf函數(shù)來實(shí)現(xiàn)一些比較簡單的選擇結(jié)構(gòu)。IIf函數(shù)的語法結(jié)構(gòu)為:
IIf(〈條件〉,〈真部分〉,〈假部分〉)
語句y=IIf(條件,真部分,假部分)相當(dāng)于:
IF條件
y=真部分
ELSEy=假部分
ENDIF3.IF語句的嵌套
如果在IF語句中操作塊a1塊(語句列1)或a2塊(語句列2)本身又是一個IF語句,則稱為IF語句的嵌套。5.2.2多分支條件選擇語句DOCASE
多分支選擇結(jié)構(gòu)的根本特點(diǎn)是:從多個分支中,選擇第一個條件為真的路線作為執(zhí)行的路線。DOCASE語句的語法格式為:
DOCASECASE〈條件1〉[〈語句列1〉][CASE〈條件2〉[〈語句列2〉]]...[OTHERWISE[〈其他語句列〉]]
ENDCASE
說明:
(1)在執(zhí)行DOCASE語句時,依次判斷各〈條件〉是否滿足。若〈條件1〉的值為真(.T.),就執(zhí)行相應(yīng)的
〈語句列1〉,直到遇到下一個CASE、OTHERWISE或ENDCASE。
(2)相應(yīng)的〈語句列1〉執(zhí)行后不再判斷其他〈條件〉,直接轉(zhuǎn)向ENDCASE后面的語句。因此,在一個DOCASE結(jié)構(gòu)中,最多只能執(zhí)行一個CASE子句。
(3)如果沒有一個條件為真,就執(zhí)行OTHERWISE后面的〈其他語句列〉,直到ENDCASE。如果沒有OTHERWISE,則不作任何操作就轉(zhuǎn)向ENDCASE后面的語句。5.3提供簡單選擇的控件5.3.1命令按鈕組
如果表單上需要使用多個命令按鈕,可以將這些命令按鈕組合為一組,即命令按鈕組(Commandgroup)。1.命令按鈕組命令按鈕組是一個容器對象,其中包含命令按鈕。命令按鈕組的Value屬性指示單擊了那個按鈕。命令按鈕組的ButtonCount屬性用來設(shè)置命令按鈕組中按鈕的個數(shù),ButtonCount屬性的默認(rèn)值為2。2.按鈕組生成器
利用按鈕組生成器可以更方便地設(shè)計命令按鈕組。
(1)用鼠標(biāo)右鍵單擊命令按鈕組控件CommandGroup1,在彈出菜單中選擇“生成器”,打開“命令組生成器”。
(2)在“按鈕”選項(xiàng)卡中,修改“按鈕的數(shù)目”,再修改按鈕的“標(biāo)題”(Caption屬性)。
(3)在“布局”選項(xiàng)卡中指定命令按鈕組的排列方式,如水平或垂直、有無邊框等。
(4)最后單擊“確定”按鈕退出命令組生成器。5.3.2選項(xiàng)按鈕組1.選項(xiàng)組與選項(xiàng)組生成器選項(xiàng)按鈕組是一組相互排斥的選項(xiàng)按鈕(或稱為單選按鈕)。一般來說,選項(xiàng)按鈕總是成組(選項(xiàng)按鈕組)出現(xiàn),用戶在一組選項(xiàng)按鈕中必須選擇一項(xiàng),并且最多只能選擇一項(xiàng)。當(dāng)某一項(xiàng)被選定后,其左邊的圓圈中出現(xiàn)一個黑點(diǎn)。
創(chuàng)建選項(xiàng)按鈕組時,系統(tǒng)僅提供兩個選項(xiàng)按鈕。通過改變按鈕數(shù)(ButtonCount)屬性,可以增加更多的選項(xiàng)按鈕。選項(xiàng)按鈕組是一個容器類控件,設(shè)計時,用鼠標(biāo)右鍵單擊選項(xiàng)按鈕組,從快捷菜單中選擇“編輯”。此時,選項(xiàng)按鈕組的周圍出現(xiàn)淺色邊界,即可對選項(xiàng)按鈕組內(nèi)的選項(xiàng)按鈕進(jìn)行編輯了。設(shè)計選項(xiàng)組最方便的辦法是利用“生成器”。2.選項(xiàng)組的圖形方式可以將選項(xiàng)組設(shè)計成圖形按鈕的形式。5.3.3復(fù)選框
復(fù)選框(CheckBox)的左邊有一個“□”。復(fù)選框列出可供用戶選擇的選項(xiàng),用戶根據(jù)需要選定其中的一項(xiàng)或多項(xiàng)。當(dāng)某一項(xiàng)被選中后,其左邊的小方框中就多了一個對號“√”。復(fù)選框的Caption屬性可以指定出現(xiàn)在復(fù)選框旁邊的文本,而Picture屬性用來指定當(dāng)復(fù)選框被設(shè)計成圖形按鈕時的圖象。
復(fù)選框的狀態(tài)由其Value屬性決定:
0或.F.——假
1或.T.——真
2或.NULL.——暗5.4計時器與微調(diào)器5.4.1使用計時器
計時器(Timer)控件能有規(guī)律地以一定的時間間隔激發(fā)計時器事件(Timer)而執(zhí)行相應(yīng)的事件代碼。計時器控件在設(shè)計時顯示為一個小時鐘圖標(biāo),而在運(yùn)行時并不顯示在屏幕上,通常用標(biāo)簽來顯示時間。計時器控件的主要屬性見表5-8。表5-8Timer控件的主要屬性屬性說明Enanled該屬性為True時,定時器開始工作,為False時暫停Interval該屬性用來設(shè)置定時器觸發(fā)的周期(以毫秒計)取值范圍為0~64767Interval(時間間隔)屬性是一個非常重要的屬性,表示兩個計時器事件之間的時間間隔,其值以毫秒(ms)為單位,介于0~64767ms之間,所以最大的時間間隔約為1.5min。當(dāng)Interval為0時表示屏蔽計時器。如果希望每一秒產(chǎn)生一個計時器事件,那么Interval屬性值應(yīng)設(shè)為1000,這樣,每隔1000ms(即1秒)就激發(fā)計時器事件,從而執(zhí)行相應(yīng)的Interval事件過程。5.4.2使用微調(diào)器
微調(diào)器(Spinner)控件可以在一定范圍內(nèi)控制數(shù)據(jù)的變化。除了能夠用鼠標(biāo)單擊控件右邊向上和向下的箭頭來增加和減少數(shù)字以外,還能象編輯框那樣直接輸入數(shù)值數(shù)據(jù)。
微調(diào)器的主要屬性有:
(1)KeyboardHighValue和KeyboardLowValue屬性:用來控制用戶通過鍵盤輸入的值。
(2)SpinnerHighValue和SpinnerLowValue屬性:用來控制用戶通過鼠標(biāo)單擊箭頭獲得的值。
(3)Interval屬性:用來設(shè)定數(shù)值增加或減少的量。要顛倒箭頭的功能(向上箭頭減少,向下箭頭增加)可以把Interval設(shè)為負(fù)數(shù)。6.1循環(huán)結(jié)構(gòu)語句
在VisualFoxPro中,提供了三種循環(huán)語句:DOWHILE...ENDDO(當(dāng)型循環(huán))、FOR...ENDFOR(步長型循環(huán))、SCAN...ENDSCAN(表掃描型循環(huán))。無論何種類型的循環(huán)結(jié)構(gòu),其特點(diǎn)都是:循環(huán)體執(zhí)行與否及其執(zhí)行次數(shù)多少都必須視其循環(huán)類型與條件而定,且必須確保循環(huán)體的重復(fù)執(zhí)行能在適當(dāng)?shù)臅r候得以終止(即非死循環(huán))。6.1.1當(dāng)型循環(huán)語句DOWHILE1.當(dāng)型循環(huán)的語法格式
如果需要在某一條件滿足時反復(fù)執(zhí)行某一操作,可以使用當(dāng)型循環(huán)(DOWHILE)結(jié)構(gòu)。
當(dāng)型循環(huán)的語法格式為:
DOWHILE〈條件〉[〈命令列〉][EXIT][LOOP]ENDDO
說明:
(1)如果〈條件〉的值為.T.,則執(zhí)行DOWHILE和ENDDO之間的循環(huán)體;如果〈條件〉的值為.F.,則結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行ENDDO之后的命令。每執(zhí)行一遍循環(huán)體,程序自動返回到DOWHILE語句,判斷一次〈條件〉。
(2)EXIT是無條件結(jié)束循環(huán)命令。
(3)LOOP是無條件循環(huán)命令。2.當(dāng)型循環(huán)結(jié)構(gòu)的特點(diǎn)“當(dāng)型”循環(huán)結(jié)構(gòu)的根本特點(diǎn)是:當(dāng)所給定循環(huán)條件為真時,就反復(fù)執(zhí)行其循環(huán)體;當(dāng)該條件為假時,終止執(zhí)行其循環(huán)體,執(zhí)行其后繼命令。循環(huán)體執(zhí)行次數(shù)最少可為零。6.1.2步長型循環(huán)命令FOR1.步長型循環(huán)語句
步長型循環(huán)可以根據(jù)給定的次數(shù)重復(fù)執(zhí)行循環(huán)體。其語法結(jié)構(gòu)為:
FOR〈內(nèi)存變量〉=〈初值〉TO〈終值〉[STEP〈步長值〉][〈命令列〉][EXIT][LOOP]ENDFOR|NEXT
說明:
(1)EXIT跳出FOR...ENDFOR循環(huán)。
(2)LOOP將控制直接轉(zhuǎn)回到FOR子句。
(3)在使用循環(huán)嵌套時要注意:內(nèi)外循環(huán)的循環(huán)變量不能同名,并且內(nèi)外循環(huán)不能交叉。如正確錯誤2.步長型循環(huán)的執(zhí)行過程循環(huán)的執(zhí)行過程是:開始時首先把〈初值〉、〈終值〉和〈步長值〉讀入,然后〈內(nèi)存變量〉的值與〈終值〉比較,如果〈內(nèi)存變量〉的值在〈初值〉與〈終值〉范圍內(nèi),則執(zhí)行FOR與ENDFOR之間的命令,然后〈內(nèi)存變量〉按〈步長值〉增加或減小,重新比較,直到〈內(nèi)存變量〉的值不在〈初值〉與〈終值〉范圍內(nèi),結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行ENDFOR后面的第一條命令。6.2列表框與組合框控件
列表框和組合框?yàn)橛脩籼峁┝税恍┻x項(xiàng)和信息的可滾動列表。在列表框中,任何時候都能看到多個項(xiàng),而在組合框中,平時只能看到一個項(xiàng),用鼠標(biāo)單擊向下按鈕可以看到多項(xiàng)的列表。6.2.1列表框
列表框(ListBox)顯示一個項(xiàng)目列表,用戶可以從中選擇一項(xiàng)或多項(xiàng),但不能直接編輯列表框中的數(shù)據(jù)。當(dāng)列表框不能同時顯示所有項(xiàng)目時,它將自動添加滾動條,使用戶可以上下或左右滾動列表框,以查閱所有選項(xiàng)。1.列表框的常用屬性表6-1常用列表框?qū)傩詫傩哉f明List設(shè)置或返回列表中選項(xiàng),使用List屬性可以得到列表中的任何選項(xiàng)。例如,List1.List(1)表示列表框List1中第2項(xiàng)的值Value列表中當(dāng)前選項(xiàng)的值ListCount列表框中的選項(xiàng)個數(shù)ListIndex當(dāng)前選項(xiàng)的索引號,如果沒有選項(xiàng)被選中,該屬性為0Selected在程序運(yùn)行時,使用代碼來選定列表中的選項(xiàng),例如,THISFORM.List1.Selected(3)=.T.表示選中列表框List1中的第3條選項(xiàng)ColumnCount列表框的列數(shù)2.列表框的常用方法表6-2常用列表框方法方法程序說
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康產(chǎn)業(yè)智能化醫(yī)療設(shè)備研發(fā)方案設(shè)計
- 《化學(xué)元素周期表制作技巧分享》
- 基于物聯(lián)網(wǎng)技術(shù)的農(nóng)產(chǎn)品供應(yīng)鏈管理優(yōu)化方案
- 洞身開挖工程 現(xiàn)場質(zhì)量檢驗(yàn)報告單
- 農(nóng)業(yè)科技園區(qū)綜合開發(fā)項(xiàng)目合同
- 獨(dú)家代理銷售合作協(xié)議
- 數(shù)字信號處理算法及應(yīng)用試題庫
- 季度財務(wù)分析報告展示
- 食物中能量的釋放課件-2024-2025學(xué)年北師大版生物七年級下冊
- 醫(yī)療器械技術(shù)創(chuàng)新合同
- 安全費(fèi)用提取、使用臺賬
- 防沙治沙治理施工方案
- 學(xué)前兒童游戲4
- 七下2.1.2蒸騰作用市公開課一等獎省優(yōu)質(zhì)課賽課一等獎?wù)n件
- 北京市歷年中考語文現(xiàn)代文之記敘文閱讀25篇(2003-2021)
- 小學(xué)六年級畢業(yè)動員會 課件( 26張ppt)
- 森林區(qū)劃 小班區(qū)劃(森林資源經(jīng)營管理)
- 馬克筆建筑快速表現(xiàn)
- 鐵路基礎(chǔ)知識考試題庫500題(單選、多選、判斷)
- 京東物流集團(tuán)介紹PPT
- stm32F103寄存器整理列表
評論
0/150
提交評論