版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
表單設(shè)計(jì)與應(yīng)用表單的建立與運(yùn)行
表單的操作
常用表單控件
表單的應(yīng)用
9.1
表單的建立與運(yùn)行
表單(Form)是VFP的特色所在,內(nèi)容豐富,功能強(qiáng)大,是開發(fā)信息系統(tǒng)的強(qiáng)有力工具。所謂表單,實(shí)際上是一種容器,其中可以加入VFP中的很多其他對(duì)象,應(yīng)用系統(tǒng)通常使用表單作為數(shù)據(jù)操作的一個(gè)窗口,用戶通過表單對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢、插入、刪除、統(tǒng)計(jì)及其他操作。表單設(shè)計(jì)的好壞,對(duì)整個(gè)應(yīng)用系統(tǒng)的優(yōu)劣有很大關(guān)系。VFP中提供了強(qiáng)有力的表單設(shè)計(jì)手段,用戶通過可視化的設(shè)計(jì)方法,能夠方便地定義表單中的各種對(duì)象、對(duì)象的屬性、對(duì)象的方法。學(xué)習(xí)掌握了表單的設(shè)計(jì)方法后,將對(duì)VFP的功能、開發(fā)方法以及面向?qū)ο蟮姆椒ㄓ幸粋€(gè)更深刻的認(rèn)識(shí)
圖
9-1表單設(shè)計(jì)窗
圖
9-2表單運(yùn)行窗口示例
9.1.1用表單設(shè)計(jì)器建立表單
從OOP的觀點(diǎn)考察,表單是一種容器對(duì)象,它由VFP的基類Form派生而成,并以獨(dú)立的文件形式存儲(chǔ)。所謂表單設(shè)計(jì),實(shí)際上就是對(duì)這個(gè)容器對(duì)象本身及其所包含的對(duì)象的設(shè)計(jì)
1.
表單設(shè)計(jì)窗口簡(jiǎn)介如圖9-3,表單設(shè)計(jì)窗口的最上面為菜單欄,中心區(qū)域?yàn)橐粋€(gè)表單,還可能有一個(gè)屬性設(shè)置窗口,一個(gè)控件工具框
圖9-3表單設(shè)計(jì)窗口
(1)
菜單欄進(jìn)入表單設(shè)計(jì)窗口后,菜單欄共有“文件”、“編輯”、“顯示”、“格式”、“表單”、“工具”、“程序”、“幫助”等九個(gè)菜單欄選項(xiàng),用鼠標(biāo)單擊每一個(gè)菜單欄選項(xiàng)都會(huì)彈出一個(gè)下拉式菜單,每個(gè)下拉式菜單又包含了一些菜單項(xiàng)
(2)
控件工具框VFP用可視化的方法為表單設(shè)計(jì)者提供的一個(gè)可使用的“類”清單,設(shè)計(jì)者可以用鼠標(biāo)選中框中的類并用拖放的方法在表單中派生各種對(duì)象類以類庫(kù)文件的形式存儲(chǔ),并且一個(gè)類庫(kù)文件可以存儲(chǔ)多個(gè)類,控件工具欄在任何時(shí)候只顯示一個(gè)類庫(kù)文件所包含的類及一個(gè)類庫(kù)文件按扭,應(yīng)用該按扭可以指定類庫(kù)文件通常情況下,控件工具欄中顯示的是VFP中的基類,設(shè)計(jì)者可以使用類庫(kù)文件選擇按鈕指定自己所需要的類文件如果控件工具欄沒有出現(xiàn)時(shí),可以使用以下步驟恢復(fù):在VFP的菜單欄中,選擇“顯示”菜單中的“工具”選項(xiàng),并在下拉列表框中選中“表單控件”
圖9-4表單控件工具欄
用新建表單文件和打開表單文件兩種方法都可以進(jìn)入表單設(shè)計(jì)窗口,具體操作都是對(duì)VFP的菜單欄進(jìn)行的操作:方法一:選擇“文件”菜單中“新建”選項(xiàng),指定文件類型為“表單”,并單擊“新建表單”按扭。方法二:選擇“文件”菜單中“打開”選項(xiàng),指定文件類型為“表單”,并在文件打開對(duì)話框中指定對(duì)應(yīng)的表單文件
2.表單控件工具框的初步認(rèn)識(shí)
表單控件工具框?yàn)槲覀兲峁┝薞FP中的各種控件。所謂控件,實(shí)際上就是各種派生對(duì)象的“父類”。
(1)
怎樣在表單中加入一個(gè)對(duì)象首先將鼠標(biāo)在控件工具框移動(dòng)到所需要的控件,并單擊鼠標(biāo)主按扭,然后到表單的相應(yīng)位置拖放出一個(gè)圖形,就在表單中加入了一個(gè)繼承了所選控件的全部屬性和方法程序的對(duì)象
(2)
怎樣選擇自己所需要的控件集如果所需要的控件不在當(dāng)前表單控件工具框中,就要重新指定工具框?qū)?yīng)“類庫(kù)”文件:用鼠標(biāo)指向表單控件工具框中“查看類”的命令按扭,單擊鼠標(biāo)主按扭,選擇“添加”,在打開的對(duì)話框中選擇所需要的類文件。在上述步驟中選擇“常用”可以恢復(fù)標(biāo)準(zhǔn)控件(基類)。
(3)常用控件的初步認(rèn)識(shí)常用控件就是VFP為開發(fā)者提供的基類
標(biāo)簽控件(LABEL):不能綁定數(shù)據(jù),只能起提示作用。在圖9-2所示的表單中,編號(hào)是一個(gè)基于標(biāo)簽類的對(duì)象,作用是提示隨后的數(shù)據(jù)是教師的編號(hào)。命令按鈕(command):在應(yīng)用系統(tǒng)中,命令按鈕是交互的主要工具,人們通過按鈕向應(yīng)用系統(tǒng)發(fā)布操作命令,按鈕通過執(zhí)行其方法程序響應(yīng)人們的命令。
命令組(commandgroup):關(guān)于命令的容器,圖9-2所示的表單中,右側(cè)就是一個(gè)命令按扭組,由“表首”、“表尾”、“向前”、“向后”、“添加”、“刪除“、“退出”等7個(gè)命令按鈕組成。選項(xiàng)按鈕組(optiongroup):選項(xiàng)按鈕即一般所稱的單選按鈕,是構(gòu)成交互式界面的有力工具。
文本框(textbox):文本框是一種基本控件,它可以捆綁關(guān)系數(shù)據(jù)表的一個(gè)非備注型字段數(shù)據(jù),從而實(shí)現(xiàn)通過文本框?qū)ο髮?duì)數(shù)據(jù)表的字段增加和修改的目的。
編輯框(editbox):編輯框可以綁定一個(gè)關(guān)系表中的備注型字段數(shù)據(jù)。組合框(combobox):組合框兼有列表框和文本框的功能。它有下拉組合框和下拉列表框兩種形式。組合框可以綁定數(shù)據(jù)表中的一個(gè)或多個(gè)字段。列表框(listbox):與組合框類似。
復(fù)選框(checkbox):復(fù)選框也是構(gòu)成交互式操作界面的有力工具。復(fù)選和選項(xiàng)按鈕的的差別是:服選按鈕可以兼選,而選項(xiàng)按鈕只能單選。
微調(diào)按鈕(spinner):用戶可以使用微調(diào)按鈕對(duì)對(duì)其所綁定的整數(shù)型字段數(shù)據(jù)進(jìn)行維護(hù)。表格(grid):表單中一種功能強(qiáng)大的控件??梢越壎ㄖ付ǖ臄?shù)據(jù)表,從而實(shí)現(xiàn)通過表格對(duì)象對(duì)數(shù)據(jù)表的進(jìn)行維護(hù)的目的
計(jì)時(shí)器(timer):可以定時(shí)執(zhí)行某種操作
3.表單中的對(duì)象設(shè)計(jì)所謂對(duì)象設(shè)計(jì),實(shí)際上一般是設(shè)計(jì)表單中的對(duì)象。(1)
向表單中加入對(duì)象把對(duì)象的“父類”加入到表單控件工具框,如果對(duì)象的父類已在當(dāng)前的表單工具框中就省略這個(gè)步驟。從表單控件工具框中選定所需要的控件,并將其派生對(duì)象加入到表單中。加入表單后該對(duì)象將繼承所選擇控件的全部特征,名稱以對(duì)象所屬的“基類”(不是“父類”)名加上數(shù)字編號(hào)組成,對(duì)象名稱可以重新設(shè)定。(2)
刪除表單中的對(duì)象把鼠標(biāo)移到要?jiǎng)h除的對(duì)象上,單擊輔按扭,選擇“剪切”,即可刪除這個(gè)對(duì)象。注意,如果是由一個(gè)容器控件(如自定義的命令組子類)派生而成的一個(gè)容器對(duì)象,則不能刪除該容器對(duì)象中的某成員對(duì)象,只能刪除容器整體
(3)
在表單中進(jìn)行對(duì)象屬性設(shè)定將鼠標(biāo)移到要設(shè)置屬性的對(duì)象上,單擊輔按扭,選擇“屬性”,就進(jìn)入屬性設(shè)置窗口(見圖9-5).圖9-5(4)
為表單中的對(duì)象設(shè)計(jì)代碼將鼠標(biāo)移到要添加代碼的對(duì)象上,單擊輔按扭,選擇“代碼”,出現(xiàn)代碼設(shè)計(jì)窗口,選擇要設(shè)計(jì)代碼的事件,然后在代碼框中編寫代碼。為表單對(duì)象設(shè)計(jì)的事件代碼要注意兩點(diǎn):事件代碼僅僅是一個(gè)過程,一般不要把諸如文件的打開,關(guān)閉等操作都寫在事件代碼中,這些工作有其他過程完成;為一個(gè)對(duì)象設(shè)計(jì)了事件代碼后,該對(duì)象從其父類那里繼承的同事件代碼就永遠(yuǎn)無法活躍了,如果只是對(duì)原來的代碼增加一些功能,應(yīng)該在新設(shè)計(jì)的代碼中加入語(yǔ)句:
DoDefault()
1.
表單設(shè)計(jì)的基本步驟(1)進(jìn)行規(guī)劃,最好畫一張草圖,在上面標(biāo)出各對(duì)象的位置、標(biāo)題、所屬父類、對(duì)象的大致作用、表單中要使用的數(shù)據(jù)表、數(shù)據(jù)表間的對(duì)應(yīng)關(guān)系以及對(duì)象間的相互協(xié)調(diào)與支持;(2)進(jìn)入表單設(shè)計(jì)窗口
(3)如果表單要使用到數(shù)據(jù)表,需要首先為表單建立“數(shù)據(jù)環(huán)境”。數(shù)據(jù)環(huán)境也是VFP中的一種對(duì)象,建立數(shù)據(jù)環(huán)境的步驟是:將鼠標(biāo)移到表單的任一空白位置(不能指向任何對(duì)象),單擊輔按扭,選擇“數(shù)據(jù)環(huán)境”選擇與表單對(duì)應(yīng)的數(shù)據(jù)表,單擊“添加”按鈕,選中的數(shù)據(jù)表會(huì)加入到數(shù)據(jù)環(huán)境設(shè)計(jì)器中。如果要加入多個(gè)表,應(yīng)重復(fù)這一過程,然后單擊“關(guān)閉”按鈕退出數(shù)據(jù)表的加入操作在數(shù)據(jù)環(huán)境設(shè)計(jì)器中建立表間的關(guān)聯(lián)關(guān)系
(4)在表單中加入其他對(duì)象并進(jìn)行布局排列:表單標(biāo)題放在整個(gè)表單的上方命令按鈕放在下面或右側(cè)文本框?qū)ο笠c其對(duì)應(yīng)的標(biāo)簽對(duì)象放在一起布局的目的是為了美觀、清晰。表單中的對(duì)象是可以用鼠標(biāo)直接拖動(dòng)的
(5)
建立對(duì)象與數(shù)據(jù)表的對(duì)應(yīng)關(guān)系。建立這類對(duì)象與數(shù)據(jù)表字段的關(guān)聯(lián)的方法是:文本框、編輯框、列表框?qū)τ谶@些非容器類的對(duì)象,設(shè)定其與數(shù)據(jù)表對(duì)應(yīng)字段的關(guān)聯(lián)時(shí),只需要將其ControlSource屬性設(shè)置為數(shù)據(jù)表的對(duì)應(yīng)字段名即可。在表單中加入了數(shù)據(jù)環(huán)境對(duì)象后,這些對(duì)象的ControlSource屬性對(duì)應(yīng)一個(gè)下拉列表框,從列表項(xiàng)選擇一個(gè)字段與對(duì)象關(guān)聯(lián)。表格表格是一種容器對(duì)象,其成員對(duì)象是列,默認(rèn)的對(duì)象名是Column1、Column2等,而列也是一個(gè)容器對(duì)象,其成員對(duì)象是Header和Text表格的設(shè)置比較麻煩,可以使用生成器:1)將鼠標(biāo)移到表格對(duì)象上,單擊鼠標(biāo)輔按扭,選擇“生成器”
2)選擇“表格項(xiàng)”選項(xiàng)卡,在對(duì)應(yīng)的窗口選擇表格數(shù)據(jù)表、數(shù)據(jù)字段;3)選擇“樣式”選項(xiàng)卡(會(huì)出現(xiàn)新界面,圖從略),選擇喜歡的表格樣式,一般采用系統(tǒng)默認(rèn)狀態(tài)即可;4)選擇“布局”選項(xiàng)卡(會(huì)出現(xiàn)新界面,圖從略),可以調(diào)整表格布局;5)如果表格對(duì)應(yīng)多個(gè)表,需要在“關(guān)系”選項(xiàng)卡中設(shè)置數(shù)據(jù)表之間的對(duì)應(yīng)關(guān)系在上述4個(gè)選項(xiàng)卡中,只有“表格項(xiàng)”選項(xiàng)卡是必須設(shè)置的,“關(guān)系”選項(xiàng)只有在表格對(duì)應(yīng)多個(gè)數(shù)據(jù)表時(shí)才是必須設(shè)置的,而“樣式”與“布局”一般無需設(shè)置,保持其默認(rèn)設(shè)置就可以。(6)修改表單中對(duì)象的其他屬性,如名稱(Name)、標(biāo)題(Caption)以及字體、顏色等等;要修改對(duì)象的哪些屬性,既與應(yīng)用目的有關(guān),也與對(duì)象所屬的基類有關(guān),開發(fā)者只有在熟悉對(duì)象的每種屬性含義后,才能確定該重新設(shè)置哪些屬性,對(duì)哪些屬性保持其從父類那里獲得的繼承值。本章第3節(jié),會(huì)專門討論這個(gè)問題。(7)設(shè)計(jì)對(duì)象代碼(8)
運(yùn)行、修改直到滿意為止
(9)存盤,退出
9.1.2用表單向?qū)Ы⒈韱?/p>
VFP中有兩個(gè)表單向?qū)?,各種向?qū)⒌谋韱卧湍軌蛲瓿桑罕韱蜗驅(qū)В‵ormWizard):整個(gè)表單針對(duì)一個(gè)數(shù)據(jù)表進(jìn)行諸如查詢、修改、插入、刪除等操作;一對(duì)多表單向?qū)В∣ne-To-ManyFormWizard):整個(gè)表單針對(duì)兩個(gè)數(shù)據(jù)表,而且這兩個(gè)數(shù)據(jù)表間存在一對(duì)多的關(guān)系
1.用表單向?qū)Ы⒁粋€(gè)數(shù)據(jù)表的操作表單
【例9-3】設(shè)計(jì)圖9-2所示的表單在VFP菜單欄中,選擇“文件”菜單欄中的“新建”選項(xiàng),指定文件類型為“表單”,單擊“向?qū)А卑磁?,然后選擇“FormWizard”
圖9-8在圖9-8所示的界面中,打開數(shù)據(jù)表選擇對(duì)話框,指定數(shù)據(jù)表為“reader”,并使用圖標(biāo)為向右的雙尖頭按鈕選擇全部字段,然后單擊“Next”。如圖9-9所示
圖9-9對(duì)圖9-9所示界面一般不要重新選擇,默認(rèn)值就可以,單擊“Next,出現(xiàn)圖9-10圖9-10如果希望在表單操作中數(shù)據(jù)表記錄按一定順序呈現(xiàn)在表單上,可以在這里選擇一個(gè)或多個(gè)排序字段,然后單擊“Next,如圖9-11圖9-11在圖9-11所示的界面中,選擇選項(xiàng)按鈕為“Saveanfrunform”然后單擊“finish”,出現(xiàn)“另存為”對(duì)話框
指定表單的存儲(chǔ)目錄和文件名,單擊“保存”,系統(tǒng)將由向?qū)傻谋韱我灾付ǖ奈募鎯?chǔ)到了指定位置,并運(yùn)行這個(gè)表單.圖9-12至此其實(shí)已完成表單的基本設(shè)計(jì)過程,但這個(gè)表單和題目要求形式上還不完全相同:沒有一個(gè)標(biāo)簽對(duì)象說明表單的標(biāo)題、表單的背景色不圖、按鈕組也不同,還需要對(duì)這個(gè)表單進(jìn)行修改:在VFP的菜單欄中,選擇“文件”菜單中“打開”選項(xiàng),指定文件類型為“表單”,并指定存儲(chǔ)目錄與文件名,進(jìn)入表單設(shè)計(jì)窗口刪除表單上的命令組對(duì)象,右側(cè)加入一個(gè)根據(jù)用戶子類Command_vcr派生的命令組重新按表9-2設(shè)置表單中各對(duì)象的屬性,并將表單的BackColor屬性設(shè)置為192,192,192保存2.用一對(duì)多表單向?qū)Ы蓚€(gè)數(shù)據(jù)表的操作表單
【例9-4】建立一個(gè)表單,查詢每位讀者借閱圖書情況
在數(shù)據(jù)庫(kù)“book”中,有兩個(gè)數(shù)據(jù)表:“reader”和“brower”,兩者是一對(duì)多的關(guān)系,reader表作為父表,brower表作為子表。所以,本例可以使用建立一對(duì)多表單向?qū)瓿伞2僮鞑襟E如下:
在VFP菜單欄中,選擇“文件”菜單中的“新建”選項(xiàng),指定文件類型為“表單”,選擇“表單向?qū)А敝械摹癘ne-to-ManyForomWizard”,進(jìn)入圖9-13所示的界面
圖9-13指定“reader”作為父表,并把表中的6個(gè)字段全部移到“SelectedFields”框中,單擊“Next”。選擇“brower”作為子表,并把表中的4個(gè)字段全部移到“SelectedFields”框中,單擊“Next”。建立兩個(gè)表間的關(guān)聯(lián)關(guān)系為“dzbh”對(duì)“dzbh”。本例中兩個(gè)數(shù)據(jù)表中的關(guān)聯(lián)字段名稱相同,系統(tǒng)以默認(rèn)值顯示該關(guān)聯(lián)關(guān)系,但如果兩個(gè)表中的關(guān)聯(lián)字段名不相同時(shí),系統(tǒng)不會(huì)有默認(rèn)指定,要由用戶確定。關(guān)聯(lián)關(guān)系與關(guān)聯(lián)字段請(qǐng)參考“數(shù)據(jù)庫(kù)的基本操作”一章的有關(guān)部分。單擊“Next”。
選擇表單樣式,這和“FormWizard”中的對(duì)應(yīng)部分一樣,一般保持默認(rèn)值即可,單擊“Next”。選擇排序字段,這和建立“FormWizard”中的對(duì)應(yīng)部分一樣,應(yīng)根據(jù)情況選擇,本例中不選擇排序字段。單擊“Next“。
最后一步,選擇選項(xiàng)按鈕為“Saveandrunform”,指定表單存儲(chǔ)目錄與文件名,單擊“finish”,出現(xiàn)如圖9-14圖9-149.1.3表單的運(yùn)行
有三種方法可以運(yùn)行表單:
DOFORM[路徑]<表單名>在表單設(shè)計(jì)窗口,選擇菜單欄中的“表單”菜單中的“運(yùn)行”,或直接單擊工具欄中的紅色驚嘆號(hào)。
在項(xiàng)目管理器中,選中“文檔”選項(xiàng)卡并指定要運(yùn)行的表單,單擊“運(yùn)行”按扭
9.2表單的操作
9.2.1表單的屬性
表單作為一個(gè)對(duì)象,當(dāng)然也和其他對(duì)象一樣具有屬性、可以識(shí)別的事件以及事件響應(yīng)程序,這一節(jié)先討論表單中使用者應(yīng)重點(diǎn)關(guān)注的屬性,下一節(jié)討論表單的事件和事件代碼
AlwaysOnTop——控制表單是否總是處在其他打開窗口之上,默認(rèn)值為“假”(.F.)
AutoCenter——表單初始化時(shí)是否讓表單自動(dòng)地在VFP主窗口中居中,默認(rèn)值為“假”(.F.)
BackColor——決定表單窗口的顏色,默認(rèn)值為255,255,255BorderStyle——決定表單是否沒有邊框,還是具有單線邊框、雙線邊框或系統(tǒng)邊框。如果BorderStyle為3—
可調(diào)邊框,用戶就能重新改變表單大小,默認(rèn)值為3Caption——決定表單標(biāo)題欄顯示的文本,默認(rèn)值為Form1Closable——控制用戶是否能通過雙擊“關(guān)閉”框來關(guān)閉表單,默認(rèn)值為“真”(.T.)DataSession——控制表單或表單集里的表是否能在可全局訪問的工作區(qū)中打開,或僅能在表單或表單集所屬的私有工作區(qū)內(nèi)打開,默認(rèn)值為1MaxButton——控制表單是否具有最大化按鈕,默認(rèn)值為真(.T.)
MinButton——控制表單是否具有最小化按鈕,默認(rèn)值為真(.T.)Movable——控制表單是否能移動(dòng)到屏幕的新位置,默認(rèn)值為真(.T.)
ScaleMode——控制對(duì)象的尺寸和位置屬性的度量單位是foxels還是像素,由“選項(xiàng)”對(duì)話框中的設(shè)置決定Scrollbars——控制表單所具有的滾動(dòng)條類型,默認(rèn)值為0-無TitleBar——控制標(biāo)題欄是否顯示在表單的頂部,默認(rèn)值為1-打開ShowWindow——控制表單是否在屏幕中、懸浮在頂層表單中或作為頂層表單出現(xiàn),默認(rèn)值為0-在屏幕中WindowState——控制表單是否最小化、最大化還是正常狀態(tài),默認(rèn)值為0-普通WindowType——控制表單是否非模式表單(默認(rèn))還是模式表單。如果表單是模式表單,用戶在訪問應(yīng)用程序用戶界面中任何其他單元前必須關(guān)閉這個(gè)表單,默認(rèn)值為0-無模式9.2.2表單的事件與方法
表單可以響應(yīng)40多個(gè)事件和方法,常用的有
:Init事件:創(chuàng)建表單時(shí)觸發(fā)該事件,從而執(zhí)行為該事件編寫的代碼。Init代碼通常用來完成一些關(guān)于表單的初始化工作。Destory:釋放表單時(shí)觸發(fā)該事件,該方法代碼通常用來進(jìn)行文件關(guān)閉,釋放內(nèi)存變量等工作。Show和Hide是一對(duì)方法,Show使表單可見,而Hide則是隱藏表單。注意,如果使用Show()格式調(diào)用該方法,則只是顯示一次表單,要希望表單顯示并停留在屏幕上,應(yīng)該使用Show(1)格式調(diào)用該方法。另外,Hide方法只是在屏幕上隱藏表單,并沒有從內(nèi)存中釋放表單,隱藏后的表單依然可以通過調(diào)用Show方法恢復(fù)顯示
Release方法從內(nèi)存中釋放表單。注意Release方法與Destory的區(qū)別,Destory方法是由表單釋放事件而觸發(fā)的方法,而Release方法則是主動(dòng)釋放表單,可以說Release是Destory的觸發(fā)器,由于Release方法的實(shí)行而導(dǎo)致表單的釋放,從而引發(fā)表單釋放事件,并因此觸發(fā)Destory方法的運(yùn)行。Refresh方法刷新表單數(shù)據(jù)。當(dāng)表單中各種對(duì)象所對(duì)應(yīng)的數(shù)據(jù)發(fā)生改變時(shí),有時(shí)并不自動(dòng)的反映在表單界面上,需要使用
Refresh刷新,才能顯示最新數(shù)據(jù)。如用一個(gè)文本框關(guān)聯(lián)一個(gè)數(shù)據(jù)表字段,當(dāng)數(shù)據(jù)表記錄指針移動(dòng)后,新記錄對(duì)應(yīng)的數(shù)據(jù)需要刷新后才能更新
9.2.3數(shù)據(jù)環(huán)境
數(shù)據(jù)環(huán)境是包括了Cursor和Relation兩類對(duì)象的一個(gè)容器每一個(gè)使用了數(shù)據(jù)表的表單都包括一個(gè)數(shù)據(jù)環(huán)境。數(shù)據(jù)環(huán)境是一個(gè)容器對(duì)象,它用來定義與表單相聯(lián)系的數(shù)據(jù)實(shí)體(表、視圖)的信息及其相互聯(lián)系數(shù)據(jù)環(huán)境容器一般包含一到多個(gè)Cursor,表單中所含Cursor類對(duì)象的個(gè)數(shù)與表單關(guān)聯(lián)的數(shù)據(jù)實(shí)體(數(shù)據(jù)表、視圖)的個(gè)數(shù)相同,一個(gè)Cursor類對(duì)象與一個(gè)數(shù)據(jù)實(shí)體(數(shù)據(jù)表、視圖)對(duì)應(yīng)如果一個(gè)表單關(guān)聯(lián)多個(gè)數(shù)據(jù)表,在數(shù)據(jù)環(huán)境容器中就有一個(gè)Relation,否則沒有Relation對(duì)象1.游標(biāo)(Cursor)類對(duì)象當(dāng)存儲(chǔ)在磁盤上的一個(gè)數(shù)據(jù)表文件被打開時(shí),系統(tǒng)會(huì)在內(nèi)存中建立一個(gè)該表的臨時(shí)文件,它是磁盤文件的一個(gè)映象,所有數(shù)據(jù)表的操作修改命令都是針對(duì)這個(gè)映象進(jìn)行的,當(dāng)發(fā)布數(shù)據(jù)更新TableUpdate()命令或關(guān)閉數(shù)據(jù)文件的命令后,系統(tǒng)再把這個(gè)映象文件存入磁盤,從而完成對(duì)磁盤文件的修改。Cursor類對(duì)象也稱為游標(biāo)對(duì)象,它用來定義臨時(shí)表的相關(guān)信息
Cursor類對(duì)象的常用屬性:Alias—與Cursor相關(guān)聯(lián)的數(shù)據(jù)表的別名BufferModeOverride—臨時(shí)表緩沖方式,有0~6七種緩沖方式,默認(rèn)值為1CursorSource—臨時(shí)表的數(shù)據(jù)源(表、視圖)
DataBase—數(shù)據(jù)源對(duì)應(yīng)的數(shù)據(jù)庫(kù)
Exclusive—數(shù)據(jù)源以獨(dú)占還是共享打開,該屬性為真時(shí)表示以獨(dú)占方式打開數(shù)據(jù)源,默認(rèn)值為.F.Filter—過濾器,F(xiàn)ilter是一個(gè)條件表達(dá)式,只有滿足該條件的記錄才出現(xiàn)在與Cursor對(duì)應(yīng)的對(duì)象中
NoDataOnload—如果設(shè)置為.T.,則表示只打開表結(jié)構(gòu)而不加載數(shù)據(jù),默認(rèn)值為.F.Order—設(shè)置的主控索引標(biāo)志
ReadOnly—只讀標(biāo)志,默認(rèn)值為.F.Cursor類只支持
Init、Destory、Error等三個(gè)事件
2.關(guān)系(Relation)類對(duì)象
Relation類對(duì)象的屬性:ChildAlias—子表的別名ChildOrder—子表主控索引值OneToMany—是否屬于一對(duì)多關(guān)系,默認(rèn)值為.T.ParentAlias—父表別名RelationExpr—關(guān)系表達(dá)式Relation對(duì)象也只有
Init、Destory、Error等三個(gè)事件方法
3、數(shù)據(jù)環(huán)境(DataEnvirinment)容器數(shù)據(jù)環(huán)境容器的屬性:AutoCloseTable—是否在釋放表單時(shí)自動(dòng)關(guān)閉表AutoOpenTable—是否在打開表單時(shí)自動(dòng)打開與表單關(guān)聯(lián)的表InItaSelectdAlias—當(dāng)運(yùn)行表單時(shí)選定的表或視圖。
設(shè)計(jì)時(shí)刻為””(空)。如果沒有指定,在運(yùn)行時(shí)首先加到“數(shù)據(jù)環(huán)境”中的臨時(shí)表最先被選定。DataEnvirinment的事件:除Init、Destory、Error三個(gè)事件外,DataEnvirinment還支持兩個(gè)事件和兩個(gè)方法:BeforeOpenTable()事件—打開表時(shí)發(fā)生,打開表前執(zhí)行該事件代碼。AfterCloseTable()事件—關(guān)閉表時(shí)發(fā)生,關(guān)閉表后執(zhí)行該事件代碼。CloseTable方法—用于關(guān)閉數(shù)據(jù)環(huán)境中所定義的所有數(shù)據(jù)源(表、視圖)OpenTable—用于打開閉數(shù)據(jù)環(huán)境中所定義的所有數(shù)據(jù)源(表、視圖)
4、數(shù)據(jù)環(huán)境設(shè)計(jì)器可以使用完全的編程方式建立數(shù)據(jù)環(huán)境,但大多數(shù)情況下都是用數(shù)據(jù)環(huán)境設(shè)計(jì)器來建立表單的數(shù)據(jù)環(huán)境?!纠?-5】建立一個(gè)如下圖所示的表單。表單中有三個(gè)對(duì)象,標(biāo)簽對(duì)象顯示這個(gè)表單的標(biāo)題:“讀者借閱圖書情況查詢”,左側(cè)的列表框?qū)ο笾袕摹皉eader”表中選擇讀者的名字,右側(cè)的表格對(duì)象顯示被選中的讀者的借閱圖書情況,當(dāng)重新選擇一個(gè)讀者時(shí),表格中的數(shù)據(jù)會(huì)自動(dòng)變化
操作步驟如下:
用新建文件的方式進(jìn)入表單,不要使用表單向?qū)?/p>
為空白表單加入第一個(gè)對(duì)象:數(shù)據(jù)環(huán)境,操作步驟如下:在表單空白處,單擊鼠標(biāo)輔按扭,選擇“數(shù)據(jù)環(huán)境”,出現(xiàn)一個(gè)數(shù)據(jù)環(huán)境設(shè)計(jì)框
在數(shù)據(jù)環(huán)境設(shè)計(jì)框中,單擊鼠標(biāo)輔按扭,選擇“添加”(見下圖),首先選擇父表“reader”,單擊“添加”,然后選擇子表“brower”,單擊“添加”,單擊“關(guān)閉”,退出數(shù)據(jù)環(huán)境設(shè)置后,為表單加入一個(gè)文本框?qū)ο?、一個(gè)列表框?qū)ο蟆⒁粋€(gè)表格對(duì)象,用鼠標(biāo)對(duì)三個(gè)對(duì)象進(jìn)行大致布局。
使用生成器設(shè)置列表框和表格對(duì)象的屬性,前面已經(jīng)說明過表格生成器的用法,下面只簡(jiǎn)要說明一下列表框生成器的用法:把鼠標(biāo)移到列表框?qū)ο笊?,單擊輔按扭,選擇“生成器”,在生成器中選擇對(duì)象所關(guān)聯(lián)的字段,然后單擊“確定”直接修改標(biāo)簽對(duì)象的Caption屬性:“讀者借閱圖書情況查詢”,F(xiàn)ontSize:22,F(xiàn)oreColor:0,0,255。保持表單
9.2.4表單對(duì)象的操作
表單所包含對(duì)象的插入、刪除表單所包含對(duì)象的布局
VFP提供了一個(gè)“表單布局工具框”,選定表單中的某個(gè)對(duì)象后,使用布局工具框中的相應(yīng)按鈕讓其“水平居中”、“垂直居中”、等操作,同時(shí)選擇一個(gè)以上的對(duì)象時(shí),還可以使用表單布局工具欄使所有被選中的對(duì)象執(zhí)行“左對(duì)齊”、“右對(duì)齊”、“頂邊對(duì)齊”、“底邊對(duì)齊”、“相同高度”、“相同寬度”、“相同大小”等操作9.3常用表單控件
表單常用控件就是
VFP為開發(fā)者提供的基類,它是設(shè)計(jì)各種子類的基礎(chǔ),也是在表單中設(shè)計(jì)各種對(duì)象的基礎(chǔ)
我們?cè)趯W(xué)習(xí)這些控件時(shí),要注意理解:控件的功能基本屬性以及可選擇的屬性值主要事件方法命令按鈕控件
命令按鈕是最簡(jiǎn)單也是最常見的一種控件,鼠標(biāo)在其上面作用可觸發(fā)一段程序的運(yùn)行命令按鈕組控件
多個(gè)命令按鈕組成一組,對(duì)組中的按鈕即可單獨(dú)操作,也可作為一個(gè)組來統(tǒng)一操作
文本框控件
文本框是用來在應(yīng)用系統(tǒng)與用戶之間進(jìn)行數(shù)據(jù)交互的一種常用工具,它可以和一個(gè)數(shù)據(jù)或數(shù)據(jù)視圖中的非備注字段關(guān)聯(lián)編輯框控件
編輯框也是用來輸入用戶的數(shù)據(jù)的。在編輯框中允許用戶編輯長(zhǎng)字段或備注字段文本
復(fù)選框控件組合框兼有列表框和文本框的功能。有兩種形式的組合框,即下拉組合框和下拉列表框,通過更改控件的
Style組合框控件
單選按鈕控件
單選按鈕組是包含單選按鈕的容器。通常,單選按鈕允組用來由用戶指定對(duì)話框中幾個(gè)操作選項(xiàng)中的一個(gè)
微調(diào)控件使用微調(diào)控件可以讓用戶通過“微調(diào)”尖頭來選擇所需要的數(shù)據(jù),直接在微調(diào)框中直接鍵入所需要的數(shù)據(jù)
標(biāo)簽控件
標(biāo)簽通常被用做提示或標(biāo)題。標(biāo)簽和文本框的不同之處在于標(biāo)簽沒有數(shù)據(jù)源,不能編輯,運(yùn)行時(shí)不能被選中列表框控件
列表框和下拉列表框(即
Style屬性為
2的組合框控件
—
)為用戶提供了包含一些選項(xiàng)和信息的可滾動(dòng)列表。列表框中,任何時(shí)候都能看到多個(gè)項(xiàng);而在下拉列表中,只能看到一個(gè)項(xiàng),用戶可單擊向下按鈕來顯示可滾動(dòng)的下拉列表框
表格控件
表格是一種容器對(duì)象,它包含了若干個(gè)列,而列又包含標(biāo)頭和文本,其關(guān)系是:表格:列
列:標(biāo)頭,文本
計(jì)時(shí)器控件
計(jì)時(shí)器控件與用戶的操作獨(dú)立。它只對(duì)時(shí)間作出反應(yīng),以一定的間隔重復(fù)地執(zhí)行某種操作
頁(yè)框控件頁(yè)框是“頁(yè)面”的一種容器,而“頁(yè)面”也是一種容器,可以放置任何控件、容器和自定義對(duì)象,一個(gè)頁(yè)面在運(yùn)行時(shí)對(duì)應(yīng)一個(gè)屏幕窗口表單的一個(gè)窗口幅面有限,如果在一個(gè)應(yīng)用中要涉及到的對(duì)象很多,在一個(gè)窗口不好布局時(shí),可以把整個(gè)表單中的對(duì)象按聯(lián)系的緊密程度進(jìn)一步劃分為小的模塊,把一個(gè)模塊中的對(duì)象在一個(gè)頁(yè)面中進(jìn)行布局,這樣,整個(gè)窗口就顯得簡(jiǎn)要、清晰
9.4表單的應(yīng)用
9.4.1系統(tǒng)登錄表單
作用:每個(gè)應(yīng)用系統(tǒng)都有自己的用戶群,在進(jìn)入一個(gè)應(yīng)用系統(tǒng)前,常有一個(gè)登錄過程,目的就是驗(yàn)明使用者的身份,防止未授權(quán)用戶進(jìn)入系統(tǒng),從而保證系統(tǒng)安全
與登錄過程相關(guān)的數(shù)據(jù)表登錄過程實(shí)際上是對(duì)用戶所輸入的信息進(jìn)行驗(yàn)證的過程,驗(yàn)證方法一般是在一個(gè)用戶信息數(shù)據(jù)表中檢索用戶輸入的數(shù)據(jù),若檢索到,則容許用戶登錄,否則,拒絕用戶登錄。為減少數(shù)據(jù)的描述過程,這里借用前面多次應(yīng)用的“reader”表進(jìn)行登錄檢查,以讀者編號(hào)(dzbh)表進(jìn)行登錄檢查,以讀者編號(hào)(dzbh)作為密碼,即假設(shè)系統(tǒng)只容許在“reader”表中注冊(cè)過的讀者才能登錄,登錄時(shí)要輸入自己的姓名與編號(hào)表單中共有三個(gè)標(biāo)簽對(duì)象,兩個(gè)文本框?qū)ο蠛鸵粋€(gè)命令按鈕,應(yīng)分別設(shè)置其屬性數(shù)據(jù)環(huán)境設(shè)計(jì)為表單中加入一個(gè)數(shù)據(jù)環(huán)境,并在該環(huán)境中加入“rea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空母艦科普介紹
- 2024年標(biāo)準(zhǔn)彩鋼瓦采購(gòu)協(xié)議樣本
- 2024年山西省《公共基礎(chǔ)知識(shí)之經(jīng)濟(jì)》必刷500題帶解析及答案
- 2024年虛擬現(xiàn)實(shí)頭盔獨(dú)家代理協(xié)議
- 2024版公司股份代持協(xié)議書
- 二零二五年度大型活動(dòng)安全保衛(wèi)綜合服務(wù)合同范本
- 2025年民政部門的個(gè)人工作計(jì)劃范文
- 創(chuàng)新文化娛樂產(chǎn)品供給的策略與執(zhí)行步驟
- 2025年置業(yè)顧問工作計(jì)劃范文
- 無人機(jī)配送的技術(shù)現(xiàn)狀與趨勢(shì)
- 山東省煙臺(tái)市2025屆高三上學(xué)期期末學(xué)業(yè)水平診斷政治試卷(含答案)
- 2025北京石景山初二(上)期末數(shù)學(xué)真題試卷(含答案解析)
- 北師大版四年級(jí)下冊(cè)數(shù)學(xué)課件第1課時(shí) 買文具
- 青貯產(chǎn)品銷售合同樣本
- 2024年冷庫(kù)倉(cāng)儲(chǔ)服務(wù)協(xié)議3篇
- 中國(guó)轎貨車的車保養(yǎng)項(xiàng)目投資可行性研究報(bào)告
- 人工智能在體育訓(xùn)練中的應(yīng)用
- 2024-2030年中國(guó)液態(tài)金屬行業(yè)市場(chǎng)分析報(bào)告
- 住宅樓智能化系統(tǒng)工程施工組織設(shè)計(jì)方案
- 高二上學(xué)期數(shù)學(xué)北師大版(2019)期末模擬測(cè)試卷A卷(含解析)
- 2024-2025學(xué)年度第一學(xué)期四年級(jí)數(shù)學(xué)寒假作業(yè)
評(píng)論
0/150
提交評(píng)論