VisualFoxPro程序設(shè)計(jì)案例教程 第5章 建立用戶使用界面_第1頁
VisualFoxPro程序設(shè)計(jì)案例教程 第5章 建立用戶使用界面_第2頁
VisualFoxPro程序設(shè)計(jì)案例教程 第5章 建立用戶使用界面_第3頁
VisualFoxPro程序設(shè)計(jì)案例教程 第5章 建立用戶使用界面_第4頁
VisualFoxPro程序設(shè)計(jì)案例教程 第5章 建立用戶使用界面_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章 建立用戶使用界面 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰第一章本章目的簡(jiǎn)單了解有關(guān)面向?qū)ο缶幊痰奶攸c(diǎn)和基礎(chǔ)知識(shí)掌握程序設(shè)計(jì)的基本概念和常用命令掌握窗體的運(yùn)行和關(guān)閉熟悉窗體的常用事件掌握窗體中的控件屬性及代碼編寫本章任務(wù)任務(wù)一:錄入超市管理系統(tǒng)數(shù)據(jù)任務(wù)二:設(shè)計(jì)用戶主界面任務(wù)三:程序設(shè)計(jì)初步任務(wù)四:用戶登錄任務(wù)五:退出窗口任務(wù)六:商品信息瀏覽任務(wù)七:表單的綜合應(yīng)用水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.1 基礎(chǔ)知識(shí) 面向?qū)ο蟮某绦蛟O(shè)計(jì)(oop)(object-oriented programming,oop)立意于創(chuàng)建軟件重用代碼,具備更好地模擬現(xiàn)實(shí)世界環(huán)境的能力,這使它被公認(rèn)為是自上而

2、下編程的優(yōu)勝者。面向?qū)ο蟮木幊陶Z言使復(fù)雜的工作條理清晰,編寫容易,它是一場(chǎng)編程技術(shù)方面的革命。visual foxpro是一種混合型語言,可以使用面向?qū)ο缶幊?,也可以使用傳統(tǒng)的過程化編程。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.1.1 抽象在面向?qū)ο笾械淖饔?1抽象的概念一般來講,抽象是通過從特定的實(shí)例中抽取共同的性質(zhì)以形成一般化的概念的過程。抽象是對(duì)某個(gè)系統(tǒng)的簡(jiǎn)化的描述,即強(qiáng)調(diào)該系統(tǒng)中的某些特征,而忽略一部分細(xì)節(jié)。簡(jiǎn)單地說,抽象是人們?cè)诶斫鈴?fù)雜現(xiàn)象和求解復(fù)雜問題中處理復(fù)雜事物的主要工具。2面向?qū)ο蟪橄蟮膶?shí)現(xiàn)面向?qū)ο蟮脑碛?個(gè),分別是數(shù)據(jù)抽象、行為共享、進(jìn)化和確定性。(1)數(shù)據(jù)抽象:它為程

3、序員提供了一種對(duì)數(shù)據(jù)和為操作這些數(shù)據(jù)所需要的算法的抽象。 數(shù)據(jù)抽象包含兩個(gè)概念:模塊化和信息隱藏。模塊化的優(yōu)點(diǎn)是便于修改或維護(hù),系統(tǒng)發(fā)現(xiàn)問題后,可以確定問題出在哪個(gè)模塊上。在支持信息隱藏的系統(tǒng)中,錯(cuò)誤的影響也通常被限制在一個(gè)模塊內(nèi),增強(qiáng)了系統(tǒng)的可靠性。(2)行為共享:行為是數(shù)據(jù)抽象引進(jìn)的概念,行為是由實(shí)體的外部接口進(jìn)行定義的。行為共享是指許多實(shí)體具有相同的接口,這將增加系統(tǒng)的靈活性。(3)進(jìn)化:進(jìn)化是考慮到實(shí)際中的需求會(huì)很快發(fā)生變化。面向?qū)ο蟮姆椒ㄒС诌M(jìn)化過程就是要適應(yīng)可能發(fā)生的不斷變化。(4)確定性:這里確定性是指用于描述一個(gè)系統(tǒng)確定的行為。一個(gè)確定的系統(tǒng)應(yīng)該確保其中每個(gè)行為項(xiàng)都有一個(gè)確切

4、的解釋,系統(tǒng)不會(huì)因不能響應(yīng)某一行為而失敗。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.1.2 面向?qū)ο蟮幕咎卣?面向?qū)ο蟮南到y(tǒng)包含3個(gè)要素:對(duì)象、類和繼承。1對(duì)象在不同領(lǐng)域中對(duì)對(duì)象有不同的理解。一般認(rèn)為,對(duì)象就是一種事物,一個(gè)實(shí)體。從概念上講,對(duì)象是代表正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體。例如,一個(gè)商品銷售系統(tǒng),像顧客、商品、柜臺(tái)、廠家等都是對(duì)象。從實(shí)現(xiàn)形式上講,對(duì)象是一個(gè)狀態(tài)和操作(方法)的封裝體。狀態(tài)是由對(duì)象的數(shù)據(jù)結(jié)構(gòu)的內(nèi)容和值定義的,方法是一系列的實(shí)現(xiàn)步驟,它是由若干操作構(gòu)成的。2類類是創(chuàng)建對(duì)象的樣板,它包含著所創(chuàng)建對(duì)象的狀態(tài)描述和方法的定義。一個(gè)類的所有對(duì)象都有相同的數(shù)據(jù)結(jié)構(gòu),并且共享相同的

5、實(shí)現(xiàn)操作的代碼,而各個(gè)對(duì)象有著各自不同的狀態(tài)。類是所有對(duì)象的共同行為和不同狀態(tài)的集合體。3繼承繼承提供了創(chuàng)建新類的一種方法,這種方法就是一個(gè)新類可以通過對(duì)已有的類進(jìn)行修改或擴(kuò)充來滿足新類的需求。新類共享已有類的行為,而自己還具有修改或額外添加的行為。從一個(gè)類繼承定義的新類,將繼承已有類的所有方法和屬性,并且可以添加所需要的新的方法和屬性。新類被稱為已有類的子類,而已有類稱為父類,又叫基類。新類又叫派生類。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.2 任務(wù)一 錄入超市管理系統(tǒng)數(shù)據(jù) 5.2.1 相關(guān)知識(shí)數(shù)據(jù)庫的對(duì)話框在visual foxpro中稱為“窗體”,一般還稱為表單。窗體也是visual

6、foxpro 中的一種對(duì)象,它使用計(jì)算機(jī)屏幕將數(shù)據(jù)庫中的表或查詢中的數(shù)據(jù)顯示出來。由于數(shù)據(jù)庫軟件是給用戶使用的,所以要為使用的用戶提供一個(gè)友好的使用界面。這是建立一個(gè)窗體的基本目標(biāo)。 一個(gè)設(shè)計(jì)優(yōu)秀的窗體是非常必要的。不管數(shù)據(jù)庫中表或查詢?cè)O(shè)計(jì)得有多好,如果窗體設(shè)計(jì)得十分雜亂,而且沒有任何提示,就會(huì)令使用者感覺到迷惑,甚至增加失誤的概率。這樣的窗體就不利于數(shù)據(jù)庫軟件的應(yīng)用和推廣。本任務(wù)將介紹如何使用visual foxpro編寫一個(gè)簡(jiǎn)單的程序。在此之前先介紹visual foxpro的各個(gè)部分的功能,包括工具箱、項(xiàng)目管理器、“屬性”窗體設(shè)計(jì)器等,下面分別介紹這幾部分的功能。水利水電出版社沈陽市計(jì)算

