十一。除了交互式向表格中添加控件外,也可以通過(guò)編寫代碼在運(yùn)行時(shí)添加控件。使用 addcolumn方法向表格中添加列,addobject方法向表格列中添加對(duì)象,removeobject方法刪除表格中的對(duì)象。設(shè)置 allowheadersizing和allowrowsizing屬性為。T.,使運(yùn)行時(shí)可改變表頭和行的高度。
十二。設(shè)置表格的記錄源: 如果需要在表格中顯示或修改表文件的內(nèi)容,必須在設(shè)計(jì)時(shí)為表格指定數(shù)據(jù)源,方法如下:選擇表格,然后在"屬性"窗口中選擇 recordsourcetype屬性。如果我們將表格的recordsourcetype屬性設(shè)為"1-別名",然后選擇recordsource屬性,輸入一個(gè)表文件名作為屬性值,則在包含該表格的程序運(yùn)行時(shí),該表文件自動(dòng)打開,其中的記錄顯示在表格中。
十三。設(shè)置列數(shù)據(jù)源:如果在列中顯示一個(gè)指定的字段,則可為該列單獨(dú)設(shè)置數(shù)據(jù)源。首先,右擊表格,選"編輯"命令,然后單擊選中要設(shè)置數(shù)據(jù)源的列,在"屬性"窗口中將其controlsource屬性設(shè)置為相應(yīng)的字段名。
十四。添加記錄:表格(grid)控件有一個(gè)非常重要的屬性:Allowaddnew.在設(shè)計(jì)階段,如果我們將表格的allowaddnew屬性設(shè)為。T.,則在運(yùn)行時(shí),當(dāng)用戶選中了表格中顯示的一條記錄,并且按一下向下的方向鍵,則在作為表格數(shù)據(jù)源的表文件中就會(huì)添加一條空白記錄。如在程序代碼中使用append blank或insert等命令來(lái)添加新記錄,則應(yīng)將表格的allowaddnew屬性設(shè)為。F
十四。創(chuàng)建一對(duì)多表單:表格常見的用途之一是當(dāng)表單中的文本框顯示父表記錄時(shí),表單顯示子表記錄;當(dāng)用戶在父表中瀏覽記錄時(shí),表格中顯示的子表的記錄也隨之變化。
Visual FoxPro基礎(chǔ)教程完整版
1.具有數(shù)據(jù)環(huán)境的一對(duì)多表單:
(1).從"數(shù)據(jù)環(huán)境"中的父表將需要的字段拖動(dòng)到表單中(拖字段)
(2).從"數(shù)據(jù)環(huán)境"中將相關(guān)的子表拖到表單中(拖動(dòng)"數(shù)據(jù)環(huán)境"中表的標(biāo)題到表單中,自動(dòng)生成一個(gè)表格,該表格的數(shù)據(jù)源等屬性均不用另行設(shè)置了。要牢記)
2.沒有數(shù)據(jù)環(huán)境的一對(duì)多表單:
(1).在表單中加入若干個(gè)文本框,分別設(shè)置文本框的controlsource屬性為主表的相應(yīng)字段。
(2).在表單中添加一個(gè)表格,將表格的recordsource屬性設(shè)置為相關(guān)表(子表)的名稱。
(3).設(shè)置表格的linkmaster屬性為主表的名稱。
(4).設(shè)置表格的childorder屬性為相關(guān)表中索引標(biāo)識(shí)的名稱,索引標(biāo)識(shí)名和主表中的關(guān)系表達(dá)式相對(duì)應(yīng)。
(5).將表格的relationespr屬性設(shè)為聯(lián)接相關(guān)表和主表的表達(dá)式。例如:如果childorder標(biāo)識(shí)以"KHXM"建立的索引,應(yīng)將relationexpr也設(shè)置為相同的表達(dá)式。
十五。表格生成器:
1. 右擊表單上的表格控件,在快捷菜單中選"生成器"命令,可以啟動(dòng)"表格生成器".
2.在"表格生成器"的"表格項(xiàng)"選項(xiàng)卡中,可以在"數(shù)據(jù)庫(kù)和表"列表中選擇一個(gè)默認(rèn)目錄中的數(shù)據(jù)庫(kù)或表;若想打開其他目錄中的數(shù)據(jù)庫(kù)或表,可單擊該列表框右側(cè)的"…",在彈出的"打開"對(duì)話框中選擇一個(gè)表打開。打開表后,VFP會(huì)自動(dòng)將其所有字段放入"表格項(xiàng)"選項(xiàng)卡的"可用字段"列表中,用戶可以選擇所需字段添加到"選定字段"列表中。使用其中的雙箭頭按鈕可將所有可用字段一次全部添加到選定字段列表中。如圖43
3.在"樣式"選項(xiàng)卡中,VFP提供了5種樣式,其默認(rèn)值為"保留當(dāng)前樣式",另外4種樣式為專業(yè)式,標(biāo)準(zhǔn)式,浮雕式和賬務(wù)式,當(dāng)選擇其中一項(xiàng)時(shí),在對(duì)話框左側(cè)會(huì)預(yù)覽出其效果。如圖44
4.在"布局"選項(xiàng)卡中,可以調(diào)整和設(shè)置行與列。拖動(dòng)列標(biāo)題的右邊線可調(diào)整列寬;拖動(dòng)行的下邊線可調(diào)整行高;在"標(biāo)題"文本框"中可為列設(shè)置其caption(標(biāo)題)屬性;在"控件類型"列表框中可改變列的控件類型。如圖45
十六。例:按性別和職稱過(guò)濾編輯"職工檔案"表的數(shù)據(jù)
1.新建一個(gè)表單,將其caption屬性設(shè)為"表格的應(yīng)用",autocenter設(shè)為。T.
2.向表單中添2個(gè)label控件,將它們的caption屬性分別設(shè)為"性別"和"職稱",然后向兩個(gè)label控件后分別添加兩個(gè)組合框控件combo1和combo2,如圖46
3.右擊表單空白處,選"數(shù)據(jù)環(huán)境"命令,將"職工檔案。DBF"添加到表單的數(shù)據(jù)環(huán)境中。
拖動(dòng)"職工檔案。DBF"的標(biāo)題欄到表單空白處,即自動(dòng)生成一個(gè)表格。注意:此處一定要拖動(dòng)數(shù)據(jù)環(huán)境中表的標(biāo)題欄,如果拖動(dòng)的是表中的字段,則在表單上生成的是文本框和標(biāo)簽。
5.在表單中適當(dāng)調(diào)整表格的大小,并將該表格的name屬性改為grid1(為了在程序代碼中引用方便),調(diào)整后的界面如圖48
6.選中組合框combo1,在"屬性"窗口中將其rowsourcetype屬性改為"1--值",再選中rowsource屬性,在上方文本框中輸入值:"男,女",如圖49.
同樣方法,將combo2的rowsourcetype屬性設(shè)為"1--值",將rowsource屬性設(shè)為"教授,講師,副教授".注意:輸入rowsource屬性值時(shí),逗號(hào)分隔的是要在組合框中顯示的每一個(gè)選項(xiàng),且必須用英文標(biāo)點(diǎn)。
7.編寫代碼:
*combo1的interactivechange事件(用鼠標(biāo)選擇列表項(xiàng)時(shí)產(chǎn)生的事件)代碼:
set filter to 職工檔案。性別=alltrim(thisform.combo1.value)
thisform.grid1.refresh
*combo的interactivechange事件代碼:
set filter to 職工檔案。職稱=alltrim(thisform.combo2.value)
thisform.grid1.refresh
8.保存并運(yùn)行表單,可發(fā)現(xiàn),當(dāng)我們?cè)诮M合框中選擇時(shí),比如我們?cè)赾ombo1中選擇了"男",則在表格中就將"職工檔案。DBF"中的男性記錄列出來(lái)。
9.分析:此例中,從數(shù)據(jù)環(huán)境中拖動(dòng)所需的表到表單上,即自動(dòng)生成表格,且該表格的rowsourcetype和rowsource等屬性都不必再設(shè)置, 系統(tǒng)自動(dòng)將其recordsourcetype和recordsource屬性設(shè)置為生成這個(gè)表格的表文件"職工檔案。DBF")
Visual FoxPro基礎(chǔ)教程完整版