60程序設(shè)計(jì).ppt_第1頁
60程序設(shè)計(jì).ppt_第2頁
60程序設(shè)計(jì).ppt_第3頁
60程序設(shè)計(jì).ppt_第4頁
60程序設(shè)計(jì).ppt_第5頁
已閱讀5頁,還剩148頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),1,學(xué)習(xí)要點(diǎn),1、表單的基本設(shè)計(jì)方法,單表表單和多表表單在設(shè)計(jì)上的不同點(diǎn),表單關(guān)系; 2、向表單中添加控件的方法; 3、常用控件的功能和使用方法; 4、常用控件所具有的事件; 5、方法程序的編寫; 6、使用表單解決數(shù)據(jù)輸入和輸出問題。,第7章 VFP6表單設(shè)計(jì),2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),2,第7章 VFP6表單設(shè)計(jì),7.1 設(shè)計(jì)表單,7.2 向表單中添加對(duì)象,7.3 處理對(duì)象,7.4 管理表單,小 結(jié),返回,退出,7.5 控件使用要點(diǎn)和技巧,2020/10/14,Visual FoxPro

2、 6.0程序設(shè)計(jì),3,7.1 設(shè)計(jì)表單,7.1.1 設(shè)置數(shù)據(jù)環(huán)境,7.1.2 創(chuàng)建單文檔和多文檔界面,7.1.3用表單集擴(kuò)充表單,返回,退出,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),4,7.1 設(shè)計(jì)表單,表單又稱為界面或窗體,是VFP提供的一種功能強(qiáng)大的界面。各種對(duì)話框和窗口都是表單的不同表現(xiàn)形式。它可以使用戶在簡(jiǎn)單明了的界面中查看數(shù)據(jù)或?qū)?shù)據(jù)記錄輸入到表中。在表單設(shè)計(jì)器中可以處理下列內(nèi)容: 表單中不同類型的對(duì)象 與表單相關(guān)聯(lián)的數(shù)據(jù) 頂層表單或子表單 能一起操作的多個(gè)表單 基于自定義模板的表單 表單和表單集是擁有自己的屬性、事件和方法程序的對(duì)象,在表單設(shè)計(jì)器中可以設(shè)置

3、這些屬性、事件和方法程序。表單集包含了一個(gè)或多個(gè)表單,可以將它們作為一個(gè)整體來操作。例如,如果一個(gè)表單集中有四個(gè)表單,可以在運(yùn)行時(shí)用一個(gè)命令來顯示或隱藏它們。 可以通過表單向?qū)А⒈韱卧O(shè)計(jì)器和快速表單來創(chuàng)建表單。可以,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),5,用如下的三種方法之一新建一個(gè)表單: 在“項(xiàng)目管理器”中選定“表單”,并選擇【新建】按鈕。 在【文件】菜單中選擇【新建】命令,再選定“表單”,再選擇【新建文件】按鈕。 使用CREATE FORM命令。 通過項(xiàng)目管理器創(chuàng)建表單示例,1、選擇“文檔”選項(xiàng)卡,2、選擇“表單”,3、單擊【新建】,4、進(jìn)入新建表單程序,彈出

4、“新建表單”對(duì)話框,單擊,“表單設(shè)計(jì)器”窗口,新表單,在新表單(Form1)上可以可視化地添加控件并進(jìn)行屬性、方法程序設(shè)計(jì)。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),6,7.1.1 設(shè)置數(shù)據(jù)環(huán)境,每一個(gè)表單或表單集都包括一個(gè)數(shù)據(jù)環(huán)境(Data Environment)。數(shù)據(jù)環(huán)境是一個(gè)對(duì)象,它包含與表單相互作用的表或視圖,以及表單所要求的表之間的關(guān)系??梢栽凇皵?shù)據(jù)環(huán)境設(shè)計(jì)器”中直觀地設(shè)置數(shù)據(jù)環(huán)境,并與表單一起保存。 在表單運(yùn)行時(shí),數(shù)據(jù)環(huán)境可以自動(dòng)打開、關(guān)閉表或視圖。而且,通過設(shè)置“屬性”窗口中ControlSource(指定與對(duì)象對(duì)立聯(lián)系的數(shù)據(jù)源)屬性設(shè)置框,在這個(gè)屬性

5、框中列出了數(shù)據(jù)環(huán)境中的所有字段,數(shù)據(jù)環(huán)境將幫助設(shè)置控件用的ControlSource屬性。 1、常用數(shù)據(jù)環(huán)境屬性,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),7,單擊打開圖片,2、向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖 向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖時(shí),可以看到屬于表或視圖的字段或索引。若要向數(shù)據(jù)環(huán)境中添加表或視圖,可以按如下步驟來進(jìn)行: (1)打開“數(shù)據(jù)環(huán)境設(shè)計(jì)器”,從“數(shù)據(jù)環(huán)境”菜單中選擇“添加”,1、在表單上右擊,彈出表單的快捷菜單,2、在快捷菜單中單擊“數(shù)據(jù)環(huán)境”菜單項(xiàng),打開“數(shù)據(jù)環(huán)境設(shè)計(jì)器”,3、添加表或視圖的方法與建立查詢時(shí)添加表或視圖相同,4、在此框中選擇Stude