7、機(jī)學(xué)校 王煥杰1工具箱 當(dāng)建立一個(gè)新的表單時(shí),或者打開表單設(shè)計(jì)器時(shí),一般會(huì)默認(rèn)顯示工具箱,上面提供了visual foxpro 表單中常用的各個(gè)控件。選中控件,然后在窗體設(shè)計(jì)器中拖動(dòng)鼠標(biāo),即可在其中繪制控件。初始狀態(tài)的工具箱只有一個(gè)“常用”選項(xiàng)卡,在工具箱上右擊,在彈出的快捷菜單中選擇“添加選項(xiàng)卡”命令,可以為工具箱添加選項(xiàng)卡;右擊,選擇相關(guān)選項(xiàng),可以打開其他選項(xiàng)卡。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰常用表單控件名稱 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2項(xiàng)目管理器 項(xiàng)目是visual foxpro的組織應(yīng)用程序的方式,一般而言,一個(gè)工程包含開發(fā)一個(gè)應(yīng)用程序所需要的所有文件,包括窗體文

8、件、程序文件、數(shù)據(jù)庫文件、表文件、報(bào)表文件、菜單文件、索引文件等。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.2.2 任務(wù)實(shí)現(xiàn) 本小節(jié)主要技能點(diǎn)如下: (1)創(chuàng)建最基本表單。(2)用表單向?qū)?chuàng)建表單。(3)一對(duì)多表單向?qū)?水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰1創(chuàng)建最基本的表單 在的“項(xiàng)目管理器”中,選擇“文檔”選項(xiàng)卡,選擇下面列表框中的“表單”選項(xiàng),在右側(cè)操作區(qū)單擊“新建”按鈕。在“新建表單”對(duì)話框中單擊“新建表單”按鈕。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰選擇“文件”菜單中的“保存”命令,選擇相關(guān)的文件夾并輸入正確的表單名即完成第一個(gè)表單的制作,如圖所示。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)

9、校 王煥杰選擇要保存表單的位置 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰也可以重新命名該表單,然后單擊“保存”按鈕,該表單就會(huì)出現(xiàn)在當(dāng)前項(xiàng)目中,如圖所示。關(guān)閉設(shè)計(jì)器,選擇第一個(gè)表單,在右側(cè)的功能區(qū)單擊“運(yùn)行”按鈕。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰表單運(yùn)行結(jié)果如圖5-9所示。 單擊form1右上角的關(guān)閉按鈕,可以關(guān)閉form1。再次選擇第一個(gè)表單,單擊“修改”按鈕,可以對(duì)form1(第一個(gè)表單)進(jìn)行修改。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰選擇菜單中的“顯示”“表單控件工具欄”命令,可以控制表單控件工具欄的顯示。 單擊工具欄中的按鈕,并在第一個(gè)表單(form1)上再次單擊,則會(huì)在for

10、m1中創(chuàng)建一個(gè)新的按鈕。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰雙擊command1按鈕,會(huì)出現(xiàn)該按鈕的代碼編輯器 在command1的click事件中輸入thisform.release,即運(yùn)行表單后,單擊此按鈕就會(huì)退出表單。關(guān)閉表單設(shè)計(jì)器,運(yùn)行表單,測(cè)試按鈕command1的效果。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2用表單向?qū)?chuàng)建簡(jiǎn)單表單 (1)在“項(xiàng)目”菜單中,選擇“新建”“表單向?qū)А泵?,出現(xiàn)如圖所示的界面。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(2)選擇“表單向?qū)А边x項(xiàng),單擊“確定”按鈕。(3)選擇一個(gè)數(shù)據(jù)表,然后為該表建立一個(gè)表單,這里選擇的是“用戶”表,單擊按鈕可以把“用

11、戶”表的所有字段全部選中,單擊按鈕可以選取單個(gè)字段。單擊“下一步”按鈕。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(4)如圖5-15所示,在該對(duì)話框中選擇一個(gè)自己喜歡的樣式,使表單更加美觀,單擊“下一步”按鈕繼續(xù)。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(5)該對(duì)話框主要是對(duì)“用戶”表的數(shù)據(jù)進(jìn)行排序的設(shè)置,這里選擇“用戶編號(hào)”作為索引,單擊“添加”按鈕,再單擊“下一步”按鈕 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(6)根據(jù)該對(duì)話框的提示,可以單擊“預(yù)覽”,觀看一下效果,也可以直接單擊“完成”按鈕,完成表單的制作 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(7)單擊“預(yù)覽”按鈕,效果如圖5-18所示,返

12、回向?qū)?,單擊“完成”按鈕,將表單命名為“用戶”,選擇一個(gè)存放表單的位置,如d:supermarket 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰3一對(duì)多表單向?qū)?選擇“項(xiàng)目”菜單中的“新建”命令,選擇“一對(duì)多表單向?qū)А?單擊“確定”按鈕,效果如圖5-20所示。選擇“供貨商”表,然后將字段導(dǎo)入到“選定字段”列表框中。單擊“下一步”按鈕圖5 19 選擇“一對(duì)多表單向?qū)А边x項(xiàng) 圖5 20 父表選擇水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰從子表中選擇字段(這里選擇“商品信息”表,導(dǎo)出所有字段,單擊“下一步”按鈕。 )水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰如圖5-22所示,是建立兩個(gè)表單的關(guān)系,以便聯(lián)動(dòng)顯示。

13、單擊“下一步”按鈕。 圖5 22 建立表間關(guān)系水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰如圖5-23所示,在“樣式”列表框中選擇自己喜歡的樣式,這里選擇“陰影式”,單擊“下一步”按鈕。 圖5 23 選擇表單樣式水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰圖5-24是選擇排序次序的字段,這里選擇“供貨商編號(hào)”,單擊“下一步”按鈕 圖5 24 數(shù)據(jù)排序方式水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰單擊“完成”按鈕,保存為“供貨渠道” 圖5 25 完成及相關(guān)選項(xiàng)水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰單擊“完成”按鈕,保存為“供貨渠道”,運(yùn)行表單 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰課后練習(xí)1利用向?qū)е谱饕粋€(gè)“入

14、庫記錄”的表單,并用表單設(shè)計(jì)器修改和美化產(chǎn)生的表單,利用此表單瀏覽庫存商品信息,并通過此表單輸入相關(guān)的記錄。 入庫記錄 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰課后練習(xí)2利用向?qū)Х謩e制作以下幾個(gè)數(shù)據(jù)表的表單,如“供貨商”表、“會(huì)員”表、“交易”表、“商品信息”表、“生產(chǎn)商”表、“銷售”表、“用戶”表,并通過表單為相關(guān)的數(shù)據(jù)表添加數(shù)據(jù)和修改數(shù)據(jù)。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.3 任務(wù)二 設(shè)計(jì)用戶主界面 設(shè)計(jì)用戶主界面,并為主界面各項(xiàng)按鈕指定代碼,用以訪問相關(guān)表單。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.3.1 相關(guān)知識(shí)點(diǎn) 1容器和控件 2標(biāo)簽控件 3“屬性”窗口 4和字體有關(guān)的屬性

