999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VFP程序設計中應避免的幾個問題

2008-01-01 00:00:00何碧英
電腦知識與技術 2008年5期

摘要:Visual FoxPro是一個功能強大的數據庫管理系統,它以其獨到的特點和優勢贏得了開發者的青睞。本文指出了Visual FoxPro程序設計中應避免的幾個問題,并對此給出了具體的處理方法。

關鍵詞:數據;控件;事件;程序

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)05-10ppp-0c

1 引言

Visual FoxPro中文版是為數據庫管理和應用程序開發而設計的功能強大的面向對象的環境。對于組織信息、查詢、創建集成的關系型數據庫系統與為最終用戶編寫功能全面的數據管理應用程序,Visual FoxPro可以提供管理數據需要的所有工具,它不僅支持客戶/服務模式,而且具有與其他軟件共享和交換數據的能力,提供了新的對象和事件處理模式,利用面向對象編程(OOP)的功能使用戶能夠方便、快捷地建立和修改應用程序,并與其他的數據庫管理系統具有更快速、更有效、更靈活的特點。因此,利用Visual FoxPro中文版數據庫管理系統(DBMS)來開發數據庫系統軟件,受到廣大軟件研制人員的青睞。但是,Visual FoxPro 不是一個十全十美的數據庫開發平臺,也有美中不足之處。特別是內容極其復雜,技術難點多,軟件設計人員要熟練而合理地運用這一新的可視化開發工具,并不是一件容易的事情,往往在軟件設計中要走不少彎路,對一些重要內容與技術要通過較多的軟件研制實踐才能培養起較強的實際應用能力,在實踐中積累經驗,常常會遇到程序代碼正確、測試通過,但沒有達到系統運行要求的模塊。實質上Visual FoxPro程序設計中應該避免出現這些問題。下面提出幾個在教學實踐中積累起來的Visual FoxPro 程序設計中應避免的問題及其處理方法,供大家借鑒。

1 表單中控件制作次序不當,造成鼠標點擊失效的問題

圖1

Visual FoxPro中的控件對象是用戶和程序交互的主要工具。通過在Visual FoxPro表單上移動、拖放和單擊適當的控件,用戶可以操作數據,并執行封裝在控件對象中的方法代碼程序。但是,在表單創建中,添加了合適的控件,在各自的控件中所選取的事件與其代碼編寫都正確,只是控件制作次序不同,在表單運行后會出現兩種不同的現象:一種是達到了預期的教果,可在表單上移動、拖放和單擊適當的控件,響應相應事件的代碼,完成表單設計的任務;另一種出現鼠標移動、拖放和單擊適當的控件后,沒有任何反應,不執行封裝在控件對象中的程序代碼,只能通過Tab鍵或光標移動鍵來定位,進行用戶數據操作,按回車鍵來完成“下一個”和“返回”控件操作。如圖1所示的修改錄入人員庫中錄入人員姓名表單,如果在創建如圖1的表單時,先制作標簽、文本框、命令按鈕,再進行表單控件屬性設置,編寫過程代碼,運行表單后,對表單上的控件操作運行正常,也就是可以用鼠標單擊定位到控件Text3,進行錄入人員姓名修改,單擊“下一個”或“返回”按鈕,來執行各自控件的相應事件的代碼程序。在這一前提下,返回到表單編輯界面,給“錄入人員姓名:”這一標簽控件與Text3文本框添加一個形狀控件組成一組,將其BackStyle屬性設置為“0-透明”,SpecialEffect屬性設置為“0-3維”。同樣,給“下一個”與“返回”控件,添加一個形狀控件組成一組,也將其BackStyle屬性設置為“0-透明”,SpecialEffect屬性設置為“0-3維”.這樣,再運行表單后,“錄入人員姓名:”右側的文本框、“下一個”與“返回”命令按鈕就不能用鼠標定位和單擊來執行相應事件的代碼程序,也即不能完成相應的操作,不能完成表單設計的任務。產生這種現象的原因在于控件制作次序不當。只要在創建表單時,將前面所述的兩個形狀控件先添加,并設置好屬性,再在各自的形狀框中制作好文本框與命令按鈕,其余的屬性設置、事件的代碼程序與前述正常執行表單操作時一樣。另外,有一點值得提醒的是添加好形狀控件后,不能簡單地將表單上已有的控件拖入形狀框內,不然,運行表單后鼠標還是定位不到或不能操作這一控件。當然,有些控件不需要鼠標定位或對其進行操作,只是起到說明或顯示數據的作用,可以添加相應控件,設置屬性,編寫程序代碼,再來修飾表單界面,使得表單運行后操作達到理想的效果。例如圖1表單中,可先添加標簽“共有錄入人員”和“當前是第”,文本框Textl和Text2,設置它們的屬性,再添加形狀框,并相應屬性設置為“0-透明”與“0-3維”,運行表單后,不需要也不能用鼠標單擊定位到文本框Text1和Text2,這也是表單設計中的一個應用技術。