6、nt后單擊【添加】,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),8,在關(guān)閉了“添加表或視圖”對(duì)話框后,若還想向“數(shù)據(jù)環(huán)境”中添加表或視圖,可采用以下方法之一: 在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,打開數(shù)據(jù)環(huán)境的快捷菜單,從中選擇“添加”菜單項(xiàng),將“添加表或視圖”對(duì)話框再次打開,添加方法與上述相同。 在“數(shù)據(jù)不境設(shè)計(jì)器”處于激活狀態(tài)時(shí),系統(tǒng)菜單上會(huì)有【數(shù)據(jù)環(huán)境】菜單,可以單擊【數(shù)據(jù)環(huán)境】|【添加】將“添加表或視圖”對(duì)話框再次打開。 將要添加的表或視圖從打開的項(xiàng)目或“數(shù)據(jù)庫設(shè)計(jì)器”拖放到“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中。 若已將“數(shù)據(jù)環(huán)境設(shè)計(jì)器”關(guān)閉了,要添加表或視圖時(shí),除了用前文所介紹的在表單

7、上右擊打開表單的快捷菜單,用快捷菜單操作以外,也可以在系統(tǒng)菜單上單擊【顯示】|【數(shù)據(jù)環(huán)境】,將“數(shù)據(jù)環(huán)境設(shè)計(jì)器”打開,打開了“數(shù)據(jù)環(huán)境設(shè)計(jì)器”后的添加方法與上相同。 當(dāng)“數(shù)據(jù)環(huán)境設(shè)計(jì)器”處于活動(dòng)狀態(tài)時(shí),“屬性”窗口會(huì)顯示與數(shù),2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),9,單擊打開動(dòng)畫,據(jù)環(huán)境相關(guān)的對(duì)象及屬性。在“屬性”窗口的“對(duì)象”框中,數(shù)據(jù)環(huán)境的每個(gè)表或視圖,表之間的每個(gè)關(guān)系,以及數(shù)據(jù)環(huán)境本身均是各自獨(dú)立的對(duì)象。,要打開“屬性”窗口,可以在表單或“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,在快捷菜單上選擇【屬性】菜單項(xiàng),在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,打開快捷菜單。,單擊【屬性】菜單項(xiàng)打開

8、“屬性”窗口。,選項(xiàng)卡,屬性或方法程序列表,屬性值或方法程序,屬性及方法程序功能說明,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),10,3、從數(shù)據(jù)環(huán)境設(shè)計(jì)器中移去表 當(dāng)將表從數(shù)據(jù)環(huán)境中移去時(shí),與這個(gè)表有關(guān)的所有的關(guān)系也隨之移去。若要將表和視圖從數(shù)據(jù)環(huán)境設(shè)計(jì)器中移去,可以: (1)在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中選擇要移去的表或視圖。 (2)在“數(shù)據(jù)環(huán)境”快捷菜單中選擇【移去】命令。,在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中選擇要移去的表或視圖。,在選定表或視圖上右擊,打開快捷菜單。,單擊【移去】,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),11,4、在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置關(guān)系

9、如果添加進(jìn)數(shù)據(jù)環(huán)境設(shè)計(jì)器的表具有在數(shù)據(jù)庫中設(shè)置的永久關(guān)系,這些關(guān)系將自動(dòng)地加到數(shù)據(jù)環(huán)境中。如果表中沒有永久的關(guān)系,可以在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置這些關(guān)系。,要在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置這些關(guān)系,可以將字段從主表拖到相關(guān)表中的相匹配的索引標(biāo)識(shí)上。也可以將字段從主表拖到相關(guān)表中的字段上。如果和主表中的字段對(duì)應(yīng)的相關(guān)表中沒有索引標(biāo)識(shí),系統(tǒng)將提示是否創(chuàng)建索引標(biāo)識(shí)。,1、先向表單的“數(shù)據(jù)環(huán)境設(shè)計(jì)器”添加兩個(gè)表,如圖,按“學(xué)號(hào)”字段設(shè)置Student表與Grade表的一對(duì)多關(guān)系: 在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中的Student表中選擇“學(xué)號(hào)”字段 并將其拖到Grade表的“學(xué)號(hào)”字段上。,右擊表間的關(guān)系連接線打開快捷菜單

10、,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),12,在快捷菜單中單擊“屬性”,打開屬性窗口:,在屬性選擇列表中選擇OneToMany,單擊“屬性選擇框”彈出屬性值,選擇.T.-真,將兩表設(shè)置為一對(duì)多關(guān)系,父表別名,如果在建立關(guān)系前Grade表沒有按關(guān)聯(lián)字段(學(xué)號(hào))建立索引,則在將“學(xué)號(hào)”從Student表中拖到Grade表時(shí)將彈出對(duì)話框:,單擊【確定】時(shí)系統(tǒng)將先按“學(xué)號(hào)”為Grade表建立索引,然后才建立兩表間的關(guān)系。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),13,5、在數(shù)據(jù)環(huán)境設(shè)計(jì)器中編輯關(guān)系 在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置了一個(gè)關(guān)系后,在表之間將有一

