VFP中微調(diào)按鈕應用技巧二則
發(fā)布時間:2008-08-23 閱讀數(shù): 次 來源:網(wǎng)樂原科技
微調(diào)按鈕控件在VFP數(shù)據(jù)庫系統(tǒng)中是比較常用的控件之一。正常情況下,該控件主要是對數(shù)值型的數(shù)據(jù)進行操作,通過使用鼠標點擊微調(diào)按鈕的向上、向下箭頭改變數(shù)據(jù)源中的值。
筆者在編寫各類應用程序中,通過對微調(diào)按鈕控件屬性、事件的分析,利用編程擴展了微調(diào)按鈕應用的范圍和功能,下面以兩個例子來說明實現(xiàn)的方法。
一、 使用微調(diào)按鈕控件實現(xiàn)字符串的變化
一個應用系統(tǒng)要求使用微調(diào)按鈕控件實現(xiàn)星期內(nèi)容的輸入,即實現(xiàn)從星期一至星期天的輸入,要求使用微調(diào)按鈕來實現(xiàn)。即當我們點擊微調(diào)按鈕的向上箭頭時,編輯框中的內(nèi)容可以由星期一變?yōu)樾瞧诙?,再次點擊到星期三等等;當點擊向下箭頭時,編輯框中的內(nèi)容變化同點擊向上箭頭時相反。
為了解決這個問題,可以采取微調(diào)按鈕與編輯框結合的方式來實現(xiàn),具體實現(xiàn)方法如下:
在表單中利用表單控件拉出一個微調(diào)按鈕對象spinner1和一個編輯框?qū)ο髏ext1,調(diào)整微調(diào)按鈕的寬度,將數(shù)值輸入?yún)^(qū)變小,只保留向上、向下箭頭的寬度,將編輯框與微調(diào)按鈕并列到一起,使得編輯框如同微調(diào)按鈕控制值的輸入?yún)^(qū)一樣,這時設置微調(diào)按鈕spinner1的相關屬性:
Keyboardhighvalue=7
Keyboardlowvalue=1
Spinnerhighvalue=7
Spinnerlowvalue=1
Value=1
其它屬性保持不變。在spinner1.InteractiveChange事件中寫入如下代碼:
Thisform.Text1.Value=Subs(′星期一星期二星期三星期四星期五星期六星期天′,this.value*6-5,6)
Thisform.Refresh
設置編輯框的相關屬性:
Thisform.Value=′星期一′
其它如編輯框中的數(shù)據(jù)源、字體、字號和顏色等屬性,用戶可自行設置。
全部內(nèi)容設置完畢后,運行這個表單,即可以看到當使用鼠標點擊微調(diào)按鈕的箭頭時,編輯框中的內(nèi)容將發(fā)生變化,實現(xiàn)了用戶提出的使用微調(diào)按鈕輸入星期值的要求。
二、根據(jù)微調(diào)按鈕數(shù)值區(qū)中光標位置,設置數(shù)值改變時的增量值
系統(tǒng)提出的要求是:在微調(diào)按鈕數(shù)據(jù)編輯區(qū)內(nèi),能夠根據(jù)光標所在位置不同,使用鼠標點擊向上、向下箭頭時,數(shù)據(jù)變化的大小也不同。如在一個數(shù)值中,當光標在數(shù)值的萬位數(shù)之前時,點擊向上、向下箭頭,則為萬位數(shù)發(fā)生加減變化;光標在小數(shù)點后時,點擊向上、向下箭頭,則小數(shù)點的值發(fā)生變化。這樣使用微調(diào)按鈕,可以方便、快速實現(xiàn)輸入任意一個數(shù)值。
具體實現(xiàn)方法是:首先在表單中新建一個微調(diào)按鈕對象spinner2,同時設置該對象的相關性:
Spinnerhighvalue=X
?。Γ為使用微調(diào)按鈕要輸入數(shù)的最大值
Spinnerlowvalue=Y
?。Γ為使用微調(diào)按鈕時要輸入數(shù)的最小值
Value=3456.45
Increment=0&&增量設為0
Inputmark=999999999999999.99
&&指定微調(diào)按鈕如何輸入和顯示數(shù)據(jù),小數(shù)點前面9的個數(shù)代表數(shù)值的整數(shù)位,小數(shù)點后面9的個數(shù)代表數(shù)的小數(shù)位,這里小數(shù)位設為2位。
其它如編輯框的數(shù)據(jù)源、字體、字號和顏色等屬性,用戶可根據(jù)要求自行設置。
全部屬性設置完畢后,在該微調(diào)按鈕對象Spinner2的DownClick事件中寫入如下代碼:
xsd=3&&這個值為編輯框中小數(shù)點后的位數(shù)加1。
wz2=thisform.spinner2.selstart
thisform.spinner2.selstart=100
CD=len(allt(str(this.value)))
wz1=thisform.spinner2.selstart
wz=wz1-wz2
IF wz〉(cd+xsd)
wz=cd+xsd
wz2=wz1-(cd+xsd)
ENDIF
zi=1
IF wz〈=xsd
FOR i=1 to xsd-wz
zi=zi*10
ENDFOR
this.value=this.value-(1/zi)
ELSE
FOR i=1 to wz-(xsd+1)
zi=zi*10
ENDFOR
this.value=this.value-zi
ENDIF
thisform.spinner2.selstart=wz2
在微調(diào)按鈕對象spinner2的UpClick事件中寫入如下代碼:
xsd=3&&這個值為編輯框中小數(shù)點后的位數(shù)加1。
wz2=thisform.spinner2.selstart
thisform.spinner2.selstart=100
CD=len(allt(str(this.value)))
wz1=thisform.spinner2.selstart
wz=wz1-wz2
IF wz〉(cd+xsd)
wz=cd+xsd
wz2=wz1-(cd+xsd)
ENDIF
zi=1
IF wz〈=xsd
FOR i=1 to xsd-wz
zi=zi*10
ENDFOR
this.value=this.value+(1/zi)
ELSE
FOR i=1 to wz-(xsd+1)
zi=zi*10
ENDFOR
this.value=this.value+zi
ENDIF
thisform.spinner2.selstart=wz2
全部代碼輸入完畢后,運行這個表單。在微調(diào)按鈕的編輯框中輸入某一個數(shù)據(jù),通過使用鼠標或方向鍵將光標定位到編輯框中某一數(shù)值之前,再點擊微調(diào)按鈕的向上、向下箭頭,這時編輯框中值的改變會根據(jù)光標定位點位置的不同而改變,這樣就比較方便利用鼠標實現(xiàn)不同數(shù)據(jù)的輸入,有興趣的讀者不妨一試。