2 事件選擇不當,導致操作達不到預定目的的問題

圖2

事件是某個特定時刻所發生的事情,它是引起對象從一種狀態轉換到另一種狀態的現實世界中的事件的抽象。事件是瞬間完成的,設有特定時間,是引起對象狀態轉換的控制信息。在Visual FoxPro中,可以編寫相應的代碼對此事件進行響應。在多數情況下,事件是通過用戶的交互操作產生的。如果在程序設計中,事件選擇不當,會使程序運行達不到預定的目的。如圖2,Text5的值來自Text1-Text4數值的運算,Text4數值的運算,Text5項為連動數據項,即在程序運行時Text1-Text4項中某一項值改變了,Text5項中顯示值根據計算也立即發生相應的變化。Text1~Text4項中數據寬度根據實際情況進行了限制,如Text1項可輸入數值最大為9999,為了程序運行時實現連動數據項數據實時顯示,在Text1~Text4的文本框中失去焦點時執行過程代碼,來得到Text5項的數值。如果把程序代碼

V1=val(thisform.text1.value)*val(thisform.text2.value )

V1=v1+val(thisform.text3.value)*val(thisform.text4.value)

Thisform.text5.value=str(v1)

Thisform.refresh

放入Text1~Text4各自的InterActiveChange事件,結果出現這些文本框中輸入數值只能輸入一位數值,如Text1輸入欄不能輸入兩位到四位的數值。而Text1文本框的InputMask屬性值確實已設置為9999,產生這一現象的原因就是控件的事件選擇有問題。如果將上述過程代碼放入Text1~Text4各自的Valid事件,問題就不復存在。事實上,Valid事件在控件失去焦點發生,InteractiveChange事件在使用鍵盤或鼠標更改控件的值時發生,并且在每次交互地更改文本框中的值時,都要發生事件,即當用戶在文本框中輸入數字時,每單擊一次都會引發Interactive Change事件。因此,在處理實際問題時,要根據具體情況,選取適當的事件時機,編寫完成特定功能的程序代碼。

3 隱含的數據不具備完整性問題

數據是計算機管理和操作的對象,設計程序就是用一系列指令存儲數據并操作數據。Visual FoxPro使用戶能夠方便使用和管理數據,Visual FoxPro中的數據都有一定的數據類型,每一種數據類型決定了這一類型數據的取值方式和運算方式。數據的完整性是指數據的有效性、一致性和兼容性,用Visual FoxPro開發的程序必須保證管理和操作的數據具備完整性,程序設計人員需編寫相應的代碼或利用系統提供的功能實現數據的完整性約束條件及完整性檢驗。程序設計人員如果沒有周全考慮到這一問題,盡管有些數據的處理在程序運行中沒有表現出明顯的錯誤,但由于存在著隱含的數據不具備完整性問題,影響了程序的嚴密性和軟件的整體質量。如圖3所示。

圖3

程序要求輸入起止日期,設計時就要考慮起止日期輸入欄中輸入的數據具備完整性,輸入的數據不符合實際的,要求或允許用戶重新輸入。處理方法:

(1)要求Textl文本框輸入欄輸入的起始年份不小于2004,在Text2的GotFocus事件中編寫過程代碼為:

if val(thisform.text1.value)<2004

messagebox(“請重新輸入,年份必須不小于2004”,1+48+256,“出錯信息”)

thisform.text1.value=“ ”

thisform.text1.setfocus

thisform.refresh

endif

(2)由于月份介于1-12,這樣在Text3的GotFocus事件的過程代碼為:

if val(thisform.text2.value)>12 or val(thisform.text2.value)<1

messagebox(“請重新輸入月份1-12”,1+48+256,“出錯信息”)

thisform.text2.value=“ ”

thisform.text2.setfocus

endif

對于text5的要求一樣,只要在Text6的GotFocus事件編寫相似的過程代碼。

(3)對于Text3文本框輸入欄輸入的某一日,必須考慮到兩點,一是介于1-31,二是某年某月是否有這一日,這一要求可在Text4的GotFocus事件的過程代碼中編寫為:

