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