計算機二級VFP

計算機二級VFP

計算機術語
用VFP6.0編寫完整的應用程序時查詢系統往往是不可缺少的重要部分。而開發一個優秀的查詢系統需要很多的應用技巧。由于工作原因,筆者經常開發查詢系統模塊,現将個人編程中總結的一些技巧介紹給大家,希望對讀者的應用開發有所幫助。
    中文名:計算機二級VFP 外文名: 所屬學科: 編輯查詢系統:任務進度條的實現 組合查詢:應用宏命令 類查詢:删除查詢表中的空記錄 查詢應用系統:實現整條記錄突出顯示

任務進度條的實現

在查詢的過程中,如果數據較多,需要用戶等待時,查詢系統中應有進度條加以顯示,才能使系統更加具有規範性。具體實現方法如下:

1.選擇VFP的系統選單“工具”中“選項”條,彈出“選項”窗口,在窗口中點擊“ActiveX控件”欄,添加任務進度欄控件Microsoft ProgressBar Control Version5.0(SP2)至ActiveX工具箱中。

2.選定表單控件工具欄中“ActiveX控件”,添加控件Microsoft ProgressBar Control Version6.0至查詢的表單Form1中,并設置其屬性Max值為1000。

3.将下列代碼添加到數據查詢程序代碼之後:

for i=1 to 1000

for j=1 to 2000

j=j+1

endfor

thisform.olecontrol1.value=i

i=i+1

endfor

messagebox('數據查詢完畢,OK!',0+64)

thisform.release

clear events

通過這樣的設置,在查詢時如果時間較長,查詢進度條會為用戶顯示查詢任務的運行情況。

應用宏命令實現組合查詢

在組合查詢中,需要查詢的組合項通常很多,如果每項都使用不同的變量,編程會非常煩瑣。筆者使用宏命令輕松實現查詢組合條件,具體實現的方法是在查詢按鈕裡加入如下代碼:

LOCAL cFilter,nCnt,cCondition

FOR nCnt=1 to THISFORM.ControlCount

IFTYPE('THISFORM.Controls(nCnt).controlSource')<>"U"THEN

IF!EMPTY(THISFORM.Controls(nCnt).ControlSource)AND;

TYPE('THISFORM.Controls(nCnt).value')<>"U"THENcCondition=THIS.Parent.parseCondition(THISFORM.Controls(nCnt).value,THISFORM.Controls(nCnt).controlSource)

IF!EMPTY(cCondition)THEN

cFilter=cFilter+"AND"cCondition

ENDIF

ENDIF

ENDIF

ENDFOR

通過這樣的設置,雖然有多個查詢條件,但查詢的組合條件為cFilter,以後的應用隻要對cFilter進行處理即可。

删除查詢表中的空記錄

使用類查詢(_dataquery.vcx)時,會在待查詢表中的最後自動插入一條空記錄,而在實際的GRID表格顯示中,人們是不希望将空記錄顯示出來的。下面是解決此問題的詳細步驟:

1.在主程序或Form對象的Load事件輸入以下代碼:

SET DELETE ON

2.在查詢結束代碼後輸入以下代碼:

Thisform.Refresh

&&&&刷新表單

go bottom

delete next 1

&&&&因為當前表被添加了一個空記錄,在實際應用中應删除掉

Thisform.Grid1.Column1.Setfocus

go top

Thisform.grid1.refresh

實現中英文自動切換

在用VFP6.0開發查詢系統時,文本框對象和組合框對象應用得較多,在文本框中進行中英文的輸入時,來回切換非常煩瑣,所以筆者借助自定義子類,來實現中英文輸入的自動切換。具體實現的步驟如下:

1.點擊VFP6系統選單欄“文件→新建→類”,啟動“新類”對話框,填入類名為gsTextBox,并設置父類為TextBox,在“存儲于”欄處輸入存儲的位置和名稱,按“确定”鍵進入類設計器畫面。

2.新增一個屬性,來作為對象是否啟動中文輸入法的控制碼。通過系統選單欄“類→新建屬性...”,啟動“新建屬性”對話框,設置一些屬性,其中可視性設為public。

3.最後設置GotFocus與LostFocus事件過程。Gotfocus Event事件過程如下:

If thischinese

&&&&中英文選擇,thischinese為邏輯量

=imestatus(1)

else

=imestatus(0)

endif

Lostfocus Event事件過程如下:

=imestatus(0)

至此,類已經定義完成,以後隻要在設計表單時,通過表單控件“工具欄→查看類→添加...”把自定義類加入,并且設置“中英文選擇”屬性,即可實現中英文輸入的自動切換。

實現整條記錄突出顯示

在用VFP設計一個查詢應用系統時,信息的浏覽是相當重要的功能之一,通常采用的實現方法是用Grid對象來顯示數據信息,但在使用過程中卻存在一些不足,就是當使用者在記錄之間移動時,隻有獲得焦點的那條記錄的某一字段可以以不同于Grid背景的顔色顯示,很不醒目。

筆者利用Grid對象,成功實現了當數據記錄移動時,整條記錄均用同一種顔色突出顯示,即當數據記錄移動時,用顔色動态變化顯示相對光标所在的位置,設計步驟如下:

首先定義一個Grid對象,并設置好其屬性,然後在其AfterRowColChange事件過程中添加如下代碼:

LPARAMETERS nColIndex

this.setall("dynamicbackcolor","iif(this.activerow〈〉recn(),rgb(255,255,255),rgb(0,0,255))","column")

利用以上代碼,就能達到當數據記錄移動時,其相對的Row顯示動态顔色變化。

在上面的設計中,首先使用了SetAll()方法設定Grid中的Column層次的DynamicBackColor(動态背景顔色屬性),然後在第二個參數中使用了Grid對象的ActiveRow反映相對的行數,若不等于記錄編号時,則通過RGB(255,255,255)送出白色背景,若相對行等于記錄編号時,則通過RGB(0,0,255)送出綠色背景色,而該顔色也可自行設定。

用Grid模拟Browse窗口

可以将Grid結合在Form對象中,模拟成一個Browse命令窗口,可以自由調整Form大小,而Grid對象也會自動調整大小。實現方法如下:

1.首先設定一個Form對象,該對象必須保留其BorderStyle為“3-可調邊框”,這樣可自由調整大小的邊線屬性,同時設定Resize事件程序如下:

Thisform.Grid1.Width=this.width

Thisform.Grid1.Height=this.Height

2.設計一個Grid對象于Form對象中,并設定其屬性如下:

Width=Thisform.Width

Height=Thisform.Height

RecordSource設為目前“數據環境”中所設定的工作區别名;

Top與Left均設為0,表示該對象左上端坐标為0,0。

這樣,已經設定好的Grid對象和Browse窗口一樣,當對Form對象進行大小調整時,對象的高度與寬度就可以随之調整。

上一篇:知識産權法

下一篇:人力資源管理師證書

相關詞條

相關搜索

其它詞條