if val(thisform.text5.value)>31 or val(thisform.text5.value)<1

messagebox(“請重新輸入日期”,1+48+256,“出錯信息”)

thisform.text5.value=“ ”

thisform.text5.setfocus

endif

thisform.refresh

Text6的要求與Text3一樣,可在“確定”按鈕的GotFocus事件中編寫相應的過程代碼。另外,在這過程代碼中考慮到起始日期要比終止日期早。否則有提示信息。要求用戶重輸入起止日期。

3.4 圖3中文本框的初始值以字符型放在表單的Init事件中,Text1與Text4的InputMask屬性設置為9999,其余文本框的InputMask屬性設為99,所有文本框的Format屬性設為x,按起始日期、終止日期輸入的年、月、日、“確定”與“取消”命令按鈕的順序設置好Tab鍵次序。

4 結束語

Visual FoxPro程序設計中應避免的問題不僅僅只涉及到這些,處理方法也不唯一。本文的目的是Visual FoxPro程序設計人員在程序設計中積累經驗,少走彎路,使程序運行正常。管理和操作的數據具有完整性。Visual FoxPro以及應用程序能發揮最佳性能.

參考文獻:

[1]李雁翎.Visual Foxpm應用基礎與面向對象程序設計教程[M].北京:高等教育出版社,2002.

[2]任明漢.編程中值得注意的幾個問題[N].電腦報,2001.2:2-3.

[3]史濟民,湯觀全.Visual Foxpro及其應用系統開發[M].北京: 清華大學出版社,2002.

收稿日期:2007-12-27

主站蜘蛛池模板: 91精品专区国产盗摄| 99这里只有精品6| 亚洲熟妇AV日韩熟妇在线| 国产免费久久精品99re不卡| 久久精品人人做人人爽电影蜜月 | 日韩免费视频播播| 青青草国产一区二区三区| 在线观看亚洲精品福利片| 色妺妺在线视频喷水| 日韩性网站| 亚洲资源站av无码网址| 欧美成人一区午夜福利在线| 手机成人午夜在线视频| 高清无码一本到东京热| 国语少妇高潮| 尤物精品国产福利网站| 日韩色图在线观看| 99久久国产精品无码| 国产精品自在线拍国产电影| 强乱中文字幕在线播放不卡| 国产午夜福利在线小视频| 久久精品人人做人人| 亚洲女人在线| 日本a∨在线观看| 亚洲AⅤ永久无码精品毛片| 欧美一区二区精品久久久| 色婷婷天天综合在线| 色婷婷国产精品视频| 成人午夜久久| 亚洲日韩久久综合中文字幕| 亚洲无码视频图片| 亚洲综合二区| 国模视频一区二区| 国产AV无码专区亚洲A∨毛片| 在线看片中文字幕| 视频在线观看一区二区| 毛片基地视频| 欧美中出一区二区| 国产乱人乱偷精品视频a人人澡| 久久综合一个色综合网| 国产小视频a在线观看| 中文字幕久久波多野结衣| 久久精品国产在热久久2019| 18禁不卡免费网站| 午夜精品久久久久久久无码软件 | 热久久这里是精品6免费观看| 欧美成人综合视频| 中文字幕人妻av一区二区| 国产精品一区二区在线播放| 亚洲一区网站| 亚洲一级无毛片无码在线免费视频| 国产v欧美v日韩v综合精品| 久久综合丝袜长腿丝袜| 国产福利微拍精品一区二区| 国产一级妓女av网站| 毛片视频网址| 久久semm亚洲国产| 色亚洲激情综合精品无码视频 | 综合色婷婷| 乱码国产乱码精品精在线播放| 日本高清有码人妻| 国产男女免费视频| 亚洲欧美自拍视频| 国产精品永久免费嫩草研究院| 国产一级在线观看www色| 国产99在线观看| 国产精品久久自在自线观看| 欧美伊人色综合久久天天| 色网站免费在线观看| 77777亚洲午夜久久多人| 国产一区免费在线观看| 国产一国产一有一级毛片视频| 亚洲午夜国产片在线观看| 成人欧美日韩| 四虎影视8848永久精品| 天天躁狠狠躁| 无码人妻热线精品视频| 日本久久网站| 72种姿势欧美久久久久大黄蕉| 国产又色又爽又黄| 爆乳熟妇一区二区三区| 四虎在线观看视频高清无码|