版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章表單的設(shè)計(jì)和應(yīng)用7.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念7.2可視化表單設(shè)計(jì)的基礎(chǔ)7.3利用表單向?qū)Ы⒈韱?.4應(yīng)用表單設(shè)計(jì)器設(shè)計(jì)表單7.5常用的表單控件及其應(yīng)用7.6表單的應(yīng)用舉例 7.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念
7.1.1對(duì)象(Object)
客觀世界里的任何實(shí)體都可以被看做是對(duì)象。對(duì)象可以是具體的物,也可以指某些抽象的概念。從編程的角度來(lái)看,對(duì)象是一種將數(shù)據(jù)和操作過(guò)程結(jié)合在一起的數(shù)據(jù)結(jié)構(gòu),或者是一種具有屬性(數(shù)據(jù))和方法(過(guò)程和函數(shù))的集合體。事實(shí)上,程序中的對(duì)象就是對(duì)客觀世界中對(duì)象的一種抽象描述。7.1.2類(Class)
在客觀世界中,我們把許多具有相同屬性和行為特征的事物歸為一類。類是對(duì)一類相似對(duì)象的性質(zhì)描述,類定義了對(duì)象的一組屬性、事件、方法程序的對(duì)象模板,類是對(duì)象的抽象描述,對(duì)象是類的實(shí)例化描述。例如,人就是一個(gè)類,其中有大人、男人、女人;學(xué)生是一個(gè)類,其中有大學(xué)生、中學(xué)生和小學(xué)生。
1.類的概念
類(Class)是對(duì)一組對(duì)象的屬性和特征的抽象描述,是對(duì)擁有數(shù)據(jù)和一定行為特征的對(duì)象集合的描述。類是抽象的,而對(duì)象是具體的。它們既有聯(lián)系又有區(qū)別,例如,世界上有各式各樣的橋,就建筑結(jié)構(gòu)而言,有吊橋、浮橋、鐵橋、立交橋。但它們有一個(gè)共同的屬性:架在江河湖海上或公路上;有一個(gè)共同的行為特征:可供行人或車輛通行。根據(jù)這個(gè)屬性和特征,人們才把它們稱為橋,以區(qū)別于路。可見橋是一個(gè)抽象的類,而各種各樣具體的橋,例如立交橋就是這一類的實(shí)例,就是對(duì)象。
在VisualFoxPro中的類是一個(gè)模板,對(duì)象是由它派生的,類定義了對(duì)象的所有屬性、事件和方法,確定了對(duì)象的屬性和行為。這如同設(shè)計(jì)圖紙是建筑物的模板(即類),而建筑物則是根據(jù)設(shè)計(jì)圖紙而建設(shè)的對(duì)象。對(duì)象可以是表單、表單集或控件,用它來(lái)完成應(yīng)用程序中具有某種一致性和依賴性的行為,它的使用可以提高程序代碼的復(fù)用性,減少程序代碼量。
2.類的特征
由于類是對(duì)象的抽象,是具有相同屬性和特征的對(duì)象的集合,所以類定義對(duì)象的屬性、事件和方法,其本身具有繼承性、封裝性和多態(tài)性等特性。
1)類的繼承性
類的繼承性(Inheritance):指用戶通過(guò)存在的類來(lái)構(gòu)造出新類,從而組成了類的層次結(jié)構(gòu)。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)方法中最重要的特性,繼承性充分體現(xiàn)了現(xiàn)實(shí)世界中各種事物的構(gòu)造關(guān)系,使得按面向?qū)ο蟪绦蛟O(shè)計(jì)方法構(gòu)造的程序更接近現(xiàn)實(shí)世界,更容易理解和駕馭。繼承性是類的共享機(jī)制的集中體現(xiàn),具體表現(xiàn)在:對(duì)象自動(dòng)繼承類的全部語(yǔ)義,即只要聲明一個(gè)對(duì)象是某個(gè)類的實(shí)例,這個(gè)對(duì)象就具有了該類定義中的全部的屬性和方法,無(wú)需做任何重復(fù)說(shuō)明。
類具有多層繼承機(jī)制,通常稱原來(lái)存在的類是父類,構(gòu)造出的新類為子類。當(dāng)一個(gè)類定義為另一個(gè)類(稱為基類)的子類時(shí),該類便自動(dòng)地繼承其基類的全部要素。且這種繼承具有傳遞性,一個(gè)孫子類不僅具有其父類的全部要素,而且具有其爺爺類的全部要素,直到其最遠(yuǎn)的祖先的全部要素。在面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,繼承是指在基于現(xiàn)有的類創(chuàng)建新類時(shí),新類繼承了現(xiàn)有類里的方法和屬性。此外,可以為新類添加新的方法和屬性。我們把新類稱為現(xiàn)有類的子類,而把現(xiàn)有類稱為新類的父類或基類。一個(gè)子類的成員一般包括從其父類繼承的屬性和方法,及由子類自己定義的屬性和方法。在VisualFoxPro中提供了最基本的29個(gè)類,由它們可以不斷派生出新類,這些最基本的類稱為基類,是系統(tǒng)本身內(nèi)含的,并不存放在某個(gè)類庫(kù)中。用戶可以基于基類生成所需要的對(duì)象,也可以擴(kuò)展基類創(chuàng)建自己的子類。OOP方法的這種多層繼承機(jī)制使我們可以最方便地從已有的類出發(fā),定義新層次的類,或是添加新的功能,或是對(duì)原有的類進(jìn)行修改,以適應(yīng)我們的需要。顯然,這種多層次繼承機(jī)制可以大大提高編程的效率。
2)類的封裝性
類的封裝性(Encapsulation):類的內(nèi)部信息對(duì)于用戶來(lái)說(shuō)是屏蔽的,這是一種組織軟件的方法。對(duì)于一個(gè)封裝來(lái)講,它把世界中緊密聯(lián)系的元素及操作捆綁在一起,構(gòu)造出獨(dú)立含義的程序,而把這種內(nèi)部的相互關(guān)系對(duì)用戶屏蔽起來(lái),僅留出與其他封裝體的接口。
利用類的封裝性,在使用類時(shí)只需學(xué)習(xí)類的使用方法,而不關(guān)心類的內(nèi)部復(fù)雜性,像使用計(jì)算機(jī)一樣,用戶可以不關(guān)心計(jì)算機(jī)的硬件系統(tǒng)結(jié)構(gòu),而只需學(xué)習(xí)如何對(duì)它進(jìn)行操作,發(fā)布命令。7.1.3類和對(duì)象的分類
根據(jù)使用方式的不同,可將VFP中的類分為以下兩大類:
可視化類無(wú)論在程序設(shè)計(jì)時(shí)還是在程序運(yùn)行時(shí)都具有相應(yīng)的圖標(biāo)和圖形化的界面,這就是可視化類,應(yīng)用可視化類編程非常簡(jiǎn)捷而且效率很高。
非可視化類不具有圖形化界面的稱為非可視化類。應(yīng)用非可視化類編程要繁瑣些。
根據(jù)作用的不同,將可視化類和相應(yīng)生成的對(duì)象分為以下兩種:
容器容器可以被認(rèn)為是一種特殊的控件,它能包容其他的控件或容器。例如,表單就是容器類對(duì)象??丶丶且粋€(gè)可以以圖形化的方式顯示出來(lái),并能與用戶進(jìn)行交互的對(duì)象,控件類不能包含其他對(duì)象。例如,命令按鈕就是控件類對(duì)象。
表7.1歸納了VFP中常用的容器和控件的包含關(guān)系。表7.2歸納了VFP中常用控件的名稱及其作用。表7.1VFP中常用的容器和控件的包含關(guān)系表7.2VFP中常用的控件及其作用 7.2可視化表單設(shè)計(jì)的基礎(chǔ)
7.2.1表單及其基本特性
表單是一種可視化的VisualFoxPro程序。在Windows中,每一個(gè)應(yīng)用程序都是放在某一個(gè)窗口中的。窗口既是程序與用戶進(jìn)行交互的界面,也是Windows風(fēng)格應(yīng)用程序的基礎(chǔ)。在VisualFoxPro中,這個(gè)作為應(yīng)用程序基礎(chǔ)的窗口對(duì)象稱為“FORM”,中文名稱為“表單”,也有譯作“窗體”的。
采用面向?qū)ο蟮姆椒?gòu)建應(yīng)用程序時(shí),程序中的一個(gè)個(gè)對(duì)象就如同我們蓋一座大樓時(shí)用的預(yù)制構(gòu)件。每一構(gòu)件都包括兩方面的特性,一個(gè)方面是其本身內(nèi)在屬性及外觀。另一方面是與其他構(gòu)件的連接關(guān)系。除此以外,對(duì)象還有反映其行為的動(dòng)態(tài)特性,可以稱為行為特性或操作特性,由相關(guān)的事件引起。
1.表單的主要屬性
表單的屬性主要體現(xiàn)在窗口外觀的規(guī)定方面,這些屬性大致可分為以下幾類:
1)規(guī)定窗口大小和位置的屬性
Left指定表單窗口左邊界相對(duì)VisualFoxPro主窗口左邊界的位置。
Top指定表單窗口頂端邊界相對(duì)VisualFoxPro主窗口頂端的位置。
Width指定表單窗口的寬度。
Height指定表單窗口的高度。
ScaleMode指定表單窗口大小與位置參數(shù)的度量單位。
2)規(guī)定窗口顏色和圖像的屬性
Picture指定一個(gè)圖像文件或圖標(biāo)文件作為窗口背景。
ForeColor指定窗口中顯示對(duì)象的前景顏色。
BackColor指定窗口中顯示對(duì)象的背景顏色。
通過(guò)使用Picture屬性,可以將一幅賞心悅目的圖畫指定為表單窗口的背景。若圖畫小于窗口的大小,則VisualFoxPro將自動(dòng)用多幅同樣的圖畫填滿整個(gè)窗口。通過(guò)使用ForeColor和BackColor屬性設(shè)置前景色和背景色,可以使顯示對(duì)象看起來(lái)更美觀。尤其是,如果通過(guò)編程動(dòng)態(tài)地改變前景色和背景色,則可以使顯示的文字等對(duì)象呈現(xiàn)出五彩繽紛的活潑的效果。
3)有關(guān)字體的屬性
FontBold指定顯示文本為粗體字。
FontItalic指定顯示文本為斜體字。
FontOutline指定顯示文本加上輪廓。
FontShadow指定顯示文本加上陰影。
FontSize指定顯示文本大小。默認(rèn)值為10磅。72磅相當(dāng)于1英寸。最大值為2048磅。
FontUnderline指定顯示文本加下劃線。
FontName指定顯示字體的名稱。
使用字體屬性,可使窗口中的文字豐富多彩,消除單調(diào)感。
4)有關(guān)窗口外觀行為的屬性
AutoCenter指定表單窗口建立時(shí)是否位于VisualFoxPro主窗口的正中間。
Visible指定表單窗口是否可見。
Movable指定表單窗口是否可通過(guò)鼠標(biāo)移動(dòng)。
MaxButton指定表單窗口的最大化按鈕是否可用。
MinButton指定表單窗口的最小化按鈕是否可用。
AlwaysOnTop指定表單窗口是否總處在最前面。
LockScreen指定表單窗口的改變是否以批處理方式進(jìn)行。
5)影響表單外觀的其他屬性
MaxWidth規(guī)定表單的最大寬度。
MinWidth規(guī)定表單的最小寬度。
MaxLeft規(guī)定表單的左邊界與VisualFoxPro主窗口的左邊界之間的最大距離。
MaxTop規(guī)定表單的最大化后與VisualFoxPro主窗口上邊界的距離。
6)指示表單身份的屬性
Icon圖標(biāo),指定一個(gè)Icon文件作為窗口圖標(biāo)。
Caption標(biāo)題,給出表單顯示的標(biāo)題。
Name名稱,是設(shè)計(jì)中指示一個(gè)對(duì)象的惟一標(biāo)記,在同一個(gè)層面上,對(duì)象的名稱必須是惟一的、各不相同的。
2.表單的事件與方法
表單可以響應(yīng)40多個(gè)事件和方法,以下羅列了表單中幾個(gè)最常用的事件和方法,并且對(duì)這幾個(gè)常用事件和方法作了比較詳細(xì)的說(shuō)明。
Load建立表單之前觸發(fā)的事件。
Init建立表單時(shí)觸發(fā)的事件。
Activate激活表單時(shí)觸發(fā)的事件。
Destory釋放表單時(shí)觸發(fā)的事件。
Click用鼠標(biāo)單擊觸發(fā)的事件。
Show(1)顯示表單的方法。
Hide隱藏表單的方法。
Release釋放表單的方法。
Refresh刷新表單的方法。7.2.2表單的數(shù)據(jù)環(huán)境
每一個(gè)對(duì)數(shù)據(jù)庫(kù)表操作的表單,都包括一個(gè)數(shù)據(jù)環(huán)境。數(shù)據(jù)環(huán)境是一個(gè)容器對(duì)象,它用來(lái)定義與表單相聯(lián)系的數(shù)據(jù)實(shí)體(表、視圖)的信息及其相互關(guān)系。數(shù)據(jù)環(huán)境容器一般包含一到多個(gè)Cursor(臨時(shí)表)類對(duì)象,表單中所含Cursor類對(duì)象的個(gè)數(shù)與表單關(guān)聯(lián)的數(shù)據(jù)實(shí)體(表、視圖)的個(gè)數(shù)相同,一個(gè)Cursor類對(duì)象與一個(gè)數(shù)據(jù)實(shí)體(表、視圖)對(duì)應(yīng)。如果一個(gè)表單關(guān)聯(lián)多個(gè)表,在數(shù)據(jù)環(huán)境容器中還有一個(gè)Relation(關(guān)系)類對(duì)象描述這些表之間的關(guān)系,可以使用完全的編程方式建立數(shù)據(jù)環(huán)境,但更為方便的是用數(shù)據(jù)環(huán)境設(shè)計(jì)器來(lái)添加表單的數(shù)據(jù)環(huán)境(詳見7.4節(jié))。7.2.3對(duì)象引用的規(guī)則
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,經(jīng)常要引用對(duì)象或?qū)ο蟮膶傩?、事件和調(diào)用方法程序,下面介紹幾個(gè)通用的對(duì)象名稱。
1.對(duì)象引用的三個(gè)關(guān)鍵字代詞
Thisformset表示當(dāng)前擁有焦點(diǎn)的表單集對(duì)象。
Thisform表示當(dāng)前擁有焦點(diǎn)的表單對(duì)象。
This表示當(dāng)前擁有焦點(diǎn)的某對(duì)象。
2.對(duì)象的引用格式
引用的關(guān)鍵字后加一個(gè)圓點(diǎn)“.”,再寫出被引用的對(duì)象或?qū)ο蟮膶傩?、事件、方法程序名稱,并且多級(jí)引用時(shí)要求逐級(jí)寫出所屬關(guān)系。 7.3利用表單向?qū)Ы⒈韱?/p>
表單(Form)是VisualFoxPro提供的用于建立應(yīng)用程序界面的最主要的工具之一。表單相當(dāng)于Windows應(yīng)用程序的窗口。表單可以屬于某個(gè)項(xiàng)目,也可以游離于任何項(xiàng)目之外,它是一個(gè)特殊的磁盤文件,其擴(kuò)展名為?.scx。在項(xiàng)目管理器中創(chuàng)建的表單自動(dòng)隸屬于該項(xiàng)目。
表單向?qū)强焖偕杀韱蔚某S梅椒?,?yīng)用表單向?qū)軌蛲瓿删哂胁樵儭⑻砑?、修改、刪除等功能的表單。程序設(shè)計(jì)者可以使用表單向?qū)?chuàng)建基本功能的表單,而用表單設(shè)計(jì)器設(shè)計(jì)復(fù)雜功能的表單。啟動(dòng)表單向?qū)в幸韵滤姆N方法:
(1)打開“項(xiàng)目管理器”,選擇“文檔”選項(xiàng)卡,從中選擇“表單”。然后單擊“新建”按鈕。在彈出的“新建”表單對(duì)話框中單擊“表單向?qū)А卑粹o。
(2)在系統(tǒng)菜單中選擇“文件|新建”命令,或者單擊工具欄上的“新建”按鈕,打開“新建”對(duì)話框,在文件類型欄中選擇“表單”。然后單擊“向?qū)А卑粹o。
(3)在系統(tǒng)菜單中選擇“工具|向?qū)表單”命令。
(4)直接單擊常用工具欄上的“表單向?qū)А眻D標(biāo)按鈕。
VFP中有兩種表單向?qū)?,其功能有所不同?/p>
(1)表單向?qū)В赫麄€(gè)表單是針對(duì)一個(gè)數(shù)據(jù)庫(kù)表而生成的具有查詢、添加、修改、刪除等功能的表單。
(2)一對(duì)多表單向?qū)В赫麄€(gè)表單是針對(duì)兩個(gè)數(shù)據(jù)庫(kù)表,而且這兩個(gè)表之間存在一對(duì)多的關(guān)系。7.3.1利用表單向?qū)?chuàng)建基于一個(gè)表的表單
操作步驟如下:
(1)?VFP系統(tǒng)菜單中選擇“文件|新建”命令,或者單擊工具欄上的“新建”按鈕,打開“新建”對(duì)話框,如圖7.1所示。在文件類型欄中選擇“表單”,然后單擊“向?qū)А卑粹o,彈出對(duì)話框,如圖7.2所示。圖7.1“新建”對(duì)話框圖7.2“表單向?qū)А睂?duì)話框圖7.3表單向?qū)Р襟E1——選擇字段
(3)在圖7.3中單擊“下一步”按鈕,出現(xiàn)表單向?qū)У牟襟E2——選擇表單樣式對(duì)話框,如圖7.4所示,這一步一般不需要重新選擇,選擇默認(rèn)值就可以,樣式框中提供了標(biāo)準(zhǔn)式、凹顯式、陰影式、邊框式等4種。按鈕類型框中也提供了文本按鈕、圖片按鈕、無(wú)按鈕、定制4種。圖7.4表單向?qū)Р襟E2—選擇表單樣式
(4)在圖7.4中單擊“下一步”按鈕,出現(xiàn)表單向?qū)Р襟E3——排序次序?qū)υ捒?,如圖7.5所示,從左邊“可用的字段或索引標(biāo)識(shí)”框中選擇排序的字段,然后單擊“添加”按鈕,并選擇“升序”或“降序”后單擊“下一步”按鈕,這時(shí)出現(xiàn)表單向?qū)Р襟E4——完成對(duì)話框。圖7.5表單向?qū)Р襟E3——排序次序
(5)在圖7.6中,鍵入表單標(biāo)題,例如“職員信息表單”,并選擇“保存并運(yùn)行表單”單選按鈕,然后單擊“完成”按鈕,出現(xiàn)“另存為”對(duì)話框,并將該表單命名存盤,這樣就完成了利用表單向?qū)?chuàng)建表單的全過(guò)程。表單的運(yùn)行結(jié)果如圖7.7所示。圖7.6表單向?qū)Р襟E4——完成圖7.7表單運(yùn)行結(jié)果7.3.2利用一對(duì)多表單向?qū)?chuàng)建表單
一對(duì)多表單向?qū)軌驇椭_發(fā)者建立兩個(gè)表關(guān)聯(lián)的表單,表單中的數(shù)據(jù)源存在一對(duì)多的關(guān)系,一方對(duì)應(yīng)的表稱為父表,而多方對(duì)應(yīng)的表稱為子表,在所建立的表單中,父表數(shù)據(jù)以文本形式顯示,子表數(shù)據(jù)以表格形式顯示,非常方便地實(shí)現(xiàn)了關(guān)聯(lián)查詢的功能。
操作步驟如下:
(1)在VFP系統(tǒng)菜單中選擇“文件|新建”命令,或者單擊工具欄上的“新建”按鈕,打開“新建”對(duì)話框,如圖7.1所示。在文件類型欄中選擇“表單”,然后單擊“向?qū)А卑粹o。
(2)在圖7.2中,選擇“一對(duì)多表單向?qū)А辈螕簟按_定”按鈕,出現(xiàn)如圖7.8所示對(duì)話框,在圖7.8中選擇需要的父表表名以及相應(yīng)的字段,并單擊“下一步”按鈕。出現(xiàn)對(duì)話框,如圖7.9所示。圖7.8一對(duì)多表單向?qū)Р襟E1——從父表中選擇字段圖7.9一對(duì)多表單向?qū)Р襟E2——從子表中選擇字段
(3)在圖7.9中選擇子表的表名以及字段,單擊“下一步”按鈕,出現(xiàn)如圖7.10所示的對(duì)話框。圖7.10一對(duì)多表單向?qū)Р襟E3——建立表之間的關(guān)系
(4)在圖7.10中,建立兩表之間的關(guān)聯(lián)關(guān)系為“倉(cāng)庫(kù)號(hào)”對(duì)“倉(cāng)庫(kù)號(hào)”。兩個(gè)數(shù)據(jù)表的關(guān)聯(lián)字段相同時(shí)系統(tǒng)以默認(rèn)值顯示該關(guān)聯(lián)關(guān)系,如果兩個(gè)數(shù)據(jù)表的關(guān)聯(lián)字段不相同,則需要用戶自己設(shè)置關(guān)聯(lián)字段,并單擊“下一步”按鈕。出現(xiàn)對(duì)話框如圖7.11所示。圖7.11一對(duì)多表單向?qū)Р襟E4——選擇表單樣式
(5)在圖7.11中,選擇一種表單的樣式,單擊“下一步”按鈕,出現(xiàn)對(duì)話框,如圖7.12所示。選擇排序的字段,例如“倉(cāng)庫(kù)號(hào)”,并單擊“下一步”按鈕。圖7.12一對(duì)多表單向?qū)Р襟E5——排序次序
(6)在圖7.13中,選擇選項(xiàng)按鈕“保存并運(yùn)行表單”,指定表單存儲(chǔ)的目錄和文件名,單擊“完成”。這樣依照“表單向?qū)А本屯瓿闪艘粚?duì)多表單的設(shè)計(jì)工作。表單的運(yùn)行結(jié)果如圖7.14所示。圖7.13一對(duì)多表單向?qū)Р襟E6——完成圖7.14一對(duì)多表單的運(yùn)行結(jié)果 7.4應(yīng)用表單設(shè)計(jì)器設(shè)計(jì)表單
7.4.1應(yīng)用表單設(shè)計(jì)器設(shè)計(jì)表單
1.表單設(shè)計(jì)器窗口
可以用多種方法打開表單設(shè)計(jì)器:
(1)選擇菜單“文件|新建”選項(xiàng),指定文件類型為“表單”,然后單擊“新建文件”按鈕。
(2)在“項(xiàng)目管理器”中選擇“文檔”選項(xiàng)卡中的“表單”,然后單擊“新建”按鈕,并在打開的“新建表單”對(duì)話框中選擇“新建表單”。
(3)在命令窗口中輸入CREATEFORM<文件名>或MODIFYFORM<文件名>。不管采用上面哪種方法,系統(tǒng)都將打開表單設(shè)計(jì)器窗口,如圖7.15所示。打開表單設(shè)計(jì)器窗口后,VisualFoxPro主窗口上還將出現(xiàn)屬性設(shè)置窗口、表單控件工具欄、表單設(shè)計(jì)器工具欄以及“表單”菜單項(xiàng)。在表單設(shè)計(jì)器環(huán)境下,用戶可以交互式地、可視化地設(shè)計(jì)出完全個(gè)性化的表單。
在圖7.15中,網(wǎng)格畫布的作用是添加控件對(duì)象并布局控件的設(shè)計(jì)平臺(tái)??丶ぞ邫诘淖饔檬翘峁¬isualFoxPro的20多種基類,以便用戶生成子類對(duì)象。屬性窗口的作用是為每個(gè)控件設(shè)置必要的屬性值。圖7.15表單設(shè)計(jì)器窗口
2.表單控件工具欄的操作
表單控件工具欄是表單設(shè)計(jì)的重要工具,默認(rèn)包含21個(gè)控件、4個(gè)輔助按鈕。應(yīng)用表單控件工具欄可以很方便地在表單中加入各種對(duì)象,在表單中加入對(duì)象的方法非常簡(jiǎn)單,只要用鼠標(biāo)單擊表單控件工具欄中的某個(gè)控件,然后將鼠標(biāo)移動(dòng)到畫布上按住左鍵拖動(dòng)就能畫出所需要的控件??丶幕静僮魅缦拢?/p>
選定控件用鼠標(biāo)單擊控件可以選定該控件,被選定的控件四周出現(xiàn)8?jìng)€(gè)控制點(diǎn)。
移動(dòng)控件先選定控件,然后按住鼠標(biāo)左健拖動(dòng)到需要的位置上。也可用方向鍵對(duì)控件進(jìn)行移動(dòng)。調(diào)整控件大小先選定控件,然后拖動(dòng)控件四周的某個(gè)控制點(diǎn)可以改變控件的寬度和高度。也可以在按住Shift鍵的同時(shí),用方向鍵對(duì)控件大小進(jìn)行微調(diào)。
復(fù)制控件先選定控件,選擇“編輯|復(fù)制”命令,然后選擇“編輯|粘貼”命令,最后將復(fù)制產(chǎn)生的新控件拖動(dòng)到需要的位置上。
刪除控件選定不需要的控件,然后按Delete鍵或選擇“編輯|剪切”命令。7.4.2表單設(shè)計(jì)器的基本操作
設(shè)計(jì)表單的基本操作:打開表單設(shè)計(jì)器—添加控件并設(shè)置屬性—編寫事件代碼—保存表單—運(yùn)行表單。
例7.1
應(yīng)用表單設(shè)計(jì)器設(shè)計(jì)能顯示紅顏色“歡迎學(xué)習(xí)VFP表單設(shè)計(jì)”功能的表單。
(1)啟動(dòng)表單設(shè)計(jì)器,第一次默認(rèn)表單文件名為Form1,從控件工具欄中選擇基類,向網(wǎng)格畫布上添加三個(gè)控件:標(biāo)簽、命令按鈕、命令按鈕,并將控件布局安排得整齊美觀。如圖7.16所示。圖7.16例題7.1表單
(2)設(shè)置各個(gè)對(duì)象的屬性,詳見表7.3所示。表7.3例題7.1控件屬性設(shè)置
(3)為對(duì)象編寫事件代碼和方法程序,如圖7.17所示。圖7.17事件代碼窗口
Command1的Click事件代碼:雙擊Command1對(duì)象,在代碼窗口中寫入程序代碼,注意:對(duì)象、過(guò)程兩個(gè)列表框中的選項(xiàng)要與具體的對(duì)象和事件相一致。
Command2的Click事件代碼:Thisformrelease或者releaseThisform。
(4)保存表單。表單設(shè)計(jì)(無(wú)論新建或修改)完畢后,可通過(guò)存盤保存在擴(kuò)展名為?.SCX的表單文件和擴(kuò)展名為?.SCT的表單備注文件中。存盤方法有以下幾種:
選擇系統(tǒng)菜單中“文件|保存”命令可保存當(dāng)前設(shè)計(jì)的表單,設(shè)計(jì)器不關(guān)閉。
按組合鍵Ctrl+W。
單擊表單設(shè)計(jì)器窗口的關(guān)閉按鈕或選定系統(tǒng)菜單中“文件|關(guān)閉”命令,若表單為新建或者被修改過(guò),系統(tǒng)會(huì)詢問(wèn)是否保存表單。回答“是”即將表單存盤。若用戶未為表單命名,存盤時(shí)將出現(xiàn)另存為對(duì)話框,以供用戶確定表單文件名。應(yīng)該注意:表單文件不同于表單對(duì)象。表單文件是一個(gè)程序,可包含表單集對(duì)象、表單對(duì)象及各種控件的定義。
(5)運(yùn)行表單。運(yùn)行表單可利用菜單“程序|運(yùn)行”命令,或在命令窗口中用DOFORM命令運(yùn)行表單。例如DOFORM<文件名>。其中表單文件的擴(kuò)展名?.SCX允許省略?;蛘咴诠ぞ邫谏蠁螕簟?”按鈕。但須注意,表單文件及其表單備注文件應(yīng)該同時(shí)存在方能運(yùn)行表單。本例題的運(yùn)行結(jié)果如圖7.18所示。圖7.18例題7.1表單運(yùn)行結(jié)果7.4.3數(shù)據(jù)環(huán)境設(shè)計(jì)器的基本操作
1.打開數(shù)據(jù)環(huán)境設(shè)計(jì)器
在表單設(shè)計(jì)器環(huán)境下,選擇“顯示”菜單中的“數(shù)據(jù)環(huán)境”命令,或者在表單網(wǎng)格畫布上空白處單擊右鍵,在快捷菜單上選擇“數(shù)據(jù)環(huán)境”命令,或者單擊“表單設(shè)計(jì)器”工具欄上的“數(shù)據(jù)環(huán)境”按鈕,都可以打開“數(shù)據(jù)環(huán)境設(shè)計(jì)器”窗口。如圖7.19進(jìn)入數(shù)據(jù)環(huán)境設(shè)計(jì)器環(huán)境,此時(shí),系統(tǒng)菜單欄上將出現(xiàn)“數(shù)據(jù)環(huán)境”菜單。圖7.19添加數(shù)據(jù)環(huán)境
2.向數(shù)據(jù)環(huán)境添加表或視圖
在數(shù)據(jù)環(huán)境設(shè)計(jì)器環(huán)境下,按下列方法向數(shù)據(jù)環(huán)境添加表或視圖:
(1)選擇“數(shù)據(jù)環(huán)境”菜單中的“添加”命令,或右鍵單擊“數(shù)據(jù)環(huán)境設(shè)計(jì)器”上的空白處,然后在彈出的快捷菜單中選擇“添加”命令,打開“添加表或視圖”對(duì)話框,如圖7.20所示。如果數(shù)據(jù)環(huán)境原來(lái)是空的,那么在打開數(shù)據(jù)環(huán)境設(shè)計(jì)器時(shí),該對(duì)話框會(huì)自動(dòng)出現(xiàn)。
(2)選擇要添加的表或視圖并單擊“添加”按鈕。如果單擊“其他”按鈕,將調(diào)出“打開”對(duì)話框,用戶可以從其他驅(qū)動(dòng)器中選擇需要的表或視圖。如果數(shù)據(jù)環(huán)境原來(lái)是空的且沒有打開的數(shù)據(jù)庫(kù),那么在打開數(shù)據(jù)環(huán)境設(shè)計(jì)器時(shí),“打開”對(duì)話框會(huì)自動(dòng)出現(xiàn)。圖7.20添加表或視圖對(duì)話框
3.在數(shù)從數(shù)據(jù)環(huán)境中移去表或視圖
在數(shù)據(jù)環(huán)境設(shè)計(jì)器環(huán)境下,按下列方法從數(shù)據(jù)環(huán)境中移去表或視圖:
(1)在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”窗口中,單擊選擇要移去的表或視圖。
(2)選擇“數(shù)據(jù)環(huán)境”菜單中的“移去”命令。
(3)用鼠標(biāo)右鍵單擊要移去的表或視圖,然后在彈出的快捷菜單中選擇“移去”命令。當(dāng)表從數(shù)據(jù)環(huán)境中移去時(shí),與這個(gè)表有關(guān)的所有關(guān)系也將隨之消失。
4.在數(shù)據(jù)環(huán)境中設(shè)置關(guān)系
如果添加到數(shù)據(jù)環(huán)境的表之間具有在數(shù)據(jù)庫(kù)中設(shè)置的永久關(guān)系,這些關(guān)系也會(huì)自動(dòng)添加到數(shù)據(jù)環(huán)境中。如果表之間沒有永久關(guān)系,可以根據(jù)需要在數(shù)據(jù)環(huán)境設(shè)計(jì)器中為這些表設(shè)置關(guān)系。設(shè)置關(guān)系的方法很簡(jiǎn)單,只需將主表的某個(gè)字段(作為關(guān)聯(lián)表達(dá)式)拖動(dòng)到與子表相匹配的索引標(biāo)記上即可。如果子表上沒有與主表字段相匹配的索引,也可以將主表字段拖動(dòng)到子表的某個(gè)字段上,這時(shí)應(yīng)根據(jù)系統(tǒng)提示確認(rèn)創(chuàng)建索引。要解除表之間的關(guān)系,可以先單擊表示關(guān)系的連線,然后按Del鍵。
5.在數(shù)據(jù)環(huán)境中編輯關(guān)系
關(guān)系是數(shù)據(jù)環(huán)境中的對(duì)象,它有自己的屬性、方法和事件。編輯關(guān)系主要通過(guò)設(shè)置關(guān)系的屬性來(lái)完成。要設(shè)置關(guān)系屬性,可以先單擊表示關(guān)系的連線選定關(guān)系,然后在“屬性”窗口中選擇關(guān)系屬性并設(shè)置。常用的關(guān)系屬性:
RelationalExpr用于指定基于主表的關(guān)聯(lián)表達(dá)式。
ParentAlias用于指明主表的別名。
ChildAlias用于指明子表的別名。
ChildOrder用于指定與關(guān)聯(lián)表達(dá)式相匹配的索引。
OneToManV用于指明關(guān)系是否為一對(duì)多關(guān)系。
6.利用數(shù)據(jù)環(huán)境向表單上拖動(dòng)字段和表
前面講到利用表單控件工具欄將一個(gè)基類控件添加到表單上的方法。在處理數(shù)據(jù)庫(kù)的表單設(shè)計(jì)問(wèn)題上,這種方法比較麻煩,更常用、更簡(jiǎn)便的方法是利用數(shù)據(jù)環(huán)境向表單上拖動(dòng)字段和表,這種方法的好處是省略了設(shè)置控件屬性的步驟。例如:我們要通過(guò)控件來(lái)顯示和修改某字段的數(shù)據(jù),用一個(gè)文本框來(lái)顯示或編輯一個(gè)字段數(shù)據(jù),這時(shí)就需要為該文本框設(shè)置ControlSource屬性。
VisualFoxPro提供了更好的方法,允許用戶從“數(shù)據(jù)環(huán)境設(shè)計(jì)器”窗口、“項(xiàng)目管理器窗口”或“數(shù)據(jù)庫(kù)設(shè)計(jì)器”窗口中直接將字段、表或視圖拖動(dòng)到表單上,系統(tǒng)將自動(dòng)產(chǎn)生相應(yīng)的控件并與字段相聯(lián)系。在默認(rèn)情況下,如果拖動(dòng)的是字符型字段,將自動(dòng)產(chǎn)生文本框控件;如果拖動(dòng)的是備注型字段,將自動(dòng)產(chǎn)生編輯框控件;如果拖動(dòng)的是表或視圖,將自動(dòng)產(chǎn)生表格控件。但是,用戶可以選擇“工具”菜單中的“選項(xiàng)”命令,打開“選項(xiàng)”對(duì)話框,然后在“字段映像”選項(xiàng)卡中修改這種映像關(guān)系。 7.5常用的表單控件及其應(yīng)用
7.5.1常用控件的公共屬性
Name控件的名稱,它是代碼中訪問(wèn)控件的標(biāo)識(shí)(表單或表單集除外)。
FontName字體名。
FontBold字體樣式為粗體。
FontSize字體大小。
FontItalic字體樣式為斜體。
ForeColor前景色。
Height控件的高度。
Width控件的寬度。控件的高度和控件的寬度,也可在設(shè)計(jì)時(shí)通過(guò)鼠標(biāo)拖曳進(jìn)行可視化調(diào)整。
Visible控件是否顯示。
Enabled控件運(yùn)行時(shí)是否有效。如果為?.T.,則表示控件有效,否則運(yùn)行時(shí)控件不可使用。
7.5.2標(biāo)簽(Label)控件
1.標(biāo)簽控件的功能
標(biāo)簽主要用于顯示固定的文本信息。
2.標(biāo)簽控件的常用屬性
Caption指定標(biāo)簽的顯示文本。可以在設(shè)計(jì)時(shí)設(shè)置,也可以在程序運(yùn)行時(shí)設(shè)置或修改。
AutoSizeAutoSise如果為.T.,標(biāo)簽在表單中的大小由Caption屬性中的文本長(zhǎng)度決定,否則其大小由Width和Height屬性決定。
ForeColor設(shè)置標(biāo)題的前景字體顏色。
BackStyle設(shè)置標(biāo)簽的背景是否透明,0為透明,1為不透明,默認(rèn)為不透明。
Name標(biāo)簽對(duì)象的名稱,是程序中訪問(wèn)標(biāo)簽對(duì)象的標(biāo)識(shí)。7.5.3文本框(TextBox)控件
1.文本框控件的功能
用于顯示或接收單行文本信息(不設(shè)置ControlSource屬性),默認(rèn)輸入類型為字符型,最大長(zhǎng)度為256個(gè)字符,用于顯示或編輯對(duì)應(yīng)變量或字段的值(設(shè)置ControlSource屬性為已有變量或字段名)。
2.文本框控件的常用屬性
ControlSource設(shè)置文本框的數(shù)據(jù)來(lái)源。一般情況下,可以利用該屬性為文本框指定一個(gè)字段或內(nèi)存變量。
Value保存文本框的當(dāng)前內(nèi)容,如果沒有為ControlSource屬性指定數(shù)據(jù)源,可以通過(guò)該屬性訪問(wèn)文本框的內(nèi)容。它的初值決定文本框中值的類型。如果為ControlSource屬性指定了數(shù)據(jù)源,該屬性值與ControlSource屬性指定的變量或字段的值相同。
PassWordChar設(shè)置輸入口令時(shí)顯示的字符為“*”。
ReadOnly確定文本框是否為只讀,若為“.T.”,則文本框的值不可修改。7.5.4命令按鈕(CommandButton)控件
1.命令按鈕控件的功能
命令按鈕控件用來(lái)觸發(fā)某個(gè)事件代碼程序,完成特定功能。如鼠標(biāo)單擊、關(guān)閉表單,移動(dòng)記錄指針,打印報(bào)表等。
2.命令按鈕控件的常用屬性
Caption設(shè)置按鈕的顯示標(biāo)題文本。
Enabled確定按鈕是否有效,如果按鈕的屬性Enabled為.F.,單擊該按鈕不會(huì)引發(fā)該按鈕的單擊事件。
對(duì)命令按鈕的使用最重要的是編寫Click事件代碼。
Default命令按鈕的Default屬性默認(rèn)值為.F.,如果該屬性設(shè)置為.T.,在該按鈕所在的表單激活的情況下,按Enter鍵,可以激活該按鈕,并執(zhí)行該按鈕的Click事件代碼。一個(gè)表單只能有一個(gè)按鈕的Default屬性為真。
Cancel命令按鈕的Cancel屬性默認(rèn)值為.F.,如果設(shè)置為.T.,在該按鈕所在的表單激活的情況下,按Esc鍵可以激活該按鈕,并執(zhí)行該按鈕的Click事件代碼。一個(gè)表單只能有一個(gè)按鈕的Cancel屬性為真。
例7.2
設(shè)計(jì)表單計(jì)算并顯示1+2+3+…+100的累加和。
①啟動(dòng)表單設(shè)計(jì)器。
②添加控件并設(shè)置屬性,如圖7.21和表7.4所示。圖7.21例題7.2表單表7.4例題7.2控件屬性設(shè)置圖7.22例題7.2運(yùn)行結(jié)果7.5.5命令按鈕組(CommandGroup)控件
1.命令按鈕組功能
命令按鈕組是包含一組命令按鈕的容器控件,用戶可以單個(gè)或作為一組來(lái)操作其中的按鈕。
2.命令按鈕組的常用屬性
ButtonCount命令按鈕組中命令按鈕的數(shù)目。
Value默認(rèn)情況下,命令按鈕組中的各個(gè)按鈕被自動(dòng)賦予了一個(gè)編號(hào),如1,2,3等,當(dāng)運(yùn)行表單時(shí),一旦用戶單擊了某個(gè)按鈕,則Value將保存該按鈕的編號(hào),于是在程序中通過(guò)檢測(cè)Value的值,就可以為相應(yīng)的按鈕編寫特定的程序代碼。如果在設(shè)計(jì)時(shí),給Value賦予一個(gè)字符型數(shù)據(jù),當(dāng)運(yùn)行表單時(shí),一旦用戶單擊了某個(gè)按鈕,則Value將保存該按鈕的Caption屬性值。
Buttons用于存取命令按鈕組中每個(gè)命令按鈕的數(shù)組,代碼中可以通過(guò)該數(shù)組訪問(wèn)命令按鈕組中的各按鈕。
7.5.6編輯框(EditBox)控件
1.編輯框控件的功能
用于顯示或編輯多行文本信息。編輯框?qū)嶋H上是一個(gè)完整的簡(jiǎn)單字處理器,在編輯框中能夠選擇、剪切、粘貼以及復(fù)制正文,可以實(shí)現(xiàn)自動(dòng)換行,能夠有自己的垂直滾動(dòng)條。
2.編輯框的常用屬性
ControlSource設(shè)置編輯框的數(shù)據(jù)源,一般為數(shù)據(jù)表的備注字段。
Value保存編輯框中的內(nèi)容,可以通過(guò)該屬性來(lái)訪問(wèn)編輯框中的內(nèi)容。
SelText返回用戶在編輯區(qū)內(nèi)選定的文本,如果沒有選定任何文本,則返回空串。
SelLength返回用戶在文本輸入?yún)^(qū)中所選定字符的數(shù)目。
ReadOnly確定用戶是否能修改編輯框中的內(nèi)容。
ScrollBars指定編輯框是否具有滾動(dòng)條,當(dāng)屬性值為0時(shí),編輯框沒有滾動(dòng)條,當(dāng)屬性值為1(默認(rèn)值)時(shí),編輯框包含垂直滾動(dòng)條。7.5.7復(fù)選框(CheckBox)控件
1.復(fù)選框的功能
用于判斷一個(gè)兩值狀態(tài),如真(.T.)或假(.F.)。當(dāng)處于“真”狀態(tài)時(shí),復(fù)選框內(nèi)顯示一個(gè)對(duì)勾,當(dāng)處于“假”狀態(tài)時(shí),復(fù)選框內(nèi)為空白。
2.復(fù)選框的常用屬性
Caption復(fù)選框旁邊的提示文字。
Value用來(lái)指明復(fù)選框的當(dāng)前狀態(tài),當(dāng)設(shè)置?.T.?或1時(shí)表示選中,當(dāng)設(shè)置?.F.?或0時(shí)表示未選中。
ControlSource用于指定復(fù)選框的數(shù)據(jù)源。7.5.8選項(xiàng)按鈕組(OptionGroup)控件
1.選項(xiàng)按鈕組控件的功能
選項(xiàng)按鈕組又稱為單選按鈕組,是包含選項(xiàng)按鈕的一種容器。一個(gè)選項(xiàng)組中往往包含若干個(gè)選項(xiàng)按鈕,但用戶只能從中選擇一個(gè)按鈕。當(dāng)用戶單擊某個(gè)選項(xiàng)按鈕時(shí),該按鈕即成為被選中狀態(tài),而選項(xiàng)組中的其他選項(xiàng)按鈕,不管原來(lái)是什么狀態(tài),都變?yōu)槲催x中狀態(tài),被選中的選項(xiàng)按鈕中會(huì)顯示一個(gè)圓點(diǎn)。
2.選項(xiàng)按鈕組的常用屬性
ButtonCount指定選項(xiàng)組中選項(xiàng)按鈕的數(shù)目。
Value用于指定選項(xiàng)組中哪個(gè)選項(xiàng)按鈕被選中,如果選中第二個(gè),則Value=2。
ControlSource指定選項(xiàng)組數(shù)據(jù)源。
Buttons用于存取選項(xiàng)按鈕組中每個(gè)選項(xiàng)的數(shù)組。
例7.3
復(fù)選框、選項(xiàng)按鈕組控件應(yīng)用示例。本例題的功能是:當(dāng)復(fù)選框選中第一個(gè)時(shí),只能做選項(xiàng)按鈕組中的加、減運(yùn)算;當(dāng)復(fù)選框選中第二個(gè)時(shí),只能做選項(xiàng)按鈕組中的乘、除運(yùn)算。
①添加控件并布局得整齊美觀,如圖7.23所示。
②設(shè)置各個(gè)控件的屬性,如表7.5所示。圖7.23例題7.3表單表7.5例題7.3控件屬性設(shè)置圖7.24例題7.3表單運(yùn)行結(jié)果7.5.9列表框(ListBox)控件
1.列表框的功能
列表框提供一組條目(數(shù)據(jù)項(xiàng)),用戶可以從中選擇一個(gè)或多個(gè)條目,一般情況下,列表框中只顯示其中的若干條目,用戶可以通過(guò)滾動(dòng)條瀏覽其他條目。
2.列表框的常用屬性和方法
RowSource屬性指定列表框的數(shù)據(jù)源。
RowSourceType屬性指明列表框數(shù)據(jù)源的類型。
List屬性用以存取列表框中數(shù)據(jù)條目的字符串?dāng)?shù)組。
ListCount屬性列表框中數(shù)據(jù)條目的數(shù)目。
ColumnCount屬性指定列表框的列數(shù)。
Value屬性返回列表框中被選中的條目。
ControlSource屬性該屬性在列表框中的用法與在其他控件中的用法有所不同,在這里,用戶可以通過(guò)該屬性指定一個(gè)字段或變量用以保存用戶從列表框中選擇的結(jié)果。
Selected屬性該屬性是一個(gè)邏輯型數(shù)組,第N個(gè)數(shù)組元素代表第N個(gè)數(shù)據(jù)項(xiàng)是否為選定狀態(tài)。
MultiSelect屬性指定用戶能否在列表框控件內(nèi)進(jìn)行多重選定。
AddItem方法當(dāng)RowsourceType屬性為0時(shí),給列表框添加一項(xiàng)。
RemoveItem方法當(dāng)RowsourceType屬性為0時(shí),從列表框中刪除一項(xiàng)。
例7.4
設(shè)計(jì)一個(gè)表單,要求表單運(yùn)行時(shí),List1列表框顯示jbqk表內(nèi)的所有字段內(nèi)容,單擊“移動(dòng)”按鈕后,List1中被選擇的字段加入到List2中。操作步驟如下:
①按圖7.25所示在表單中加入兩個(gè)列表框、兩個(gè)標(biāo)簽、一個(gè)命令按鈕。
②屬性設(shè)置(省略)。
③編寫事件代碼。圖7.25例題7.4表單在表單的init事件中加入如下代碼:
Thisform.List1.Value=0
Thisform.List2.Value=0
USEjbqk
FORi=1TOfcount()&&fcount()是返回表的字段數(shù)函數(shù)
Thisform.List1.Additem(Fields(I))
ENDFOR
USE
Command1的Click事件中加入如下代碼:
Thisform.List2.Addlistitem(Thisform.List1.Listitem[Thisform.List1.Listitemid])
Thisform.List1.Removeitem[Thisform.List1.Value]
(4)保存并運(yùn)行表單,如圖7.26所示。圖7.26例題7.4表單運(yùn)行結(jié)果7.5.10組合框(ComboBox)控件
1.組合框控件的功能
組合框與列表框類似,也是用于提供一組條目供用戶從中選擇。組合框和列表框的主要區(qū)別在于:
(1)對(duì)于組合框來(lái)說(shuō),通常只有一個(gè)條目是可見的。用戶可以單擊組合框上的下拉箭頭按鈕打開條目列表,以便從中選擇。
(2)組合框不提供多重選擇的功能,沒有MultiSelect屬性。
(3)組合框有兩種形式:下拉組合框(Style屬性為0)和下拉列表框(Style屬性為1)。對(duì)于下拉組合框,用戶既可以從列表中選擇,也可以在編輯區(qū)內(nèi)輸入。對(duì)于下拉列表框,用戶只能從列表中選擇。
2.組合框控件的主要屬性
RowSource組合框中數(shù)據(jù)的來(lái)源。
RowSourceType組合框中數(shù)據(jù)源的類型。
Style指定組合框是下拉組合框還是下拉列表框。0表示下拉組合框,1表示下拉列表框。
ControlSource接受用戶所選擇的字段或變量,僅在輸入數(shù)據(jù)時(shí)使用。
ColumnCount指定組合框包含的列數(shù)。
Value存放用戶選擇的結(jié)果??梢允菙?shù)值型(默認(rèn))或字符型。7.5.11表格(Grid)控件
1.表格控件的功能
表格控件用于瀏覽或編輯多行多列數(shù)據(jù)。
2.表格控件常用屬性
RecordSourceType指明表格數(shù)據(jù)源的類型。它們的取值及含義:0為表,1為別名,2為提示,3為查詢文件,4為SQL語(yǔ)句說(shuō)明。
RecordSource指定數(shù)據(jù)的來(lái)源。
ColumnCount指定表格的列數(shù)。
LinkMaster用于指定表格控件中所顯示的子表的父表名稱。
ChildOrder指定子表的索引。
RelationalExpr確定基于主表字段的關(guān)聯(lián)表達(dá)式。
AllowAddNew若為真,則運(yùn)行時(shí)允許添加新記錄;否則不能添加新記錄。
3.常用的列屬性
ControlSource指定在列中顯示的數(shù)據(jù)源。
CurrentControl指定列對(duì)象中顯示和接收數(shù)據(jù)的控件。
4.使用表格生成器設(shè)置表格的屬性
用表格生成器能夠交互式地,快速地設(shè)置表格的有關(guān)屬性,使用表格生成器的步驟是:先在控件工具欄上選擇表格控件,在表單上添加一個(gè)表格控件,用鼠標(biāo)右鍵單擊表格,在彈出的快捷菜單中選擇“生成器”命令,打開“表格生成器”對(duì)話框,如圖7.27所示。然后在“表格生成器”對(duì)話框中選擇數(shù)據(jù)庫(kù)和表,并選擇在表格中顯示的字段,最后單擊“確定”?!氨砀裆善鳌睂?duì)話框包括四個(gè)選項(xiàng)卡,其作用如下:
表格項(xiàng)指定在表格中需要顯示的字段。
樣式指定表格的樣式,如標(biāo)準(zhǔn)式、專業(yè)式、賬務(wù)式。
布局指定各列的標(biāo)題和控件的類型、調(diào)整各列列寬。
關(guān)系設(shè)置一對(duì)多關(guān)系,指明父表的關(guān)鍵字與子表的相關(guān)索引。圖7.27表格生成器窗口
例7.5
設(shè)計(jì)如圖7.28所示的表單,要求在組合框中選擇一個(gè)系名稱,在表格中能按系名稱瀏覽學(xué)生信息。這是組合框和表格控件的應(yīng)用實(shí)例。設(shè)計(jì)步驟如下:圖7.28例題7.5表單①打開表單設(shè)計(jì)器,添加一個(gè)組合框、一個(gè)表格控件。
②設(shè)置數(shù)據(jù)環(huán)境:在表單設(shè)計(jì)器的網(wǎng)格畫布上的空白處單擊鼠標(biāo)右鍵,在快捷菜單中單擊“數(shù)據(jù)環(huán)境”,打開數(shù)據(jù)環(huán)境設(shè)計(jì)器,在數(shù)據(jù)環(huán)境設(shè)計(jì)器上單擊鼠標(biāo)右鍵,在快捷菜單中單擊“添加”按鈕,如圖7.29所示。把系別表(xibie(系別,專業(yè),人數(shù)))作為父表,學(xué)生表(xuesheng(系別,姓名,性別,入學(xué)成績(jī)))作為子表加入數(shù)據(jù)環(huán)境,并在“系別”字段之間建立一對(duì)多關(guān)系。圖7.29例題7.5數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口③打開表格生成器,在“表格項(xiàng)”選項(xiàng)卡中設(shè)置要顯示的字段,在“關(guān)系”選項(xiàng)卡中設(shè)置父表中的關(guān)鍵字段為:xibie.系別,子表中的相關(guān)素引為:xuesheng.系別。
④組合框?qū)傩栽O(shè)置。利用組合框生成器設(shè)置組合框,選用字段是xibie.系別。
⑤運(yùn)行表單,在列表框中選擇一個(gè)系別,表格中就只顯示該系的學(xué)生信息。如圖7.30所示。圖7.30例題7.5運(yùn)行結(jié)果7.5.12計(jì)時(shí)器(Timer)、頁(yè)框(PageFrame)、圖像(Image)和微調(diào)控件(Spinner)
1.計(jì)時(shí)器控件
計(jì)時(shí)器控件與用戶的操作是獨(dú)立的。它只對(duì)時(shí)間作出反應(yīng),以一定的間隔重復(fù)地執(zhí)行某種操作。
(1)計(jì)時(shí)器控件有兩個(gè)主要屬性。
Enabled若想讓計(jì)時(shí)器在表單加載時(shí)就開始工作,應(yīng)將這個(gè)屬性設(shè)置為“真”(.T.),否則將這個(gè)屬性設(shè)置為“假”(.F.)。也可以選擇一個(gè)外部事件(如命令按鈕Click事件)啟動(dòng)計(jì)時(shí)器操作。
Interval事件之間的時(shí)間間隔,以毫秒計(jì)算。
(2)計(jì)時(shí)器的事件與響應(yīng)。
當(dāng)一個(gè)計(jì)時(shí)器的時(shí)間間隔(由Interval屬性值規(guī)定)過(guò)去后,VisualFoxPro將產(chǎn)生一個(gè)Timer事件。
2.頁(yè)框(PageFrame)控件
頁(yè)框(PageFrame)控件是一個(gè)包含頁(yè)面的控件,而它包含的頁(yè)面又能包含其他控件,頁(yè)框必須附加于表單之上。頁(yè)框定義了它所包含頁(yè)面的諸多特性,如它們的尺寸、邊框樣式、哪一頁(yè)為當(dāng)前活動(dòng)頁(yè)等。頁(yè)框是包含頁(yè)面的容器對(duì)象(頁(yè)面又叫作選項(xiàng)卡)。一個(gè)頁(yè)面控件可包含相互獨(dú)立的控件。所以,頁(yè)框的功能可以擴(kuò)展表單的表面面積,增強(qiáng)表單的功能。頁(yè)面上的每一個(gè)控件均有各自的屬性、事件和方法。一個(gè)表單中可包含一個(gè)或多個(gè)頁(yè)框,每個(gè)頁(yè)框又可包含多個(gè)頁(yè)面。一個(gè)表單中只有一個(gè)活動(dòng)頁(yè)面。頁(yè)框控件的主要屬性:
ActivePage當(dāng)前活動(dòng)頁(yè)面的值。
PageCount頁(yè)框的計(jì)數(shù)屬性,確定頁(yè)框中的頁(yè)面數(shù)。默認(rèn)值為2。
Tabs是否顯示頁(yè)面。默認(rèn)值為.T.(顯示頁(yè)面)。
TabStretch決定頁(yè)面標(biāo)題是否可多行顯示。默認(rèn)值為1(單行顯示標(biāo)題)。
TabStyle決定頁(yè)面的顯示是兩端對(duì)齊還是非兩端對(duì)齊。
Picture在頁(yè)框上需要顯示的圖片(.Bmp文件)。
BorderStyle決定圖像是否具有可見的邊框。
3.圖像(Image)控件
圖像(Image)控件是一種圖形控件,可以顯示擴(kuò)展名為?.BMP的圖形文件,但不能直接修改圖片。圖像控件同樣具有屬性、事件和方法,因此可以響應(yīng)事件,并可以在運(yùn)行時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人產(chǎn)權(quán)房屋買賣帶社區(qū)活動(dòng)組織服務(wù)合同3篇
- 2024旅游業(yè)務(wù)運(yùn)營(yíng)與管理合同
- 2025版新能源發(fā)電設(shè)備檢測(cè)與認(rèn)證委托合同范本2篇
- 二零二五年度房地產(chǎn)經(jīng)紀(jì)實(shí)務(wù)培訓(xùn)第二十六講學(xué)員權(quán)益保障合同3篇
- 2024智能家居系統(tǒng)開發(fā)與集成合同
- 2024版宅基地租賃協(xié)議
- 二零二五年度文化傳媒總代理協(xié)議書2篇
- 2024政基礎(chǔ)設(shè)施限額以下小型工程
- 2024年雞苗訂購(gòu)合同模板
- 2025年度車貸居間服務(wù)與車輛貸款信用修復(fù)合同3篇
- 幼兒園工作總結(jié)匯報(bào)課件
- 《民用爆炸物品安全管理?xiàng)l例》課件
- 移動(dòng)通信室內(nèi)覆蓋工程施工技術(shù)
- 生產(chǎn)組織供應(yīng)能力說(shuō)明
- DL-T 1476-2023 電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 通信安全員ABC證報(bào)名考試題庫(kù)及答案
- 開放系統(tǒng)10861《理工英語(yǔ)(4)》期末機(jī)考真題及答案(第103套)
- 思想道德與法治測(cè)試三考試附有答案
- 《中華民族大團(tuán)結(jié)》(初中)-第7課-共同創(chuàng)造科學(xué)成就-教案
- 《短視頻拍攝與制作》課件-3短視頻拍攝的三大技巧
- (高清版)DZT 0399-2022 礦山資源儲(chǔ)量管理規(guī)范
評(píng)論
0/150
提交評(píng)論