15、5命令按鈕控件 6和鼠標(biāo)操作相關(guān)的常用事件 7設(shè)置訪問鍵 8設(shè)置控件的tab鍵次序 9設(shè)置工具提示文本 10.啟用和廢止控件 11.定義表單行為 12指定表單的圖標(biāo) 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰1容器和控件 visual foxpro 6.0的基類共分成兩個(gè)大類:容器類和非容器類。一般稱容器類基類為容器,而把非容器類基類稱為控件,有時(shí)也把所有基類都稱為控件。 (1)容器類。容器類可以包含其他對(duì)象,并且允許訪問這些對(duì)象。 (2)控件類??丶惖姆庋b比容器類更為嚴(yán)密,但也因此喪失了一些靈活性。 (3)容器中各對(duì)象的調(diào)用。在進(jìn)行容器類“子類”或“對(duì)象”的設(shè)計(jì)時(shí),往往要調(diào)用容器中某一特定對(duì)象

16、,這就要掌握oop方法中對(duì)象的標(biāo)識(shí)方法。 例如,在圖例如,在圖5-12所示的代碼編輯器中輸入。所示的代碼編輯器中輸入。mand1.caption=點(diǎn)擊事件點(diǎn)擊事件,并刪除,并刪除thisform.release。運(yùn)行表單,單擊按鈕,可以看到最后的。運(yùn)行表單,單擊按鈕,可以看到最后的效果。其中效果。其中thisform是是command1的父容器,的父容器,command1是其中的一個(gè)控件,是其中的一個(gè)控件,caption是是command1的屬性。文字的屬性。文字“點(diǎn)擊事件點(diǎn)擊事件”是這個(gè)屬性的值。是這個(gè)屬性的值。注:注:thisform在在visual foxpro中用來代表當(dāng)前的表單。中用

17、來代表當(dāng)前的表單。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2標(biāo)簽控件 在設(shè)計(jì)表單界面時(shí),幾乎都要有一些提示某個(gè)控件的作用的文字,比如在注冊(cè)時(shí),就有用戶名、密碼等文字在某些表單控件之前進(jìn)行顯示,提示用戶某控件可以做什么,如果不知道,用戶就會(huì)不了解這個(gè)界面,注冊(cè)也就無從下手,這就是標(biāo)簽的作用。 標(biāo)簽標(biāo)簽水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰3“屬性”窗口“屬性”窗口用于修改窗體和控件的屬性,如圖5-30所示,其中上方的下拉列表框中列出當(dāng)前的窗體及其控件的名稱,可以通過下拉列表來選擇窗體或某一個(gè)控件。在窗體設(shè)計(jì)器中選擇某一個(gè)對(duì)象之后,“屬性”窗口也會(huì)顯示該對(duì)象的屬性。 圖5-30 表單“屬性”窗口在

18、屬性列表中,caption屬性最為常用,用于顯示文本。而為了編程方便些,還要修改name屬性,即在代碼中引用對(duì)象時(shí)所用的名稱。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰在設(shè)計(jì)表單時(shí),為了讓界面更友好、更美觀,通常都要對(duì)界面進(jìn)行一定的美化,其中很重要的一項(xiàng)就是對(duì)字體屬性的設(shè)置,常用的控件如標(biāo)簽和按鈕等都會(huì)有字體屬性,可以在“屬性”窗口中進(jìn)行設(shè)置,圖5-31所示為與字體有關(guān)的屬性。 4和字體有關(guān)的屬性 圖5-31 和字體有關(guān)的屬性fontbold、fontitalic、fontstrikethru、fontunderline屬性:指定文本是否具有粗體、斜體、刪除線或下劃線等效果。 fontexten

19、d的作用是指定文本是否可擴(kuò)展。 fontname屬性:指定顯示文本的字體名,默認(rèn)值為 arial fontsize屬性:默認(rèn)的設(shè)置是 9 磅 fontoutline屬性:作用是指定與控件相關(guān)聯(lián)的文字是否顯示為空心字 fontshadow屬性:作用是指定與控件相關(guān)聯(lián)的文字是否帶有陰影 fontsize屬性:指定對(duì)象文本的字體大小,以磅為單位,默認(rèn)值為10磅 forecolor屬性:指定用于顯示對(duì)象中文本前景色 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5命令按鈕控件 命令按鈕通常用來啟動(dòng)一個(gè)事件,如關(guān)閉一個(gè)表單、移動(dòng)到不同記錄、打印報(bào)表等動(dòng)作。 可使用caption屬性指定在命令按鈕上顯示的文本。

20、命令按鈕常用的事件是click事件,當(dāng)編輯代碼時(shí),可以選擇執(zhí)行的事件,如圖5-33所示。 圖5-33 命令按鈕事件選擇水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(1)click:當(dāng)在程序中包含觸發(fā)此事件的代碼,或者將鼠標(biāo)指針放在:當(dāng)在程序中包含觸發(fā)此事件的代碼,或者將鼠標(biāo)指針放在一個(gè)控件上按下并釋放鼠標(biāo)左鍵,或者更改特定控件的值,或在表一個(gè)控件上按下并釋放鼠標(biāo)左鍵,或者更改特定控件的值,或在表單空白區(qū)單擊時(shí),此事件發(fā)生。單空白區(qū)單擊時(shí),此事件發(fā)生。click 事件發(fā)生在用戶: 單擊復(fù)選框、命令按鈕、列表框或選項(xiàng)按鈕控件時(shí)。 使用箭頭鍵或按鼠標(biāo)鍵在下拉列表框或列表框中選擇一項(xiàng)時(shí)。 在命令按鈕、選項(xiàng)按

21、鈕或復(fù)選框有焦點(diǎn)時(shí)按spacebar鍵時(shí)。 表單中有 default 屬性設(shè)置為“真”(.t.) 的命令按鈕并且按回車鍵時(shí)。 按一個(gè)控件的訪問鍵。例如,若一個(gè)命令按鈕的標(biāo)題為“go”,則按alt+g組合鍵可觸發(fā)click事件。 單擊表單空白區(qū)。當(dāng)指針位于標(biāo)題欄、控制菜單框或窗口邊界上時(shí),不發(fā)生表單的 click 事件。 單擊微調(diào)控件的文本輸入?yún)^(qū)。 單擊廢止的控件時(shí),廢止控件所在的表單發(fā)生click事件。 6和鼠標(biāo)操作相關(guān)的常用事件 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(2)dblclick:當(dāng)連續(xù)兩次快速按下鼠標(biāo)左鍵(主鍵)并釋放時(shí),此事件發(fā)生。當(dāng)從列表框或組合框中選擇一個(gè)選項(xiàng)并按回車鍵時(shí),

