文章編號(hào):1672-5913(2008)12-0063-03
摘要:本文主要論述了在VFP教學(xué)過(guò)程中利用MODIFY WINDOW命令及_SCREEN對(duì)象更改VFP主窗口字體大小的方法,講授索引命令時(shí)應(yīng)注意的問(wèn)題,以及學(xué)生在編程過(guò)程中經(jīng)常遇到的“編譯后程序運(yùn)行一閃而過(guò)”現(xiàn)象的解決方法。
關(guān)鍵詞:VFP;教學(xué);_SCREEN;索引;表單
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:A
Visual FoxPro(以下簡(jiǎn)稱為VFP)是高等學(xué)校非計(jì)算機(jī)專業(yè)教學(xué)計(jì)劃中的一門(mén)基礎(chǔ)課程。在筆者多年的教學(xué)實(shí)踐中,發(fā)現(xiàn)有幾個(gè)問(wèn)題是在該課程的學(xué)習(xí)過(guò)程中經(jīng)常會(huì)遇到的,下面逐一分析,與同行共享。
1合理更改VFP主窗口的字體大小
由于VFP是可視化的系統(tǒng)開(kāi)發(fā)工具,許多教師在教課過(guò)程中必須要演示某些示例,而有些示例的顯示結(jié)果是在VFP的主窗口內(nèi)顯示的。VFP系統(tǒng)默認(rèn)的字體為“宋體”,字號(hào)為10號(hào)。此時(shí)投影到屏幕上的結(jié)果很多同學(xué)都無(wú)法看清,為此,要合理更改VFP主窗口的字體大小。
更改VFP主窗口的字體大小主要有兩種方法,一種是通過(guò)MODIFY WINDOW命令來(lái)實(shí)現(xiàn),另一種方法是通過(guò)_SCREEN對(duì)象來(lái)實(shí)現(xiàn)。
1.1MODIFY WINDOW命令
VFP所提供的MODIFY WINDOW命令可以對(duì)用戶自定義的窗口或者是VFP的主窗口進(jìn)行修改,其中VFP的主窗口用SCREEN表示。注意此單詞不可以縮寫(xiě),否則VFP會(huì)認(rèn)為縮寫(xiě)后的單詞是一個(gè)未定義的窗口名。修改VFP主窗口屬性時(shí),該命令的基本格式如下:
MODIFY WINDOW SCREEN [FROM <行坐標(biāo)1,列坐標(biāo)1> TO <行坐標(biāo)2,列坐標(biāo)2> ] [FONT <字體> [字號(hào)]] [STYLE <字型>] TITLE <字符表達(dá)式>][ICON FILE<.ICO文件名>]
在以上命令格式中,用戶可以輕松地改變VFP主窗口的大小、字體、字號(hào)、字型及VFP主窗口的標(biāo)題及圖標(biāo)。其中字型有多種分類,每個(gè)字形分別有自己的代碼。例如粗體用B表示,斜體用I表示,標(biāo)準(zhǔn)用O表示,下劃線用U表示。
1.2_SCREEN對(duì)象
利用VFP所提供的_SCREEN對(duì)象,也能對(duì)主窗口進(jìn)行各種操作,如可以動(dòng)態(tài)地改變主窗口的圖標(biāo)、標(biāo)題、顏色等,也可以通過(guò)它引用其他的對(duì)象或?qū)傩浴?/p>
_SCREEN對(duì)象(即指VFP主窗口)是從表單類派生出來(lái)的,表單中的部分屬性、事件和方法在_SCREEN對(duì)象也存在,因而可以把主窗口當(dāng)作表單來(lái)操作。
下面舉例說(shuō)明如何利用_SCREEN對(duì)象更改VFP的屬性。
(1) 更改圖標(biāo)和標(biāo)題
把VFP窗口的“Microsoft Visual FoxPro”標(biāo)題和小狐貍圖標(biāo),改為你所喜歡的圖標(biāo)和標(biāo)題,只需執(zhí)行代碼
_SCREEN.ICON=″新的圖標(biāo)文件名(.ICO)″
_SCREEN.CAPTION=″新的標(biāo)題名″
(2) 更改字體和字號(hào)
若要更改VFP主窗口的字體和字號(hào),只需執(zhí)行以下代碼即可。
_SCREEN.FONTNAME=″字體名稱″
_SCREEN.FONTSIZE=″字體大小″
利用_SCREEN還可以更改VFP主窗口的很多屬性,如前景色,背景色,關(guān)閉按鈕是否有效、是否有最大最小化按鈕等。用戶只需要將_SCREEN對(duì)象的屬性名替換一下即可完成相應(yīng)的設(shè)置。由于_SCREEN對(duì)象是由表單類派生出來(lái)的,所以其屬性名可以在表單的屬性窗口中獲得。當(dāng)然并不是所有的表單屬性都可以使用,如Value和BackStyle屬性就不可以使用。
2索引命令使用時(shí)應(yīng)注意的問(wèn)題
VFP的索引文件是一種類B+樹(shù)的稠密索引結(jié)構(gòu),且索引文件較原庫(kù)小得多。利用索引文件可以大大加快查詢效率,具有較高的實(shí)用價(jià)值。索引結(jié)點(diǎn)中包含了全部關(guān)鍵字的信息及指向包含這些關(guān)鍵字記錄的指針。
建立索引的基本命令格式如下:
INDEX ON <索引關(guān)鍵字> TO <單索引文件名> |TAG<索引標(biāo)識(shí)名> [OF<復(fù)合索引文件名>] [FOR<條件>][ASCENDING|DESCENDING]
使用該命令時(shí),要注意以下幾點(diǎn)問(wèn)題:
(1) 可以使用FOR條件
有很多教師在授課過(guò)程中忽略了FOR條件子句。FOR條件子句在建立索引過(guò)程中可以過(guò)濾出符合條件的記錄,將其關(guān)鍵字加入索引文件中。例如對(duì)學(xué)生表利用
INDEX ON 編號(hào) TO XS1 FOR 性別=\"男\(zhòng)"
命令建立單索引文件后,顯示表中記錄時(shí)就只有男同學(xué)的信息,且按編號(hào)進(jìn)行邏輯排序。
(2) 正確設(shè)置索引關(guān)鍵字
索引關(guān)鍵字的正確設(shè)置是成功建立索引文件的關(guān)鍵。索引關(guān)鍵字不一定是字段名,還可以是由字段名、函數(shù)及運(yùn)算符組成的表達(dá)式,但該表達(dá)式不能是用逗號(hào)分隔的多個(gè)表達(dá)式,且表達(dá)式的各個(gè)運(yùn)算對(duì)象的類型要保持一致。例如對(duì)學(xué)生表用
INDEX ON 姓名+DTOS(出生日期)TAG T1 DESC
命令建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,則其中記錄按姓名降序排列,姓名相同時(shí)按出生日期降序排列。在該命令中利用DTOS將出生日期由日期型轉(zhuǎn)換為年月日形式的字符型與姓名字段連接,保持了運(yùn)算對(duì)象類型的一致性。
(3) 利用SEEK進(jìn)行索引查詢的特例
索引可以提高查詢的效率。索引查詢主要有SEEK命令。利用SEEK查詢時(shí)要求對(duì)所查詢字段建立索引或排序[5]。例如要查詢學(xué)生表中1992年出生的學(xué)生。首先要利用
INDEX ON YEAR(出生日期) TAG RQ
建立索引,然后再利用SEEK 1992命令來(lái)查詢。由于YEAR( )函數(shù)的返回類型是數(shù)值型,故SEEK后的查詢內(nèi)容也應(yīng)該是數(shù)值類型。但在實(shí)際操作過(guò)程中,筆者發(fā)現(xiàn)INDEX命令在數(shù)值型表達(dá)式上建立的索引,用SEEK命令查詢時(shí)既可用數(shù)值型也可用字符型。但對(duì)于字符型表達(dá)式上建立的索引,用SEEK命令查詢時(shí)只能用字符型。
3對(duì)“編譯后程序運(yùn)行一閃而過(guò)”現(xiàn)象的解決
很多學(xué)生將所設(shè)計(jì)的程序編譯后運(yùn)行時(shí),出現(xiàn)一閃而過(guò)的現(xiàn)象。這個(gè)問(wèn)題有兩種可能性,一種是程序執(zhí)行完成并退出,另一種是程序正在執(zhí)行但界面被隱藏。造成第一種情況的原因是主程序中沒(méi)有READ EVENTS事件處理命令,結(jié)果程序一直執(zhí)行下去,直到結(jié)束,不會(huì)接收用戶的事件。要解決該情況需在程序中添加READ EVENT命令即可。對(duì)于第二種情況,可按\"Ctrl+Alt+Del\"鍵觀察到用戶所編的應(yīng)用程序仍在運(yùn)行,只是界面不可見(jiàn)。造成這種情況的主要原因是用戶設(shè)計(jì)的封面表單屬性設(shè)置錯(cuò)誤。為了達(dá)到在顯示封面表單之前不顯示VFP主窗口的目的,用戶往往在Config.fpw文件中設(shè)置_Screen=off,當(dāng)程序顯示封面表單時(shí),如果封面表單的ShowWindows屬性被設(shè)為“在屏幕中”,則不管是在開(kāi)發(fā)環(huán)境還是在編譯環(huán)境下,程序都將停下來(lái),表單被顯示在_Screen中,而_Screen被隱藏了,因此表單跟著也被隱藏了,所以在屏幕上什么也看不見(jiàn)。為了避免這種錯(cuò)誤的出現(xiàn),必須將封面表單的ShowWindow屬性設(shè)為“頂層表單”,這樣就可使封面表單在_Screen被隱藏的情況下顯示出來(lái),同時(shí)也必須在程序中包含事件處理命令Read Events,以便于使程序停下來(lái)接收用戶事件。
4結(jié)束語(yǔ)
以上是筆者在VFP授課過(guò)程中注意到的幾點(diǎn)問(wèn)題。教師在授課過(guò)程中將操作結(jié)果清晰的顯示出來(lái)是獲得良好教學(xué)質(zhì)量的前提,所以更改VFP主窗口字體大小是非常重要的。學(xué)生對(duì)于VFP中索引部分很難理解,且“編譯后一閃而過(guò)”現(xiàn)象頻繁出現(xiàn),任課教師要注意相關(guān)問(wèn)題的講解,這對(duì)于學(xué)生在實(shí)際操作過(guò)程中減少出現(xiàn)錯(cuò)誤的可能性是大有幫助的。
參考文獻(xiàn)
[1] 史濟(jì)民. Visual FoxPro及其應(yīng)用系統(tǒng)開(kāi)發(fā)[M]. 北京:清華大學(xué)出版社,2000.
[2] 謝川. Visual FoxPro程序設(shè)計(jì)[M]. 北京:機(jī)械工業(yè)出版社,2000.
[3] 毛一心. Visual FoxPro應(yīng)用實(shí)例集錦[M]. 北京:人民郵電出版社,2002.
[4] 張俊玲. 數(shù)據(jù)原理與應(yīng)用[M]. 北京:清華大學(xué)出版社,2005.
Thought on VFP Teaching
WANG Wei
(Computer Science Technology College, Changchun University, Changchun 130022, China)
Abstract: This article tells how to change the font name and font size of VFP screen through the MODIFY WINDOW command and the _SCREEN object, and then talks about the problem that should be paid attention to in index command teaching. AT last the article discusses the disappearing phenomenon of program after compiling and running and brings forward some ways to solve it.
Keywords: VFP; Teaching; _SCREEN; Index; Form