郭建軍
(長治學院 計算機系,山西 長治 046011)
數據和信息在計算機上進行瀏覽和編輯時,有多種表示形式。以可視編程環境下為例,根據對數據執行選擇、編輯、輸入、顯示、分類設置等不同操作情形,系統提供了下拉列表框、下拉組合框、編輯框、文本框、標簽、頁框等控件。有了這些控件,就可根據需要來表示數據和信息。
VFP數據庫管理系統與其它的可視編程環境一樣,也提供了這些控件。因為數據庫系統主要是處理自由表中的數據,可通過表格控件Grid顯示自由表中的記錄,但當自由表中的字段較多時,用表格控件Grid來顯示,就顯得捉襟見肘,沒有層次感。在Windows操作系統下,顯示磁盤、磁盤上的目錄、子目錄、目錄下的文件等信息,是在資源管理下來完成的。以樹形形式顯示時,目錄和文件的屬性一目了然,層次清晰。
在VFP系統下,用樹形形式顯示自由表中的數據時,利用了對象連接與嵌入OLE(Object Linking and Embedding)方法,并通過“ActiveX控件”[1]來實現的。由于ActiveX控件是通過外部對象來擴充VFP功能的,所以在VFP下進行表單設計時,當用到ActiveX[2]控件時,用戶需在表單控件活動菜單上添加后才能使用。
在VFP系統下,由工具菜單中的[3]“選項(O)…”打開一個對話窗口,選擇控件頁框,在ActiveX控件所對應的列表框內,鉤選“Microsoft TreeView Control.version 6.0”,點確定關閉對話窗口后,由表單控件活動菜單上查看類按鈕中的ActiveX控件選項,改變表單控件活動菜單為只顯示ActiveX控件。上述操作是為用樹形形式顯示自由中的數據而添加的,如果需要添加其它形式的ActiveX控件,在列表框內容鉤選不同的控件即可。
與使用VFP下的其它控件一樣,選擇表單控件活動菜單上相應的ActiveX控件按鈕,然后在表單上拖放,即可把ActiveX控件插入到表單中。在表單中插入的ActiveX控件也有相應有控件屬性,屬性設置包括數據、方法程序、布局、其它四個方面,其中方法程序是設置的主要內容,也是使用ActiveX控件的關鍵。
在VFP數據庫管理系統中,自由表是管理的主要內容。如果自由表中的記錄數據能用層次形式表示,通過設計合理的自由表結構,并把涉及的自由表由索引后的關鍵字關聯起來,就可實現以樹形形式顯示數據,具體方法如下。
例如在學生學籍管理信息系統中,學生的信息具有如下屬性:系、級、專業、班級、學號、姓名、個人詳細情況等,而且學號在編碼時采用序碼和塊碼結合的編碼方式,與身份證號碼編碼相似,通過學號就可獲得學生的相應屬性。
(1)根據學生的屬性建立自由表存放系、級、專業等內容,每個表中有兩個字段,一個存放編碼,另一個存放名稱,并為編碼字段建立索引。此處只介紹存放系名稱及專業名稱的自由表結構(見表1,2)。

表1 存放系名稱的自由結構

表2 存放專業名稱的自由表結構
為了和學生自由表建立聯系,在建立自由表結構時,給編碼字段建立索引,在打開自由表后,要用set order to命令重置索引。
(2)學生的編碼方式。由于學生學籍的信息很多,這里只介紹學號的編碼方式,其它的學籍信息按照表示數據的類型,在建立學生學籍自由表時做出相應的選擇,也需給學號字段建立索引。
學號的編碼為11位,從左到右依次為:第1、2位表示學院,第3位表示專業屬性,第4,5位表示系,第4,5,6位合起來表示專業,第7,8位表示級,第9位表示幾班,第10,11位表示學生在班中編號。例如某個學生的編號為14401111101,解釋如下:14表示學院,4表示師范專業,01表示中文系,011表示漢語言文學專業,11表示11級,1表示1班,01表示該學生在該班級中排第1位。即按照學生學籍表、系名稱、專業名稱等層次形式組織自由表。
在VFP下創建表單,根據學生學籍自由表中顯示的學生數據,在表單上添加“Microsoft TreeView Control.version 6.0”控件,通過合理布局,為學生學籍的每一項數據綁定相應的控件。
3.2.1 為表單用到方法程序填寫代碼
為表單的Init方法程序填寫代碼,內容主要是全局變量的定義,用public命令說明表單中用的全局變量名;為表單的Unload方法程序填寫代碼,內容主要是關閉在不同工作區上打開的自由表,為其它表單使用自由表時,避免文件正在使用的錯誤出現。
3.2.2 為Microsoft TreeView Control.version 6.0控件用到的方法程序填寫代碼
為Microsoft TreeView Control.version 6.0控件填寫代碼的方法程序有:Init方法程序、Click方法程序、NodeClick方法程序。其中Init方法程序中的代碼,主要是通過學生學籍自由表中的學號、系名稱自由表中的系級名稱、專業名稱自由表中的專業名稱,利用命令this.nodes.add(參數1,參數2,參數3,參數4),構造樹形結構,其中的參數表明了層次關系。NodeClick方法程序中的代碼,是用戶瀏覽數據時點擊樹形結構的某個結點時需執行的代碼,主要是控制顯示某個學生的具體信息。
上述各方法程序中的代碼,由于篇幅有限,這里不作詳細介紹。創建好的表單運行后的結果(部分數據)如圖1所示:

圖1 表單運行結果
用樹形形式顯示自由表中的記錄,主要是對每一條記錄的編碼,利用編碼建立與對應信息內容的聯系,在顯示過程中通過編碼添加相應的結點信息內容。文章只是對學籍管理信息系統中顯示學生信息作了介紹,應用這種方法,通過不同的編碼的方式,可對其它管理信息系統中的自由表進行相同形式的顯示。
[1]臺 安,胡懷瑾,李懷成.基于ActiveX組件技術的VFP在Web中的應用[J].計算機與現代化,2010,(4):99.
[2]袁 柱.Visual FoxPro程序設計教程[M].北京:人民郵電出版社,2011.211-212.
[3]Microsoft Visual FoxPro6.0程序員指南[M].北京:希望電腦公司,1998.407-418.