11、條連線指出這個(gè)關(guān)系。 若要編輯關(guān)系的屬性,可在“屬性”窗口中從屬性列表框選擇要編輯的關(guān)系。 關(guān)系的屬性對(duì)應(yīng)于SET RELATION和SET SKIP命令中的子句和關(guān)鍵字。 RelationalExpr(指定基于父表中的字段而又與子表中的索引相關(guān)的表達(dá)式)屬性的默認(rèn)設(shè)置為主表中主關(guān)鍵字字段的名稱。如果相關(guān)表是以表達(dá)式作為索引的,就必須將RelationalExpr屬性設(shè)置為這個(gè)表達(dá)式。例如,如果相關(guān)表以UPPER(cust_id)作為索引,就必須將RelationalExpr屬性設(shè)置為UPPER(cust_id)。 如果關(guān)系不是一對(duì)多關(guān)系,必須將OneTOMany屬性(指定是否只有在子表中遍歷

12、了所有相關(guān)記錄之后才移動(dòng)父表記錄的記錄指針)設(shè)置為“假”(.F.)。這對(duì)應(yīng)于使用SET RELATION命令時(shí)不發(fā)出SET SKIP命令。 將關(guān)系的OneToMany屬性設(shè)置為“真”(.T.),相當(dāng)于發(fā)出SET SKIP命令。當(dāng)瀏覽父表時(shí),在記錄指針瀏覽完子表中所有的相關(guān)記錄之前,記錄指針一直停留在同一父記錄上。 注意:如果在表單或表單集中想設(shè)置一對(duì)多關(guān)系,必須將OneToMany屬性設(shè)置為“真”(.T.),甚至在數(shù)據(jù)庫中已經(jīng)建立了永久一對(duì)多關(guān)系時(shí)也必須如此。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),14,7.1.2 創(chuàng)建單文檔和多文檔界面,VFP允許創(chuàng)建兩種類

13、型的應(yīng)用程序: 多文檔界面(MDI)各個(gè)應(yīng)用程序由單一的主窗口組成,且應(yīng)用程序的窗口包含在主 窗口中或浮動(dòng)在主窗口頂端。VFP基本上是一個(gè)MDI應(yīng)用程序,帶有包含于VFP主窗口中的命令窗口、編輯窗口和設(shè)計(jì)器窗口。 單文檔界面(SDI)應(yīng)用程序由一個(gè)或多個(gè)獨(dú)立窗口組成,這些窗口均在Windows桌面上單獨(dú)顯示。Microsoft Exchange即是一個(gè)SDI應(yīng)用程序的例子,在該軟件中打開的每條消息均顯示在自己獨(dú)立的窗口中。 由單個(gè)窗口組成的應(yīng)用程序通常是一個(gè)SDI應(yīng)用程序,但也有一些應(yīng)用程序綜合了SDI和MDI的特性。例如,VFP將調(diào)試器顯示為一個(gè)SDI應(yīng)用程序,而它本身又包含了自己的MDI窗

14、口。 為了支持這兩種類型的界面,VFP允許創(chuàng)建以下幾種類型的表單: 子表單:包含在另一個(gè)窗口中,用于創(chuàng)建MDI應(yīng)用程序的表,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),15,表單。子表單不可移至父表單(主表單)邊界之外,當(dāng)其最小化時(shí)將顯示在父表單的底部。若父表單最小化,則子表單也一同最小化。 浮動(dòng)表單:屬于父表單(主表單)的一部分,但并不是包含在父表單中。而且,浮動(dòng)表單可以被移至屏幕的任何位置,但不能在父窗口后臺(tái)移動(dòng)。若將浮動(dòng)表單最小化時(shí),它將顯示在桌面的底部。若父表單最小化,則浮動(dòng)表單也一同最小化。浮動(dòng)表單也可用于創(chuàng)建MDI應(yīng)用程序。 頂層表單:沒有父表單的獨(dú)立表單,用

15、于創(chuàng)建一個(gè)SDI應(yīng)用程序,或用作MDI應(yīng)用程序中其他子表單的父表單。頂層表單與其他Windows應(yīng)用程序同級(jí),可出現(xiàn)在其前臺(tái)或后臺(tái),并且顯示在Windows任務(wù)欄中。 1、指定表單類型 創(chuàng)建各種類型表單的方法大體相同,但需設(shè)置特定屬性以指出表單應(yīng)該如何工作。如果創(chuàng)建的是子表單,則不僅需要指定它應(yīng)在另外一個(gè)表單中顯示,而且還需指定是否是MDI類的子表單,,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),16,即指出表單最大化時(shí)是如何工作的。如果子表單是MDI類的,它會(huì)包含在父表單中,并共享父表單的標(biāo)題欄、標(biāo)題、菜單以及工具欄。非MDI類的子表單最大化時(shí)將占據(jù)父表單的全部用戶區(qū)域

16、,但仍保留它本身的標(biāo)題和標(biāo)題欄。,若要建立一個(gè)子表單,可以: 用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。 可將表單的ShowWindow屬性設(shè)置為下列值之一:, 0-在屏幕中:子表單的父表單將為VFP的主窗口。 1-在頂層表單中。當(dāng)子窗口顯示時(shí),子表單的父表單是活動(dòng)的頂層表單。如果希望子窗口出現(xiàn)在頂層表單窗口內(nèi),而不是出現(xiàn)在VFP主窗口內(nèi)時(shí)??蛇x用該項(xiàng)設(shè)置。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),17,如果希望子表單最大化時(shí)與父表單組合成一體,可設(shè)置表單的MDIForm屬性(指定表單是否為MDI窗口)為“真”(.T.);如果希望子表單最大化時(shí)仍保留為一獨(dú)立的窗口,可設(shè)置表單的

17、MDIForm屬性為“假” (.F.)。 浮動(dòng)表單是由子表單變化而來。若要指定為浮動(dòng)表單,可以: 用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。 可將表單的ShowWindow屬性設(shè)置為以下值之一: 0-在屏幕中。浮動(dòng)表單的父表單將出現(xiàn)在VFP主窗口。 1-在頂層表單中。當(dāng)浮動(dòng)窗口顯示時(shí),浮動(dòng)表單的父表單將是活動(dòng)的頂層表 單。 將表單的DeskTop屬性(指定表單是否包含在VFP主窗口中)設(shè)置為“真” (.T.)。 若要指定頂層表單,可以: 用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。 將表單的ShowWindow屬性設(shè)置為“2-作為頂層表單”。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),18,

