目前,VisualFoxPro在數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)中得到了廣泛的應(yīng)用,系統(tǒng)的開發(fā)技巧和注意事項受到人們的關(guān)注,本文敘及的兩個編程技巧,實現(xiàn)非常簡單,但在實際應(yīng)用中起到了很好的作用。
1.跟變式組合框
在實際應(yīng)用系統(tǒng)中,常常采用下拉列表框?qū)崿F(xiàn)字符字段數(shù)據(jù)的規(guī)范化輸入,并且往往一個數(shù)據(jù)表中會有多個這樣的數(shù)據(jù)字段,而對應(yīng)這些字段的規(guī)范化數(shù)據(jù)則作為枚舉數(shù)據(jù)統(tǒng)一放在一個枚舉數(shù)據(jù)表里進行管理。這就出現(xiàn)一個問題,對應(yīng)不同字段的枚舉數(shù)據(jù)有寬有窄,為了存下所有這些數(shù)據(jù),枚舉數(shù)據(jù)表的數(shù)據(jù)字段要足夠的寬,但對于目標數(shù)據(jù)庫的控制字段,顯然要根據(jù)業(yè)務(wù)對數(shù)據(jù)的要求和節(jié)省空間的考慮,將字段設(shè)計成合適的寬度。對VFP來說,若列表數(shù)據(jù)寬度超出控制字段寬度,則文本框不能顯示選定數(shù)據(jù),這一點常常被編程者忽視,而造成提交給用戶的程序不能正常運行。其實只要在設(shè)計下拉列表框時稍加幾行代碼就能解決這個問題,并且還能實現(xiàn)下拉列表框和文本框自動跟隨控制字段的寬度發(fā)生變化,使對象寬度始終與字段寬度一致。
假設(shè)控制數(shù)據(jù)表KZB.DBF的控制字段名為A1,實際應(yīng)用系統(tǒng)中,A1相當于不同數(shù)據(jù)表中的不同枚舉字段。枚舉表MJB.DBF將應(yīng)用系統(tǒng)的所有枚舉數(shù)據(jù)集中管理,枚舉表最少包括兩個字段:枚舉數(shù)據(jù)和枚舉字段標志,這里的枚舉數(shù)據(jù)字段名為CC,枚舉字段標志為MJBZ。圖1為控制表字段A1寬度為10的情況,圖2為控制表字段A1寬度調(diào)為26的情況。具體實現(xiàn)方法是:先在表單的數(shù)據(jù)環(huán)境中添加控制表和枚舉表,在組合框的InitEvent方法中加入如下代碼:
KD=LEN(KZB.A1)
THIS.WIDTH=31+6.3*KD
SELEMJB
CREATCURSORLS(CCC(KD))
APPEFROMMJBFORMJBZ="測試"
&&完成對應(yīng)該字段的枚舉數(shù)據(jù)篩選。
一般一個系統(tǒng)的枚舉字段的枚舉數(shù)據(jù)總計不過幾百,在INIT中創(chuàng)建游標是不會影響速度的。在設(shè)計列表時,要在組合框的RowSource處標寫游標名LS,這種功能的實現(xiàn)只需加寫很少的代碼,但卻在實際應(yīng)用中起到了很好的作用。
1.跟變式組合框
在實際應(yīng)用系統(tǒng)中,常常采用下拉列表框?qū)崿F(xiàn)字符字段數(shù)據(jù)的規(guī)范化輸入,并且往往一個數(shù)據(jù)表中會有多個這樣的數(shù)據(jù)字段,而對應(yīng)這些字段的規(guī)范化數(shù)據(jù)則作為枚舉數(shù)據(jù)統(tǒng)一放在一個枚舉數(shù)據(jù)表里進行管理。這就出現(xiàn)一個問題,對應(yīng)不同字段的枚舉數(shù)據(jù)有寬有窄,為了存下所有這些數(shù)據(jù),枚舉數(shù)據(jù)表的數(shù)據(jù)字段要足夠的寬,但對于目標數(shù)據(jù)庫的控制字段,顯然要根據(jù)業(yè)務(wù)對數(shù)據(jù)的要求和節(jié)省空間的考慮,將字段設(shè)計成合適的寬度。對VFP來說,若列表數(shù)據(jù)寬度超出控制字段寬度,則文本框不能顯示選定數(shù)據(jù),這一點常常被編程者忽視,而造成提交給用戶的程序不能正常運行。其實只要在設(shè)計下拉列表框時稍加幾行代碼就能解決這個問題,并且還能實現(xiàn)下拉列表框和文本框自動跟隨控制字段的寬度發(fā)生變化,使對象寬度始終與字段寬度一致。
假設(shè)控制數(shù)據(jù)表KZB.DBF的控制字段名為A1,實際應(yīng)用系統(tǒng)中,A1相當于不同數(shù)據(jù)表中的不同枚舉字段。枚舉表MJB.DBF將應(yīng)用系統(tǒng)的所有枚舉數(shù)據(jù)集中管理,枚舉表最少包括兩個字段:枚舉數(shù)據(jù)和枚舉字段標志,這里的枚舉數(shù)據(jù)字段名為CC,枚舉字段標志為MJBZ。圖1為控制表字段A1寬度為10的情況,圖2為控制表字段A1寬度調(diào)為26的情況。具體實現(xiàn)方法是:先在表單的數(shù)據(jù)環(huán)境中添加控制表和枚舉表,在組合框的InitEvent方法中加入如下代碼:
KD=LEN(KZB.A1)
THIS.WIDTH=31+6.3*KD
SELEMJB
CREATCURSORLS(CCC(KD))
APPEFROMMJBFORMJBZ="測試"
&&完成對應(yīng)該字段的枚舉數(shù)據(jù)篩選。
一般一個系統(tǒng)的枚舉字段的枚舉數(shù)據(jù)總計不過幾百,在INIT中創(chuàng)建游標是不會影響速度的。在設(shè)計列表時,要在組合框的RowSource處標寫游標名LS,這種功能的實現(xiàn)只需加寫很少的代碼,但卻在實際應(yīng)用中起到了很好的作用。