郭建軍
(長(zhǎng)治學(xué)院 計(jì)算機(jī)系,山西 長(zhǎng)治 046011)
數(shù)據(jù)和信息在計(jì)算機(jī)上進(jìn)行瀏覽和編輯時(shí),有多種表示形式。以可視編程環(huán)境下為例,根據(jù)對(duì)數(shù)據(jù)執(zhí)行選擇、編輯、輸入、顯示、分類(lèi)設(shè)置等不同操作情形,系統(tǒng)提供了下拉列表框、下拉組合框、編輯框、文本框、標(biāo)簽、頁(yè)框等控件。有了這些控件,就可根據(jù)需要來(lái)表示數(shù)據(jù)和信息。
VFP數(shù)據(jù)庫(kù)管理系統(tǒng)與其它的可視編程環(huán)境一樣,也提供了這些控件。因?yàn)閿?shù)據(jù)庫(kù)系統(tǒng)主要是處理自由表中的數(shù)據(jù),可通過(guò)表格控件Grid顯示自由表中的記錄,但當(dāng)自由表中的字段較多時(shí),用表格控件Grid來(lái)顯示,就顯得捉襟見(jiàn)肘,沒(méi)有層次感。在Windows操作系統(tǒng)下,顯示磁盤(pán)、磁盤(pán)上的目錄、子目錄、目錄下的文件等信息,是在資源管理下來(lái)完成的。以樹(shù)形形式顯示時(shí),目錄和文件的屬性一目了然,層次清晰。
在VFP系統(tǒng)下,用樹(shù)形形式顯示自由表中的數(shù)據(jù)時(shí),利用了對(duì)象連接與嵌入OLE(Object Linking and Embedding)方法,并通過(guò)“ActiveX控件”[1]來(lái)實(shí)現(xiàn)的。由于ActiveX控件是通過(guò)外部對(duì)象來(lái)擴(kuò)充VFP功能的,所以在VFP下進(jìn)行表單設(shè)計(jì)時(shí),當(dāng)用到ActiveX[2]控件時(shí),用戶(hù)需在表單控件活動(dòng)菜單上添加后才能使用。
在VFP系統(tǒng)下,由工具菜單中的[3]“選項(xiàng)(O)…”打開(kāi)一個(gè)對(duì)話(huà)窗口,選擇控件頁(yè)框,在ActiveX控件所對(duì)應(yīng)的列表框內(nèi),鉤選“Microsoft TreeView Control.version 6.0”,點(diǎn)確定關(guān)閉對(duì)話(huà)窗口后,由表單控件活動(dòng)菜單上查看類(lèi)按鈕中的ActiveX控件選項(xiàng),改變表單控件活動(dòng)菜單為只顯示ActiveX控件。上述操作是為用樹(shù)形形式顯示自由中的數(shù)據(jù)而添加的,如果需要添加其它形式的ActiveX控件,在列表框內(nèi)容鉤選不同的控件即可。
與使用VFP下的其它控件一樣,選擇表單控件活動(dòng)菜單上相應(yīng)的ActiveX控件按鈕,然后在表單上拖放,即可把ActiveX控件插入到表單中。在表單中插入的ActiveX控件也有相應(yīng)有控件屬性,屬性設(shè)置包括數(shù)據(jù)、方法程序、布局、其它四個(gè)方面,其中方法程序是設(shè)置的主要內(nèi)容,也是使用ActiveX控件的關(guān)鍵。
在VFP數(shù)據(jù)庫(kù)管理系統(tǒng)中,自由表是管理的主要內(nèi)容。如果自由表中的記錄數(shù)據(jù)能用層次形式表示,通過(guò)設(shè)計(jì)合理的自由表結(jié)構(gòu),并把涉及的自由表由索引后的關(guān)鍵字關(guān)聯(lián)起來(lái),就可實(shí)現(xiàn)以樹(shù)形形式顯示數(shù)據(jù),具體方法如下。
例如在學(xué)生學(xué)籍管理信息系統(tǒng)中,學(xué)生的信息具有如下屬性:系、級(jí)、專(zhuān)業(yè)、班級(jí)、學(xué)號(hào)、姓名、個(gè)人詳細(xì)情況等,而且學(xué)號(hào)在編碼時(shí)采用序碼和塊碼結(jié)合的編碼方式,與身份證號(hào)碼編碼相似,通過(guò)學(xué)號(hào)就可獲得學(xué)生的相應(yīng)屬性。
(1)根據(jù)學(xué)生的屬性建立自由表存放系、級(jí)、專(zhuān)業(yè)等內(nèi)容,每個(gè)表中有兩個(gè)字段,一個(gè)存放編碼,另一個(gè)存放名稱(chēng),并為編碼字段建立索引。此處只介紹存放系名稱(chēng)及專(zhuān)業(yè)名稱(chēng)的自由表結(jié)構(gòu)(見(jiàn)表1,2)。
表1 存放系名稱(chēng)的自由結(jié)構(gòu)
表2 存放專(zhuān)業(yè)名稱(chēng)的自由表結(jié)構(gòu)
為了和學(xué)生自由表建立聯(lián)系,在建立自由表結(jié)構(gòu)時(shí),給編碼字段建立索引,在打開(kāi)自由表后,要用set order to命令重置索引。
(2)學(xué)生的編碼方式。由于學(xué)生學(xué)籍的信息很多,這里只介紹學(xué)號(hào)的編碼方式,其它的學(xué)籍信息按照表示數(shù)據(jù)的類(lèi)型,在建立學(xué)生學(xué)籍自由表時(shí)做出相應(yīng)的選擇,也需給學(xué)號(hào)字段建立索引。
學(xué)號(hào)的編碼為11位,從左到右依次為:第1、2位表示學(xué)院,第3位表示專(zhuān)業(yè)屬性,第4,5位表示系,第4,5,6位合起來(lái)表示專(zhuān)業(yè),第7,8位表示級(jí),第9位表示幾班,第10,11位表示學(xué)生在班中編號(hào)。例如某個(gè)學(xué)生的編號(hào)為14401111101,解釋如下:14表示學(xué)院,4表示師范專(zhuān)業(yè),01表示中文系,011表示漢語(yǔ)言文學(xué)專(zhuān)業(yè),11表示11級(jí),1表示1班,01表示該學(xué)生在該班級(jí)中排第1位。即按照學(xué)生學(xué)籍表、系名稱(chēng)、專(zhuān)業(yè)名稱(chēng)等層次形式組織自由表。
在VFP下創(chuàng)建表單,根據(jù)學(xué)生學(xué)籍自由表中顯示的學(xué)生數(shù)據(jù),在表單上添加“Microsoft TreeView Control.version 6.0”控件,通過(guò)合理布局,為學(xué)生學(xué)籍的每一項(xiàng)數(shù)據(jù)綁定相應(yīng)的控件。
3.2.1 為表單用到方法程序填寫(xiě)代碼
為表單的Init方法程序填寫(xiě)代碼,內(nèi)容主要是全局變量的定義,用public命令說(shuō)明表單中用的全局變量名;為表單的Unload方法程序填寫(xiě)代碼,內(nèi)容主要是關(guān)閉在不同工作區(qū)上打開(kāi)的自由表,為其它表單使用自由表時(shí),避免文件正在使用的錯(cuò)誤出現(xiàn)。
3.2.2 為Microsoft TreeView Control.version 6.0控件用到的方法程序填寫(xiě)代碼
為Microsoft TreeView Control.version 6.0控件填寫(xiě)代碼的方法程序有:Init方法程序、Click方法程序、NodeClick方法程序。其中Init方法程序中的代碼,主要是通過(guò)學(xué)生學(xué)籍自由表中的學(xué)號(hào)、系名稱(chēng)自由表中的系級(jí)名稱(chēng)、專(zhuān)業(yè)名稱(chēng)自由表中的專(zhuān)業(yè)名稱(chēng),利用命令this.nodes.add(參數(shù)1,參數(shù)2,參數(shù)3,參數(shù)4),構(gòu)造樹(shù)形結(jié)構(gòu),其中的參數(shù)表明了層次關(guān)系。NodeClick方法程序中的代碼,是用戶(hù)瀏覽數(shù)據(jù)時(shí)點(diǎn)擊樹(shù)形結(jié)構(gòu)的某個(gè)結(jié)點(diǎn)時(shí)需執(zhí)行的代碼,主要是控制顯示某個(gè)學(xué)生的具體信息。
上述各方法程序中的代碼,由于篇幅有限,這里不作詳細(xì)介紹。創(chuàng)建好的表單運(yùn)行后的結(jié)果(部分?jǐn)?shù)據(jù))如圖1所示:
圖1 表單運(yùn)行結(jié)果
用樹(shù)形形式顯示自由表中的記錄,主要是對(duì)每一條記錄的編碼,利用編碼建立與對(duì)應(yīng)信息內(nèi)容的聯(lián)系,在顯示過(guò)程中通過(guò)編碼添加相應(yīng)的結(jié)點(diǎn)信息內(nèi)容。文章只是對(duì)學(xué)籍管理信息系統(tǒng)中顯示學(xué)生信息作了介紹,應(yīng)用這種方法,通過(guò)不同的編碼的方式,可對(duì)其它管理信息系統(tǒng)中的自由表進(jìn)行相同形式的顯示。
[1]臺(tái) 安,胡懷瑾,李懷成.基于ActiveX組件技術(shù)的VFP在Web中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2010,(4):99.
[2]袁 柱.Visual FoxPro程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2011.211-212.
[3]Microsoft Visual FoxPro6.0程序員指南[M].北京:希望電腦公司,1998.407-418.