18、2、顯示位于頂層表單中的子表單 如果所創(chuàng)建的子表單中的ShowWindow屬性設(shè)置為“1-在頂層表單中”,則不需直接指定一頂層表單作為子表單的父表單。而是在子窗口出現(xiàn)時(shí),VFP指派成為該子表單的父表單。 若要顯示位于頂層表單中的子表單,可以: 創(chuàng)建頂層表單。 在頂層表單的事件代碼中包含DO FORM命令,指定要顯示的子表單的名稱。例如,在頂層表單中建立一個(gè)按鈕,然后在按鈕的Click事件代碼中包含如下的命令,如圖所示:,注意:在顯示子表單時(shí),頂層表單必須是可視的、活動(dòng)的。因此,不能使用頂層表單的Init事件來顯示子表單,因?yàn)榇藭r(shí)頂層表單還未激活。 激活頂層表單,如有必要,觸發(fā)用以顯示表單的事件

19、。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),19,3、隱藏VFP主窗口 在運(yùn)行頂層表單時(shí),可能不希望VFP主窗口是可視的。使用應(yīng)用程序?qū)ο蟮腣isible屬性(指定對(duì)象是可見還是隱藏)按要求隱藏或顯示VFP主窗口。 若要隱藏VFP主窗口,可以: 在表單的Init事件中,包含下列代碼行: Appliction.Visible=.F. 在表單的Destroy事件中,包含下列代碼行: Appliction.Visible=.T. 在某些方法程序或事件中,可使用THISFORM.Release命令關(guān)閉表單。 注意:也可以在配置文件中包含以下行,用以隱藏VFP主窗口: SCRE

20、EN=OFF 4、在頂層表單中添加菜單 若要在頂層表單中添加菜單,可以: 創(chuàng)建頂層表單的菜單。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),20,將表單的ShowWindow屬性設(shè)置為“2-作為頂層表單”。 在表單的Init事件中,運(yùn)行菜單程序并傳遞兩個(gè)參數(shù): Do menuname.mpr WITH oForm,LAutoRename 其中,oForm是表單的對(duì)象引用。在表單的Init事件中,THIS作為第一個(gè)參數(shù)進(jìn)行傳遞。 LAutoRename指定了是否為菜單取一個(gè)新的唯一的名字。如果計(jì)劃運(yùn)行表單的多個(gè)實(shí)例,則將.T.傳遞給LAutoRename。 例如,可以

21、使用下列代碼調(diào)用名為mySDImenu的菜單: DO mySDImenu.mpr WITH THIS,.T.,7.1.3用表單集擴(kuò)充表單,可以將多個(gè)表單包含在一個(gè)表單集中,作為一組處理。表單集有以下優(yōu)點(diǎn): 可同時(shí)顯示或隱藏表單集中的全部表單。 可以可視的調(diào)整多個(gè)表單以控制它們的相對(duì)位置。 因?yàn)楸韱渭兴斜韱味际窃趩蝹€(gè).SCX文件中用單獨(dú)的數(shù)據(jù),2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),21,環(huán)境定義的,可自動(dòng)地同步改變多個(gè)表單中的記錄指針。如果在一個(gè)表單的父表中改變記錄指針,另一個(gè)表單中子表的記錄指針則被更新和顯示。 注意:運(yùn)行表單集時(shí),將加載表單集所有表單和表單的所

22、有對(duì)象。加載帶著很多控件的多個(gè)表單會(huì)花幾秒鐘的時(shí)間。 1、創(chuàng)建表單集 表單集是一個(gè)包含有一個(gè)或多個(gè)表單的父層次的容器。可在“表單設(shè)計(jì)器”中創(chuàng)建表單集,若要?jiǎng)?chuàng)建表單集,可從“表單”菜單中,選擇“創(chuàng)建表單集”選項(xiàng)。 如果不需要將多個(gè)表單處理為表單組,則不必創(chuàng)建表單集。創(chuàng)建表單集以后,則可向其中添加表單。 2、添加和刪除表單 創(chuàng)建了表單集以后,可添加新表單或刪除表單。若要向表單集中添加附加的表單,可從“表單”菜單中選擇“添加新表單”。 若要從表單集中刪除表單,可以: 在“表單設(shè)計(jì)器”“屬性”窗口的對(duì)象列表框中,選擇要?jiǎng)h除的,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),22,表單

23、。 從“表單”菜單中選擇“移除表單”。 如果表單集中只有一個(gè)表單,可刪除表單集而只剩下表單。若要?jiǎng)h除表單集,可從“表單”菜單中選擇“移除表單集”。 表單以表的格式存儲(chǔ)在.SCX后綴的文件中。創(chuàng)建表單時(shí),.SCX表包含了一個(gè)表單的記錄,一個(gè)數(shù)據(jù)環(huán)境的記錄,和兩個(gè)內(nèi)部使用記錄。為每個(gè)添加到表單或數(shù)據(jù)環(huán)境中的對(duì)象添加一個(gè)記錄。如果創(chuàng)建了表單集,則為表單集及每個(gè)新表單添加一個(gè)附加的記錄。每個(gè)表單的父容器為表單集,每個(gè)控件的父容器為其所在的表單。 注意:當(dāng)運(yùn)行表單時(shí),若不想在表單集中的所有表單的初始時(shí)就設(shè)置為可視的,可以在表單集運(yùn)行時(shí),將不準(zhǔn)備顯示的表單的Visible屬性設(shè)置為“假”(.F.)。要顯示