22、也發(fā)生 dblclick 事件。如果在系統(tǒng)指定的雙擊時(shí)間間隔內(nèi)不發(fā)生 dblclick 事件,對(duì)象認(rèn)為這種操作是一個(gè) click 事件。因此,當(dāng)向這些相關(guān)事件中添加過程時(shí),必須確認(rèn)這些事件不沖突。另外,不響應(yīng) dblclick 事件的控件可能會(huì)將一個(gè)雙擊事件確認(rèn)為兩個(gè)單擊事件。 6和鼠標(biāo)操作相關(guān)的常用事件 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰7設(shè)置訪問鍵 代表訪問鍵的字符在菜單上或?qū)υ捒蛑屑佑邢聞澗€或突出顯示。同時(shí)按下 alt 鍵和訪問鍵可以激活菜單或?qū)υ捒?。有時(shí)用來指代熱鍵。 設(shè)置訪問鍵的方式是在設(shè)置caption屬性時(shí),在訪問鍵的相關(guān)字母前加/close則顯示的結(jié)果為close,設(shè)置的訪

23、問鍵為alt+c。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰8設(shè)置控件的tab鍵次序 按鍵盤上的tab鍵時(shí),焦點(diǎn)從一個(gè)字段或?qū)ο笠葡蛄硪粋€(gè)字段或?qū)ο蟮拇涡?。?duì)表單中的控件來說,按照控件添加的次序指定tab鍵次序,每個(gè)新建控件都位于tab鍵次序的末尾。一個(gè)良好的tab鍵次序,對(duì)于用戶的使用以及提高用戶的工作效率是至關(guān)重要的??梢酝ㄟ^“屬性”窗口來調(diào)整個(gè)別控件的tab鍵值也可以通過菜單“顯示”“tab鍵次序”命令來依次指定。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰9設(shè)置工具提示文本 tooltiptext:指定控件工具的提示文本。當(dāng)在運(yùn)行狀態(tài)時(shí),鼠標(biāo)懸停在相關(guān)控件上方,系統(tǒng)會(huì)給出相關(guān)的提示。 水利水電

24、出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰10啟用和廢止控件 在某給定情況下,如果禁止使用某個(gè)控件,可以將該控件的enabled屬性設(shè)置為“假”(.f.)。將每個(gè)按鈕的enabled屬性設(shè)置為“真”(.t.)或“假”(.f.),可以啟用或廢止組中單個(gè)選項(xiàng)按鈕或命令按鈕;也可通過設(shè)置組的enabled屬性來啟用或廢止組中的全部按鈕。如下面一行代碼所示:tmand1.enabled = .f.當(dāng)控件的enabled屬性設(shè)置為“假”(.f.)時(shí),控件的所有事件都將廢止,但會(huì)顯示出禁用的前景色和背景色。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰11.定義表單屬性 表5-3 表單行為屬性(一)屬性說明默認(rèn)值alway

25、sontop控制表單是否總是處在其他打開窗口之上“假”(.f.)autocenter控制表單初始化時(shí)是否讓表單自動(dòng)在visual foxpro主窗口中居中“假”(.f.)backcolor決定表單窗口的顏色255、255、255borderstyle決定表單是否沒有邊框,還是具有單線邊框、雙線邊框或系統(tǒng)邊框。如果borderstyle為3可調(diào)邊框,用戶能重新改變表單大小3caption決定表單標(biāo)題欄顯示的文本form1closable控制用戶是否能通過雙擊“關(guān)閉”框來關(guān)閉表單“真”(.t.)datasession控制表單或表單集里的表是否能在可全局訪問的工作區(qū)中打開,或僅能在表單或表單集所屬的

26、私有工作區(qū)內(nèi)打開1maxbutton控制表單是否具有最大化按鈕真(.t.)水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰11.定義表單屬性 表5-3 表單行為屬性(二)屬性說明默認(rèn)值minbutton控制表單是否具有最小化按鈕真(.t.)movable控制表單是否能移動(dòng)到屏幕的新位置真(.t.)scalemode控制對(duì)象的尺寸和位置屬性的度量單位是pixels還是像素。由“選項(xiàng)”對(duì)話框中的設(shè)置決定由“選項(xiàng)”對(duì)話框中的設(shè)置決定scrollbars控制表單所具有的滾動(dòng)條類型0 - 無titlebar控制標(biāo)題欄是否顯示在表單的頂部1 - 打開showwindow控制表單是否在屏幕中、懸浮在頂層表單中或作為頂

27、層表單出現(xiàn)0 - 在屏幕中windowstate控制表單是最小化、最大化還是正常狀態(tài)0 - 普通windowtype控制表單是非模式表單(默認(rèn))還是模式表單。如果表單是模式表單,用戶在訪問應(yīng)用程序用戶界面中任何其他單元前必須關(guān)閉這個(gè)表單0 - 無模式水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰12指定表單的圖標(biāo) 在visual foxpro for windows 中,可指定表單的圖標(biāo);當(dāng)該表單在 windows nt 窗口中最小化或位于 windows 95 的標(biāo)題欄上時(shí)顯示為這個(gè)圖標(biāo)。如果要指定表單的圖標(biāo),將表單的 icon 屬性設(shè)置為一個(gè) .ico 文件的文件名。若要指定表單的圖標(biāo),打開表單,

28、再打開“屬性”窗口,將 icon 屬性設(shè)置為希望顯示的 .ico 文件。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.3.2 任務(wù)實(shí)現(xiàn) (1)效果如圖5-34所示,添加按鈕和圖片,設(shè)置按鈕的名稱。各按鈕的click事件的代碼分別如下:“采購(gòu)商品”按鈕click事件:do form 商品信息“生產(chǎn)商”按鈕click事件:do form生產(chǎn)商“供貨商”按鈕click事件:do form 供貨商 “會(huì)員注冊(cè)”按鈕click事件:do form 會(huì)員注冊(cè)“用戶注冊(cè)”按鈕click事件:do form 用戶注冊(cè)“采購(gòu)商信息”按鈕click事件:report form 采購(gòu)商信息報(bào)表 preview“生產(chǎn)商

