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