24、的表單的Visib1e屬性設(shè)置為“真”(.T.)。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),23,7.2 向表單中添加對(duì)象,7.1.1 設(shè)置數(shù)據(jù)環(huán)境,返回,退出,7.2.2 向表單中添加VFP控件,7.2.3 向表單中添加數(shù)據(jù)綁定型控件,7.2.4 向表單中添加用戶自定義對(duì)象,7.2.5 確定表單中的控件數(shù)目,7.2.6在表單中添加屬性和方法程序,7.2.7 包含預(yù)定義常量,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),24,7.2.1 向表單中添加VFP容器,除表單集和表單外,VFP還提供了四個(gè)基本容器類:命令按鈕組、選項(xiàng)按鈕組、表格和頁框

25、。 若要在表單中添加容器對(duì)象,可從“表單控件”工具欄上選擇所需的容器對(duì)象的按鈕(表格、頁框或按鈕組),并在表單中拖動(dòng),調(diào)整到所需要的大小。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),25,在表單中添加命令按鈕組或選項(xiàng)按鈕組時(shí),按鈕組默認(rèn)包含兩個(gè)按鈕。在表單中添加頁框時(shí),頁框默認(rèn)包含兩個(gè)頁面,將ButtonCount屬性(指定一個(gè)命令按鈕組或選項(xiàng)按鈕組中按鈕的數(shù)目)或PageCount屬性(指定頁框?qū)ο笾兴械捻摂?shù))設(shè)置為需要的數(shù)目,可以包含更多的按鈕或頁面。 向表單中添加表格時(shí),ColumnCount屬性(指定表格、組合框或列表框中列對(duì)象的數(shù)目)的默認(rèn)值為1,表示處于

26、AutoFill狀態(tài)。這樣,在運(yùn)行時(shí)表格將顯示與RecordSource屬性(指定與表格控件建立聯(lián)系的數(shù)據(jù)源)中指定的表具有同樣字段數(shù)量的列。如果不想處于“AutoFill”狀態(tài),可以設(shè)置表格的ColumnCou-nt屬性為指定列的數(shù)目。 VFP中的所有容器對(duì)象都有與它們相關(guān)聯(lián)的記數(shù)屬性和收集屬性。收集屬性是引用其每個(gè)被包含對(duì)象的數(shù)組,記數(shù)屬性是指示其包含的對(duì)象數(shù)的數(shù)值屬性。 每個(gè)容器的收集和記數(shù)屬性根據(jù)包含在容器中的對(duì)象類型來命名,下表列出了容器及其相應(yīng)的收集和記數(shù)屬性。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),26,【例7-1】建立一個(gè)只含一個(gè)表格(列數(shù)由提供數(shù)據(jù)

27、的表的字段數(shù)確定)和一個(gè)命令按鈕的表單,運(yùn)行表單時(shí),表格中顯示的內(nèi)容底色紅綠交替。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),27,第2步、單擊表單控件工具欄上的(表格)按鈕;,第1步、在項(xiàng)目管理器中選擇“表單”,再單擊【新建】,單擊【新建表單】,在系統(tǒng)菜單上單擊【顯示】|【表單控件工具欄】,第2步、單擊表單控件工具欄上的(表格)按鈕;,第3步、在表單上按住鼠標(biāo)左鍵拖出一個(gè)矩形框,釋放鼠標(biāo)。,在表單上單擊右鍵,選擇【數(shù)據(jù)環(huán)境】,選擇Student表后單擊【添加】,第5步、選擇表單上的表格對(duì)象,在“屬性”對(duì)話框中選擇“數(shù)據(jù)”選項(xiàng)卡,,o=THISFORM.Grid1 FO

28、R I=1 TO o.ColumnCount IF I%2=0 o.Columns(i).BackColor=RGB(0,255,0) ELSE o.Columns(i).BackColor=RGB(255,0,0) ENDIF ENDFOR,要實(shí)現(xiàn)此功能,可采取如下步驟: 第1步、選擇【文件】|【新建】菜單,然后選擇“表單”,再選擇【新建文件】或在項(xiàng)目管理器中選擇“表單”,再單擊【新建】,再在對(duì)話框中選擇【新建文件】;,第5步、選擇表單上的表格對(duì)象,在“屬性”對(duì)話框中選擇“數(shù)據(jù)”選項(xiàng)卡,在屬性區(qū)域找到RecordSource屬性,在屬性值輸入文本框中選擇“Student”表。,第3步、在表單

29、上按住鼠標(biāo)左鍵拖出一個(gè)矩形框,釋放鼠標(biāo)。,第4步、在表單上單擊右鍵,選擇【數(shù)據(jù)環(huán)境】,在彈出的“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中單擊右鍵,選擇【添加】,再在彈出的“添加表或視圖”對(duì)話框中選擇“Student”再按【添加】按鈕,再按【關(guān)閉】按鈕,然后關(guān)閉“數(shù)據(jù)環(huán)境設(shè)計(jì)器”。,第6步、選擇表單,再選擇“屬性”上的“方法程序”選項(xiàng)卡,雙擊“Activate Event”屬性,在方法程序編輯框中輸入代碼。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),28,第7步、采用相似的方法建立一個(gè)命令按鈕,將Caption屬性(指定對(duì)象文本標(biāo)題)值設(shè)置為“退出” 。,單擊“命令按鈕”按鈕,在表單上單擊,添