29、信息”按鈕click事件:report form 生產(chǎn)商信息報(bào)表 preview水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.4 任務(wù)三 利用程序?yàn)g覽數(shù)據(jù) 5.4.1 相關(guān)知識(shí) 1程序設(shè)計(jì)的基本概念程序設(shè)計(jì)(程序設(shè)計(jì)(programming)是指設(shè)計(jì)、編制、調(diào)試程序的方法和過程(程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法)。它是目標(biāo)明確的智力活動(dòng)。由于程序是軟件的本體,軟件的質(zhì)量主要通過程序的質(zhì)量來體現(xiàn),在軟件研究中,程序設(shè)計(jì)的工作非常重要,內(nèi)容涉及有關(guān)的基本概念、工具、方法及方法學(xué)等。 按照結(jié)構(gòu)性質(zhì),有結(jié)構(gòu)化程序設(shè)計(jì)與非結(jié)構(gòu)化程序設(shè)計(jì)之分。前者是指具有結(jié)構(gòu)性的程序設(shè)計(jì)方法與過程。它具有由基本結(jié)構(gòu)構(gòu)成復(fù)雜結(jié)構(gòu)的層次

30、性;后者反之。按照用戶的要求,有過程式程序設(shè)計(jì)與非過程式程序設(shè)計(jì)之分。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2程序設(shè)計(jì)的過程軟件設(shè)計(jì)思路和方法的一般過程,包括設(shè)計(jì)軟件的功能和實(shí)現(xiàn)的算法及方法、軟件軟件設(shè)計(jì)思路和方法的一般過程,包括設(shè)計(jì)軟件的功能和實(shí)現(xiàn)的算法及方法、軟件的總體結(jié)構(gòu)設(shè)計(jì)和模塊設(shè)計(jì)、編程和調(diào)試、程序聯(lián)調(diào)和測(cè)試以及編寫、提交程序。的總體結(jié)構(gòu)設(shè)計(jì)和模塊設(shè)計(jì)、編程和調(diào)試、程序聯(lián)調(diào)和測(cè)試以及編寫、提交程序。 (1)系統(tǒng)分析員通過和用戶的溝通初步了解需求,列出系統(tǒng)的主要功能模塊,每個(gè)主要功能模塊可能會(huì)有哪些小功能模塊,對(duì)于有些需求比較明確相關(guān)的界面時(shí),在這一步里可以初步定義好少量的界面。 (

31、2)系統(tǒng)分析員深入地了解和分析需求,根據(jù)自己的經(jīng)驗(yàn)和需求做出一份系統(tǒng)的功能需求文檔。文檔會(huì)清楚列出系統(tǒng)大致的主要功能模塊,主要功能模塊有哪些小功能模塊,并且會(huì)列出相關(guān)的界面和界面功能。 (3)系統(tǒng)分析員和用戶再次確認(rèn)需求。 (4)系統(tǒng)分析員根據(jù)確認(rèn)的需求文檔所列出的界面和功能需求,用迭代的方式對(duì)每個(gè)界面或功能做系統(tǒng)的概要設(shè)計(jì)。 (5)系統(tǒng)分析員把寫好的概要設(shè)計(jì)文檔提交給程序員,程序員根據(jù)所列出的功能進(jìn)行設(shè)計(jì)和編寫代碼。 (6)測(cè)試編寫好的系統(tǒng),交給用戶使用,用戶使用后逐一確認(rèn)每個(gè)功能,然后驗(yàn)收。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰3程序設(shè)計(jì)基礎(chǔ)(1)變量。變量是在程序設(shè)計(jì)中最重要的一個(gè)要素,

32、幾乎任何一個(gè)程序設(shè)計(jì)語言中都要有變量存在。操作過程中可以改變其取值或數(shù)據(jù)類型的數(shù)據(jù)項(xiàng)。在visual foxpro系統(tǒng)中,變量分為字段變量、內(nèi)存變量、數(shù)組變量和系統(tǒng)變量4類。此外,作為面向?qū)ο蟮某绦蛘Z言,visual foxpro系統(tǒng)在進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)中引入了對(duì)象的概念,對(duì)象實(shí)質(zhì)上也是一類變量。 確定一個(gè)變量,需要確定其3個(gè)要素:變量名、數(shù)據(jù)類型和變量值。命名約定:在visual foxpro系統(tǒng)中,將表示、存儲(chǔ)數(shù)據(jù)的常量、變量、數(shù)組、字段、記錄、對(duì)象、表、數(shù)據(jù)庫等,都稱為數(shù)據(jù)容器。所有數(shù)據(jù)容器均需命名以相互區(qū)別,為規(guī)范各類對(duì)象的命名,visual foxpro系統(tǒng)推薦若干“命名約定”供

33、用戶參考,以提高操作命令與程序的可讀性和規(guī)范性。使用字母、下劃線和數(shù)字命名。一般建議不采用漢字命名。命名以字母或下劃線開頭;除自由表中字段名、索引的tag標(biāo)識(shí)名最多只能有10個(gè)字符外,其他的命名可使用1128個(gè)字符。避免使用 visual foxpro的保留字。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰 字段變量。字段變量。在visual foxpro系統(tǒng)中,表由若干記錄構(gòu)成,每個(gè)記錄包含若干數(shù)量相同的字段,而同一字段在不同記錄中對(duì)應(yīng)不同的值。所以字段是變量。字段變量與其他變量不同,是定義在表中的變量,隨表的存取而存取,是永久性變量。字段變量的變量名即字段名,數(shù)據(jù)類型為visual foxpro系

34、統(tǒng)中的任意數(shù)據(jù)類型,變量值即字段值。 內(nèi)存變量。內(nèi)存變量。內(nèi)存變量是用戶在內(nèi)存中定義的,用來存放程序運(yùn)行的中間結(jié)果和最終結(jié)果,是進(jìn)行數(shù)據(jù)的傳遞和運(yùn)算的變量。有一種內(nèi)存變量在全部程序、過程和自定義函數(shù),以及它調(diào)用的程序、過程和自定義函數(shù)中都有效,這就是全局型內(nèi)存變量。全局型內(nèi)存變量使用public定義,在后面的實(shí)例中會(huì)有它的應(yīng)用。 系統(tǒng)變量。系統(tǒng)變量。系統(tǒng)變量是visual foxpro系統(tǒng)特有的內(nèi)存變量,由visual foxpro系統(tǒng)定義、維護(hù)。系統(tǒng)變量的變量名均以下劃線“_”開始,如_windows、_cliptext等。因此在定義內(nèi)存變量和數(shù)組變量名時(shí),不要以下劃線開始,以免與系統(tǒng)變量名

35、沖突。系統(tǒng)變量設(shè)置、保存了很多系統(tǒng)的狀態(tài)、特性,了解、熟悉并充分地運(yùn)用系統(tǒng)變量,會(huì)給數(shù)據(jù)庫系統(tǒng)的操作和管理帶來很多方便,特別是開發(fā)應(yīng)用程序時(shí)更為突出。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰a變量的保存。visual foxpro提供相應(yīng)命令,可用文件形式將某些變量保存起來,以便重復(fù)使用。格式:格式:save to all like | all except 功能:功能:將指定變量的信息保存到指定的變量文件(*.mem)中。all like :只保存符合通配符條件的所有變量。all except :只保存不符合通配符條件的所有變量。b變量的恢復(fù)。需要保存在文件中的變量信息時(shí),必須先恢復(fù)到內(nèi)存后

36、方可使用。格式格式:restore from additive功能:功能:將指定變量文件(*.mem)中的變量信息恢復(fù)到內(nèi)存中。additive:省略此項(xiàng),清除內(nèi)存所有變量后再恢復(fù)文件中變量的信息;加選此項(xiàng),將變量文件中的變量信息追加到內(nèi)存現(xiàn)有變量信息中。c變量的清除。visual foxpro系統(tǒng)對(duì)定義內(nèi)存變量的數(shù)量是有限制的,應(yīng)及時(shí)清理,盡量減少內(nèi)存的占用,以定義其他變量。格式:release release all like | except 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(2)分支結(jié)構(gòu)。 簡(jiǎn)單的條件語句。格式:if endif說明:條件表達(dá)式可以是各種表達(dá)式的組合,其值必須是邏

37、輯“真”或“假”。當(dāng)條件表達(dá)式的值為“真”時(shí),先執(zhí)行if與endif間的語句,然后執(zhí)行endif后面的語句;當(dāng)條件表達(dá)式的值為“假”時(shí),直接執(zhí)行endif后面的語句。例1:從鍵盤輸入一個(gè)數(shù),若小于0,則顯示“輸入的是負(fù)數(shù)”。*liti1clearinput 輸入一個(gè)數(shù): to xif x0 ?輸入的是負(fù)數(shù)endif水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰帶else的條件語句。格式:if else endif說明:當(dāng)條件表達(dá)式的值為“真”時(shí),先執(zhí)行命令序列1,然后轉(zhuǎn)去執(zhí)行endif后面的語句;當(dāng)條件表達(dá)式的值為“假”時(shí),先執(zhí)行命令序列2,然后轉(zhuǎn)去執(zhí)行endif后面的語句。例2:從鍵盤輸入一個(gè)數(shù),若

38、小于0,顯示“輸入的是負(fù)數(shù)”;否則顯示“輸入的是非負(fù)數(shù)”。*liti2clearinput 輸入一個(gè)數(shù): to xif x0 ?輸入的是負(fù)數(shù)else ?輸入是的非負(fù)數(shù)endif水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰 if條件語句的嵌套。格式1:if if else endifelse endif當(dāng)“條件1”為“真”,同時(shí)“條件2”為“真”時(shí),執(zhí)行“命令序列1”。當(dāng)“條件1”為“真”,同時(shí)“條件2”為“假”時(shí),執(zhí)行“命令序列2”。當(dāng)“條件1”為“假”,執(zhí)行“命令序列3”。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰格式2:if else if else endifendif當(dāng)“條件1”為“真”,執(zhí)行“

39、命令序列1”。當(dāng)“條件1”為“假”,同時(shí)“條件2”為“真”時(shí),執(zhí)行“命令序列2”。當(dāng)“條件1”為“假”,同時(shí)“條件2”為“假”時(shí),執(zhí)行“命令序列3”。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰例3:從鍵盤輸入一個(gè)數(shù),若小于0,顯示“輸入的是負(fù)數(shù)”;若等于0,顯示“輸入的是零”;若大于0,則顯示“輸入的是正數(shù)”。 *liti3clearinput 輸入一個(gè)數(shù): to xif x0 ?輸入的是負(fù)數(shù)else if x=0 ?輸入的是零 else ?輸入的是正數(shù) endifendif實(shí)現(xiàn)過程與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個(gè),以免重復(fù),這里使用liti4作為文件名,讀者也可以自己

40、起一個(gè)名字。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰 docase條件語句的嵌套。do case case條件表達(dá)式1 命令序列1 case 條件表達(dá)式2 命令序列2 . case 條件表達(dá)式n 命令序列n otherwise 命令序列n+1endcase在執(zhí)行do case命令時(shí),依次判斷各條件,若為.t.,就執(zhí)行對(duì)應(yīng)的,然后轉(zhuǎn)去執(zhí)行endcase后面的語句。若為.f.,不執(zhí)行,繼續(xù)判斷下一個(gè)條件。若沒有一個(gè)條件為t,則執(zhí)行otherwise后面的。若沒有otherwise語句,則不作任何操作就轉(zhuǎn)去執(zhí)行endcase之后的語句。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰例4:利用do case判斷

41、今天是星期幾。*liti4 input 輸入一個(gè)1-7的數(shù): to x do case case x=1 ?星期一 case x=2 ? 星期二 case x=3 ? 星期三 case x=4 ? 星期四 case x=5 ? 星期五 case x=6 ? 星期六 case x=7 ? 星期日otherwise ? 請(qǐng)輸入要求輸入的數(shù)字!endcase水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(3)循環(huán)結(jié)構(gòu). 條件循環(huán)(“當(dāng)”型循環(huán)控制語句)。a語句格式:do while enddob執(zhí)行過程:當(dāng)執(zhí)行到do while 語句時(shí),首先判斷條件表達(dá)式的值是否為真,若為真則執(zhí)行下面的命令序列,遇到end

42、do即返回到循環(huán)頭,再檢查條件是否為真,如果條件仍為真,則再執(zhí)行序列;如此反復(fù)檢查和執(zhí)行,直到的值為假,即退出循環(huán),轉(zhuǎn)去執(zhí)行enddo后面的語句。c說明。循環(huán)體:被重復(fù)執(zhí)行的命令序列。do while 與enddo必須配對(duì)使用。循環(huán)條件的改變、死循環(huán)、循環(huán)的退出。d循環(huán)輔助語句格式:exit功能:用于終止本層循環(huán),無條件轉(zhuǎn)移到本層enddo后面的語句去執(zhí)行。格式:loop功能:終止本次循環(huán),返回到循環(huán)頭,進(jìn)行本層次的下一次循環(huán)。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰例5:循環(huán)輸出1+2+3+100的和。*liti5clear&清除屏幕顯示信息s=0&設(shè)置變量s初始值為0,用于保存和n=1&設(shè)置

43、變量n初始值為1,用于計(jì)數(shù)do while n=100&當(dāng)n100時(shí),執(zhí)行do 和enddo之間的代碼 s=s+n &將s+n的值賦給s n=n+1 &n的值增加1enddo?s=,s實(shí)現(xiàn)過程與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個(gè),免得重復(fù),這里使用liti6作為文件名,讀者也可以自己起一個(gè)名字。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰步長(zhǎng)循環(huán) (“計(jì)數(shù)”型循環(huán)控制語句)。格式:for = to step endfor功能:根據(jù)給定的次數(shù)重復(fù)執(zhí)行命令序列,實(shí)現(xiàn)程序循環(huán)。說明:step步長(zhǎng)值:是循環(huán)控制變量遞增或遞減的步長(zhǎng)。如果步長(zhǎng)值為正,循環(huán)控制變量遞增;如果步長(zhǎng)值為負(fù),則

44、循環(huán)控制變量遞減。如果缺省step子句,循環(huán)控制變量每次的增量為1。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰例6:求1+2+3+99+100的值。* liti6s=0for x=1 to 100 &循環(huán)遞增x的值,每次增長(zhǎng)1 s=s+xendfor?s=,s實(shí)現(xiàn)過程與例2一樣,都是在命令窗口中執(zhí)行,只是新建的文件名要另起一個(gè),免得重復(fù),這里使用liti7作為文件名,讀者也可以自己起一個(gè)名字。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.4.2 任務(wù)實(shí)現(xiàn) (1)在“項(xiàng)目”選項(xiàng)卡中,建立一個(gè)自定義表單,命名為“程序結(jié)果”,用來輸出分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和統(tǒng)計(jì)用戶數(shù)量的結(jié)果,如圖5-36所示。注:label1