30、加“命令”按鈕,雙擊“退出”按鈕,輸入事件代碼,THISFORM.RELEASE,表單運(yùn)行結(jié)果:,單擊表單上的【退出】按鈕可以將表單關(guān)閉。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),29,7.2.2 向表單中添加VFP控件,控件工具欄能使用戶很方便地在表單中添加任何一種標(biāo)準(zhǔn)的VFP控件,常用的VFP控件如下所示: 復(fù)選框 圖像 OLE綁定型控件 文本框 組合框 標(biāo)簽 OLE容器控件 計(jì)時(shí)器 命令按鈕 線條 形狀 編輯框 列表框 微調(diào) 若要在表單中添加控件,可在“表單控件”工具欄中選擇所需的控件按鈕(單擊),在表單中單擊或拖動(dòng)按鈕,把它調(diào)整到想要的大小。 如在上例中

31、向表單添加了一個(gè)“表格”控件和一個(gè)“命令按鈕”控件。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),30,7.2.3 向表單中添加數(shù)據(jù)綁定型控件,通過給控件的ControlSource屬性設(shè)置字段或給表格的RecordSource屬性設(shè)置表或視圖,可使控件與表、視圖、表的字段、或視圖的字段中的數(shù)據(jù)相聯(lián)系。但也可通過直接將表和視圖從下列位置拖到表單中,以創(chuàng)建數(shù)據(jù)綁定型控件: “項(xiàng)目管理器” “數(shù)據(jù)庫設(shè)計(jì)器” “數(shù)據(jù)環(huán)境設(shè)計(jì)器” “表設(shè)計(jì)器”中“屬性”選項(xiàng)卡的“FieldMapping”設(shè)置或“選項(xiàng)”對(duì)話框的“FieldMapping”選項(xiàng)卡的設(shè)置,是這種方法創(chuàng)建控件類的

32、基礎(chǔ)。 上例中將表格的RecordSource屬性設(shè)置為Student,即是將表格的數(shù)據(jù)源與表Student建立聯(lián)系。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),31,7.2.4 向表單中添加用戶自定義對(duì)象,VFP最強(qiáng)大的功能之一就是能創(chuàng)建在應(yīng)用程序不同部分都可以使用和重復(fù)使用的類。如果創(chuàng)建了類,就能將它們添加到表單中。 若要基于自定義類上添加對(duì)象,可在“項(xiàng)目管理器”中,將類拖動(dòng)到容器中,當(dāng)給工具欄添加類時(shí),也可直接從“表單控件”工具欄中添加。 1、在控件工具欄上添加類庫 類庫必須在注冊(cè)后才能在“表單控件”工具欄中顯示出來。若要注冊(cè)類庫,可以: 從“工具”菜單中選

33、擇“選項(xiàng)”打開“選項(xiàng)”對(duì)話框。 在“選項(xiàng)”對(duì)話框中選擇“控件”選項(xiàng)卡。 選擇“添加”按鈕。 在“打開”對(duì)話框中,選擇一個(gè)要加到“選定”列表中的類庫,并選擇“打開”按鈕。 重復(fù)步驟和。 “選定”列表中列出了類庫中的類,在“表單設(shè)計(jì)器”中可以和,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),32,VFP基類一樣方便地使用這些類。 注意:如果要在每次運(yùn)行VFP時(shí)“表單控件”工具欄中的類庫都有效,可在“選項(xiàng)”對(duì)話框中,選擇“設(shè)置為默認(rèn)值”。 此外,也可以在“表單設(shè)計(jì)器”中直接注冊(cè)類庫。若要在表單設(shè)計(jì)器中注冊(cè)一個(gè)類庫,可以: 在“表單控件”工具欄中選擇“查看類”按鈕。 從子菜單中選擇

34、“添加”。 在“打開”對(duì)話框中選擇要添加到“表單控件”工具欄上的類庫,然后選擇“打開”按鈕。 2、從類庫中添加對(duì)象到表單 如果從“選項(xiàng)”對(duì)話框的“類”選項(xiàng)卡或從“查看類”子菜單添加類庫,就能在“表單設(shè)計(jì)器”中訪問它們。 若要從“表單控件”工具欄添加自定義對(duì)象,可以: 在“表單控件”工具欄中,選擇“查看類”按鈕。 從已注冊(cè)類庫的列表中選擇一個(gè)類庫,它包含了要加到表單中的控件。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),33,單擊所需要的控件,并在表單中拖動(dòng)到合適大小。 注意:如果想從“查看類”工具欄中移去一個(gè)可視類庫,可以在“選項(xiàng)”對(duì)話框的“控件”選項(xiàng)卡中,選擇“選