45、為標(biāo)簽。圖5-36 程序運(yùn)行及結(jié)果顯示水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(2)編寫“分支結(jié)構(gòu)”按鈕的代碼。a=5if a 3&如果a3thisform.label1.caption=比3大&在標(biāo)簽上顯示最終結(jié)果else&如果a3,則在標(biāo)簽中顯示比3小,否則顯示比3大。上面的標(biāo)簽中,主要利用的就是caption屬性,而按鈕的事件就是click事件,如圖5-37所示。圖5-37 按鈕事件選擇水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(3)編寫“循環(huán)結(jié)構(gòu)”按鈕的代碼。s=0n=1do while n0,enabled為.t.,則當(dāng)表單啟動(dòng)時(shí)計(jì)時(shí)器便開始計(jì)時(shí)。若enabled為.f.,則計(jì)時(shí)器不啟動(dòng),

46、調(diào)用reset方法可使計(jì)時(shí)器重新從0開始計(jì)時(shí)。圖5-42 計(jì)時(shí)器屬性注計(jì)時(shí)器控件在運(yùn)行時(shí)是不可見的,所以在設(shè)計(jì)時(shí)可把它放置在表單的任意位置。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰4chr函數(shù)chr函數(shù),根據(jù)指定的ascii數(shù)值代碼返回其對(duì)應(yīng)的字符。 5time函數(shù)該函數(shù)主要是對(duì)時(shí)間進(jìn)行操作,該類操作主要應(yīng)用有:在注冊(cè)用戶時(shí),希望用戶在一定時(shí)間范圍內(nèi)讀取一些協(xié)議;可以在某些頁面進(jìn)行時(shí)間的顯示;可以做一些退出的設(shè)置,如在退出某些系統(tǒng)時(shí),為了避免某些錯(cuò)誤操作,導(dǎo)致退出系統(tǒng)而尚未保存信息,可以用倒計(jì)時(shí)來提醒用戶,這種方式也用到了一些大型的網(wǎng)絡(luò)游戲,利用這種方式來存儲(chǔ)人物數(shù)據(jù)。與日期相關(guān)的函數(shù)如表5-