35、定”列表中列出的一個(gè)可視的類庫,然后選擇“移去”按鈕。 當(dāng)向不是基于VFP基類的表單添加對(duì)象時(shí),類庫的相對(duì)路徑(.vcx文件)存儲(chǔ)在表單的.scx文件中。如果要將表單或類庫移到另一個(gè)位置,在運(yùn)行表單時(shí)VFP顯示一個(gè)對(duì)話框,可以人工尋找類庫。,7.2.5 確定表單中的控件數(shù)目,使用ControlCount屬性可以確定表單中究竟有多少個(gè)控件,而Controlsn屬性允許引用表單上的任何一個(gè)控件。下面的程序用于打印出當(dāng)前活動(dòng)表單上所有控件的Name屬性: ACTIVATE SCREEN VAL(ALLTRIM(THIS.VALUE) 設(shè)置Command1的Click Event代碼: THISFOR

36、MSET.ActiveForm.ActiveControl.FontBold=; !THISFORMSET.ActiveForm.ActiveControl.FontBold THIS.FontBold=THISFORMSET.ActiveForm.ActiveControl.FontBold 說明:賦值時(shí)所賦的值既可以是指定值,也可是變量。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),53,2、在運(yùn)行時(shí)使用表達(dá)式設(shè)置屬性 在運(yùn)行時(shí)也可以使用表達(dá)式或函數(shù)來設(shè)置屬性。若要在運(yùn)行時(shí)將屬性設(shè)置為表達(dá)式,可為屬性指定一個(gè)表達(dá)式,或者為屬性指定一個(gè)用戶自定義函數(shù)的結(jié)果。例如,建立一

37、個(gè)“屬性設(shè)置示例”表單,根據(jù)一個(gè)變量的不同值,可以將一個(gè)按鈕的標(biāo)題設(shè)置為“添加”或“保存”,另一個(gè)按鈕的標(biāo)題設(shè)置為“編輯”或“還原”。,首先在創(chuàng)建表單對(duì)象時(shí)中聲明這個(gè)變量并設(shè)置表單的名稱和“退出按鈕”的名稱:,即在表單的Init Event方法程序中寫入如下代碼(也可在Activate Event事件中): PUBLIC glediting INTO CURSOR CURSOR_BJ &用查詢收集用戶的輸入 *以下程序是由用戶選擇是預(yù)覽報(bào)表還是要打印報(bào)表* MM=MESSAGEBOX(想要預(yù)覽“STUDENT”報(bào)表嗎?,35,打印Student報(bào)表) IF MM=6 REPORT FORM D

38、:XSGLXTREPORTSSTUDENT PREVIEW ELSE IF MM=2 RETURN ENDIF ENDIF MM=MESSAGEBOX(想要打印“STUDENT”報(bào)表嗎?,33,打印Student報(bào)表) IF MM=1 REPORT FORM D:XSGLXTREPORTSSTUDENT TO PRINTER PROMPT *上一行命令中加下劃線的部分是指定要運(yùn)行的報(bào)表文件名,若不在當(dāng)前*目錄下,則要加上路徑。 ELSE RETURN ENDIF,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),141,要注意:建立的Student報(bào)表要將其中數(shù)據(jù)環(huán)境中的表移去

39、,即在報(bào)表的數(shù)據(jù)環(huán)境中不含有任何表。 對(duì)于本例,也可以不用SQL查詢語句而直接使用REPORT命令,即將SELECE命令刪除,在REPORT語句中增加下列可選項(xiàng): FOR 班級(jí)=THISFORM.COMBO1.VALUE 其中:THISFORM.COMBO1.VALUE是對(duì)用戶選擇的引用。即通過REPORT命令的條件子句,對(duì)表中的記錄進(jìn)行篩選,從而達(dá)到按用戶選擇的班級(jí)輸出報(bào)表的目的。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),142,8.4 報(bào)表和標(biāo)簽的輸出,8.4.1 為控件設(shè)置打印選項(xiàng),8.4.2 為組設(shè)置打印選項(xiàng),返回,退出,8.4.3 控制報(bào)表和標(biāo)簽的輸出

40、,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),143,8.4.1 為控件設(shè)置打印選項(xiàng),總的來說,控件的位置和它所處的帶區(qū)的位置決定了它打印時(shí)的位置和時(shí)間。除此之外,還可以為每個(gè)控件設(shè)置特定的打印選項(xiàng)。每個(gè)控件都有一個(gè)默認(rèn)的尺寸,該尺寸或是由它的值(對(duì)于字段或標(biāo)簽來說)決定,或是在創(chuàng)建該控件的時(shí)候確定(對(duì)于線條、矩形或者圖形來說)??丶陧撁嫔系拈L度指定了該控件的顯示寬度。由于有些控件的值根據(jù)記錄的不同而不同,可將控件的高度設(shè)置為可向下伸展,以顯示整個(gè)的值,否則,有些數(shù)據(jù)將在顯示的時(shí)候被截?cái)?。除了?biāo)簽控件之外,所有的控件的大小均可變。 1、打印變長度值的控件 為了使控件盡可

41、能少的占用報(bào)表的地方,可將其設(shè)置為可伸展的。例如,一個(gè)表達(dá)式的值可能依記錄的不同而不同,這時(shí),最好不要在報(bào)表上為這個(gè)控件分配一個(gè)固定的可容最長記錄值的空間,而應(yīng)將控件設(shè)置為可伸展,即可容納所有的數(shù)值。對(duì)于該控件下方的控件,可將其設(shè)置為可向下浮動(dòng)的。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),144,注意:在如下情況下,某些數(shù)據(jù)在打印時(shí)會(huì)被覆蓋: (1)將一個(gè)域設(shè)置為相對(duì)于帶區(qū)底端固定,同時(shí)在這個(gè)域的下面還有一個(gè)域,設(shè)置為相對(duì)于帶區(qū)頂端固定并且選擇了溢出時(shí)伸展選項(xiàng);,設(shè)置為相對(duì)帶區(qū)底端固定,高度就被固定了,向下浮動(dòng)時(shí)沒有空間,(2)將一個(gè)域設(shè)置為相對(duì)于帶區(qū)頂端固定,同時(shí)在