47、5所列。 表5-5 日期相關(guān)的函數(shù)函數(shù)名操作例結(jié)果date()求當(dāng)前日期date()2001/11/12datetime()求當(dāng)前日期和時(shí)間datetime()2001/11/12/0:22:33amyear(d)求年份year(date()2001month(d)求月份(數(shù)值)month(datetime()11cmonth(d)求月份字符)cmonth(datetime()novemberday(d)求日期day(date()12dow(d)求星期幾(數(shù)值)dow(date()1cdow(d)求星期幾(英文)cdow(date()sundaytime(d)求當(dāng)前時(shí)間time(date()1

48、0:20:38am水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.6.2 任務(wù)實(shí)現(xiàn):退出窗體 在程序設(shè)計(jì)和軟件開發(fā)中,經(jīng)常需要設(shè)計(jì)計(jì)時(shí)器,如秒表、正計(jì)時(shí)器、倒計(jì)時(shí)器等。這些計(jì)時(shí)器的設(shè)計(jì)方法大同小異,本文以倒計(jì)時(shí)器設(shè)計(jì)為例介紹兩種設(shè)計(jì)倒計(jì)時(shí)器的方法。visual foxpro中的計(jì)時(shí)器控件有一個(gè)timer事件,每經(jīng)過interval(單位為毫秒)屬性指定的時(shí)間就執(zhí)行該事件一次。利用該控件的這一特點(diǎn)再配合一些程序,可設(shè)計(jì)各種計(jì)時(shí)器,包括倒計(jì)時(shí)器。本程序通過計(jì)時(shí)器控件和時(shí)間函數(shù)seconds()來設(shè)計(jì)倒計(jì)時(shí)器。seconds()函數(shù)可以以秒為單位返回自午夜以來經(jīng)過的時(shí)間。在“開始”按鈕的click事件中加

49、入代碼:t0seconds()。在計(jì)時(shí)器控件的timer事件代碼中加入:t1seconds()、t210t0、t3t2t1。t0為單擊“開始”按鈕時(shí)離午夜的時(shí)間,t1為計(jì)時(shí)器每次觸發(fā)時(shí)距午夜的時(shí)間,t2為定時(shí)結(jié)束時(shí)距午夜的時(shí)間,t3為剩余時(shí)間。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(1)打開超市管理系統(tǒng)工程,新建立一個(gè)窗體退出系統(tǒng)。(2)在窗體設(shè)計(jì)器中添加如圖5-43所示的控件。圖5-43 退出表單(3)程序清單如下。表單form1的init事件代碼:public t0&聲明變量t0t0=seconds()&設(shè)置t0為表單運(yùn)行的當(dāng)前時(shí)間thisform.timer1.enabled=.t.&可

50、以直接在屬性中設(shè)置標(biāo)簽label1的屬性caption:退出系統(tǒng)標(biāo)簽label2的屬性caption:10秒鐘水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰計(jì)時(shí)器timer1的屬性interval:500&時(shí)間間隔計(jì)時(shí)器timer1的timer事件代碼:t1seconds()&設(shè)置t1為表單運(yùn)行后每次計(jì)時(shí)器響應(yīng)的時(shí)間if t1-t0 =10&判斷當(dāng)前時(shí)間與表單運(yùn)行時(shí)的時(shí)間差messagebox(定時(shí)時(shí)間到!)elsethisform.label5.captionint(10-(t1-t0)endif命令按鈕command1的屬性caption:退出命令按鈕command1的click事件代碼:quit

51、命令按鈕command2的屬性caption:取消命令按鈕command2的click事件代碼:release thisform說明:在上面的程序中,只是對(duì)倒計(jì)時(shí)的代碼作一些修改,只要適當(dāng)對(duì)上面的代碼進(jìn)行修改,就可以改變出很多的實(shí)用功能。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰課后練習(xí)利用計(jì)時(shí)器制作一個(gè)表單,要求用戶閱讀注冊(cè)協(xié)議,在30秒后才可以進(jìn)行下一步操作。要求只有剩余時(shí)間為0時(shí)按鈕才可以使用,如圖5-44所示。圖5 44 退出提示水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.7 任務(wù)六 商品信息瀏覽 5.7.1 相關(guān)知識(shí) 類是面向?qū)ο蟪绦蛟O(shè)計(jì)中非常重要的一個(gè)知識(shí)點(diǎn),正是類的存在,使得面向?qū)ο?/p>

52、程序設(shè)計(jì)變得豐富多彩。恰當(dāng)?shù)厥褂妙惒粌H可以使程序更加美觀,更可以減輕大量的重復(fù)性工作。 利用向?qū)?shí)現(xiàn)表單可以很快速地生成數(shù)據(jù)表單。但這并不是萬能的方法,對(duì)于一些有特殊功能的表單并不能完全利用這種方法來生成。在這種情況下必須手工生成表單,并對(duì)所生成的表單添加一些功能按鈕和一些導(dǎo)航按鈕。這些功能按鈕和導(dǎo)航按鈕可以用類的方式來生成。如果程序中并不涉及太多的代碼的重用問題,也可以不用類的方法。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰1創(chuàng)建類在創(chuàng)建過程中,選擇“類”,單擊“新建文件”命令,彈出窗體,如圖5-45所示。圖5-45 “新建類”對(duì)話框?yàn)樾陆愄砑印邦惷眒yc,選擇“派生于”為commandgr

53、oup,該選項(xiàng)是選擇新建的類將繼承于哪種類。在“存儲(chǔ)于”中選擇存儲(chǔ)的位置,設(shè)置好相關(guān)目錄,單擊“確定”按鈕。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2將新屬性添加到類在新建的類中添加4個(gè)按鈕,做成導(dǎo)航菜單,如圖5-46所示。 圖5-46 新建類3在類中編輯方法編輯類中的命令按鈕和編輯表單中的命令按鈕是一樣的,雙擊即可添加程序代碼。4將類添加到表單中建立完一個(gè)類后,可以重復(fù)使用,非常方便,就像使用自帶的控件一樣。使用時(shí)只要單擊添加圖標(biāo),選擇“添加”命令,找到剛才新建的類,就可以使用了。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5注冊(cè)一個(gè)類庫.從“工具”菜單中選擇“選項(xiàng)”命令,在彈出的“選項(xiàng)”對(duì)話框中選

54、擇“控件”選項(xiàng)卡,選擇“可視類庫”并單擊“添加”按鈕,在“打開”對(duì)話框中選擇要注冊(cè)的類庫并單擊“打開”按鈕,單擊“確定”按鈕。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.7.2 任務(wù)實(shí)現(xiàn):類的實(shí)現(xiàn) (1)新建類。名稱為myc,該類起數(shù)據(jù)導(dǎo)航的作用,4個(gè)命令按鈕的名稱分別是首記錄、上一條、下一條和末記錄。代碼如下:首記錄: go top &指針指到第一條記錄thisform.refresh &刷新上一條:skip -1 &指針指向上一條記錄if bof() &判斷是否到達(dá)首記錄 go topendifthisform.refresh&更新表單數(shù)據(jù)下一條:skip 1 &指針指向下一條記錄if eo

55、f() &判斷是否到達(dá)末記錄 go bottom &指向最后一條記錄endifthisform.refresh&更新表單數(shù)據(jù)末記錄:go bottomthisform.refresh水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(2)新建一個(gè)表單“商品信息2”,右擊表單,為表單添加數(shù)據(jù)環(huán)境,在數(shù)據(jù)環(huán)境中引入“商品信息”表,利用手工拖動(dòng)的方式,把相關(guān)字段拖動(dòng)到此表單中。并適當(dāng)調(diào)整各控件的位置,在表單下留出空白,以便添加上面所生成的類。(3)添加上面所生成的類,通過生成器和類來實(shí)現(xiàn)瀏覽商品信息的功能,如圖5-47所示。圖5-47 手工制作“商品信息”表單水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰4添加組合框,

56、調(diào)整表單界面的布局。最終效果如圖5-48所示。圖5-48 為表單添加自定義類水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰(5)設(shè)置組合框,表單中的組合框主要起到瀏覽廠商和供貨商信息的作用。這里以廠商編號(hào)為例。右擊組合框combo1,在快捷菜單中選擇“生成器”命令,設(shè)置如圖5-49所示。圖5-49 為組合框設(shè)定字段水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰首先選擇數(shù)據(jù)表,然后選擇要顯示的字段,單擊“確定”按鈕就可以實(shí)現(xiàn)要求的功能,還可以進(jìn)行其他的設(shè)置:rowsourcetype設(shè)定為字段rowsource設(shè)定為“供貨商.供貨商名稱,供貨商.供貨商編號(hào)”controlsource設(shè)定為“商品信息.供貨商編號(hào)

57、”boundto設(shè)定為.t.boundcolumn設(shè)定為2組合框的最終效果如圖5-50所示。圖5-50 組合框運(yùn)行結(jié)果水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰課后練習(xí) 利用前面制作的導(dǎo)航菜單,制作一個(gè)瀏覽會(huì)員基本信息的表單。效果如圖5-51所示。圖5-51 會(huì)員信息瀏覽表單水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5.8 任務(wù)七 表單的綜合應(yīng)用 5.8.1 相關(guān)知識(shí)1在表單中添加表格表格(grid)是按行和列顯示數(shù)據(jù)的容器對(duì)象,其外觀與瀏覽窗口相似。表格是包含列對(duì)象的容器對(duì)象。列可以包含標(biāo)頭對(duì)象及控制。由于表格及其列、標(biāo)頭和控件都有各自的屬性集,可以完全控制表格中的每一個(gè)元素。可以在表格生成器中交互

58、地創(chuàng)建“表格”。圖5-52 表格的使用水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰2設(shè)置表格列數(shù)在表格的屬性中,columncount屬性,指定表格控件中列對(duì)象的數(shù)目。對(duì)于表格,該屬性設(shè)計(jì)時(shí)可用,運(yùn)行時(shí)可讀寫。對(duì)于表格控制,默認(rèn)的屬性設(shè)置為1。當(dāng)columncount屬性設(shè)置為1時(shí),則自動(dòng)創(chuàng)建足夠的列,以容納數(shù)據(jù)源中的所有字段。對(duì)于表格,可使用addcolumn方法增加列的數(shù)目。3在設(shè)計(jì)時(shí)人工調(diào)整表格的顯示效果在設(shè)計(jì)表格時(shí),開發(fā)人員可以利用allowrowsizing屬性指定能否人工調(diào)整表格中行的大小。4設(shè)置表格中顯示的數(shù)據(jù)源recordsource指定與表格控件相綁定的數(shù)據(jù)源。設(shè)計(jì)時(shí)可用,運(yùn)行時(shí)只

59、讀寫。該屬性指定與表格控制相綁定的主臨時(shí)表。如果為一個(gè)網(wǎng)格指定了記錄源,就可以通過設(shè)置controlsource 屬性來指定網(wǎng)格中單獨(dú)列的內(nèi)容。如果沒有為網(wǎng)格中的列設(shè)置controlsource屬性,那么列顯示網(wǎng)格的記錄源中下一個(gè)可用的不能顯示的字段。水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰5常用的表格屬性top:對(duì)于表單對(duì)象,確定表單的頂端邊緣與visual foxpro主窗口的距離。left:對(duì)于表單對(duì)象,確定表單的左邊界與visual foxpro主窗口左邊界之間的距離。height:指定對(duì)象在屏幕上的高度。width:指定對(duì)象的寬度。columncount:指定表格控件中列對(duì)象的數(shù)目。l

60、inkmaster:指定表格控件中子表所鏈接的父表。recordsource:指定與表格控件相綁定的數(shù)據(jù)源。 水利水電出版社沈陽市計(jì)算機(jī)學(xué)校 王煥杰6編輯框在表單上用于接收輸入文本或查看文本的控件。編輯框可以包含多行文本。編輯框控件可用來編輯字符類型的內(nèi)存變量、數(shù)組元素、字段或備注字段。所有標(biāo)準(zhǔn)的visual foxpro編輯功能,如剪切、復(fù)制和粘貼,在編輯框中都可以使用。編輯框中的文本在垂直方向上可以滾動(dòng),在水平方向上可以自動(dòng)換行。7微調(diào)控件允許通過輸入或單擊上、下箭頭按鈕增加或減少數(shù)值的控件。8組合框被選中時(shí),組合框打開,并顯示項(xiàng)的列表,從中可選擇一項(xiàng)。組合框控件結(jié)合了文本框控件和列表框控

溫馨提示

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