42、這個(gè)域的上面還有一個(gè)域,設(shè)置為相對(duì)于帶區(qū)頂端固定并且選擇了溢出時(shí)伸展選項(xiàng)。,高度被固定,沒有溢出時(shí)伸展的空間,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),145,2、不輸出重復(fù)值 對(duì)于域控件,可以不輸出連續(xù)記錄的重復(fù)值。也就是說,如果某域中的同一個(gè)值在連續(xù)的記錄中重復(fù)出現(xiàn),則只須在第一次出現(xiàn)時(shí)打印該值,在后面的記錄中不打印該值,直至數(shù)值發(fā)生改變。 若要不輸出重復(fù)值,可以先雙擊該控件,在顯示控件的對(duì)話框中選擇“打印條件”以顯示“打印條件”對(duì)話框,在該對(duì)話框中的“打印重復(fù)值”區(qū)域,選擇“否”,然后選擇【確定】。,1、雙擊域 控件如“系部代號(hào)”,2、單擊【打印條件】,6、在“文

43、本”對(duì)話框中單擊【確定】,7、預(yù)覽顯示報(bào)表數(shù)據(jù),3、選擇“否”,5、單擊【確定】,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),146,選擇“在新頁列的第一個(gè)完整信息帶內(nèi)打印”指定換頁(或列)后,遇到第一個(gè)新記錄時(shí),打印重復(fù)值。 選擇“當(dāng)細(xì)節(jié)區(qū)數(shù)據(jù)溢出到新頁列時(shí)打印”指定當(dāng)細(xì)節(jié)帶區(qū)內(nèi)容溢出到新頁(或列)中時(shí),輸出重復(fù)值。 3、建立打印表達(dá)式 可以為控件設(shè)置表達(dá)式,該表達(dá)式在打印之前被計(jì)算出來。如果表達(dá)式的值為“假”,則不打印該字段。添加表達(dá)式之后,在“打印條件”對(duì)話框中除了“若是空白行則刪除”選項(xiàng)外,其他選項(xiàng)全部,2020/10/14,Visual FoxPro 6.0程序

44、設(shè)計(jì),147,無效。若要添加一個(gè)打印表達(dá)式,可以先雙擊該控件,再選擇“打印條件”,然后在“僅當(dāng)下列表達(dá)式為真時(shí)打印”框中,輸入一個(gè)表達(dá)式。或者單擊對(duì)話按鈕,使用“表達(dá)式生成器”建立一個(gè)表達(dá)式,最后選擇【確定】。 4、不打印空行 對(duì)于報(bào)表中的某些域控件,記錄中往往會(huì)沒有數(shù)值。默認(rèn)情況下,VFP將為那些空的域保留區(qū)域。可以將這些空白的區(qū)域清除,使所顯示的信息更為理想、更為連續(xù)。 若要不打印空行,可以先雙擊在報(bào)表中可能會(huì)引起空行的控件,再選擇“打印條件”,然后選擇“若是空白行則刪除”,最后選擇【確定】。 如果一行中所有域的值經(jīng)計(jì)算后都為空,則VFP從報(bào)表中刪除此行。如果不打印該域,或者域中的值為空,

45、VFP將會(huì)檢查該行的其他控件:找不到的話,此行被刪除。如果沒有選擇該選項(xiàng),而且該行中沒有其他的控件,那么會(huì)打印一個(gè)空行。,返回,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),148,8.4.2 為組設(shè)置打印選項(xiàng),在報(bào)表中,可以對(duì)組的打印方式進(jìn)行控制。有時(shí)可能希望同一個(gè)組中的內(nèi)容不要跨頁顯示;有時(shí)可能希望控制是否打印組標(biāo)頭。 1、設(shè)置組的分頁及組標(biāo)頭選項(xiàng) (1)在系統(tǒng)菜單中選擇【報(bào)表】|【數(shù)據(jù)分組】,在“數(shù)據(jù)分組”對(duì)話框中,除了可選擇(或輸入)用于分組的域或表達(dá)式外,還可以對(duì)組的分頁選項(xiàng)進(jìn)行設(shè)置 。如:,Left(學(xué)號(hào),2),對(duì)組(及其標(biāo)頭)的顯示可能有特別的要求。比如,可能

46、希望一個(gè)組不要橫跨兩列(對(duì)于多列的報(bào)表);不要縱跨兩頁;或者每一組的頁碼都從1開始重編。 該對(duì)話框提供了四個(gè)選項(xiàng)來完成這些任務(wù)。,2020/10/14,Visual FoxPro 6.0程序設(shè)計(jì),149,2、防止出現(xiàn)孤立的組標(biāo)頭,設(shè)置合適的值,可以防止出現(xiàn)孤立的組標(biāo)頭,如果標(biāo)頭和底部的相對(duì)位置比所規(guī)定的尺寸(用英寸或厘米表示)要小,VFP會(huì)將標(biāo)頭移到新的一頁中打印。 注意:為了給孤立控件確定一個(gè)比較理想的值,可以將組標(biāo)頭帶區(qū)的高度擴(kuò)大到細(xì)節(jié)帶區(qū)高度的一至三倍。,在組縱跨兩頁時(shí),可能需要在新的一頁中重復(fù)打印組標(biāo)頭,將其顯示在連續(xù)信息的頂部。如果報(bào)表中存在嵌套的多個(gè)數(shù)據(jù)組,那么在連續(xù)頁中,標(biāo)頭應(yīng)是嵌套結(jié)構(gòu)中

溫馨提示

  • 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)論

0/150

提交評(píng)論