改進VFP的Searchclass.VC

字號:

使用過中文VFP的朋友都知道利用VFP提供的WIZARDS類庫中的searchform.vcx和searchclass.vcx可以創(chuàng)建一個通用查詢表單。這個查詢非常通用,操作界面也非常簡單明了。
    但是,此表單有一個缺憾,就是此表單的字段對話框就只能顯示字段名,如果數(shù)據(jù)表的字段名為英文時,顯示的字段名對操作人員而言就顯的不夠清楚。我們一般在設計數(shù)據(jù)庫時給每個字段加以中文標題,用于對字段名的詳細說明,就像用BROW命令時,就可以用字段標題代替字段名一樣,我們也可以通過對searchclass.vcx的修改使其用字段標題代替字段名顯示,這樣就使得整個界面非常友好。
    打開WIZARDS類庫,選擇searchclass.vcx。
    一、修改cbofield1的init事件
    在下列語句
    FOR m.i = FCOUNT() TO 1 STEP -1
    IF INLIST(aWizFList[m.i,2],"G","M","U") &&Memo field
    =ADEL(aWizFList,m.i)
    DIMENSION aWizFList[MAX(1,ALEN(aWizFList,1)-1),NUM_AFIELDS]
    ENDIF
    ENDFOR
    后加上以下程序段:
    *獲取當前的數(shù)據(jù)表名
    tname=alias()
    *獲取數(shù)據(jù)庫名
    dname=cursorgetprop(database)
    set database to (dname)
    *獲取字段標題
    for m.i=1 to alen(awizflist,1)
    fname=tname+′.′+awizflist[m.i,1]
    *將字段名保存
    awizflist[m.i,16]=awizflist[m.i,1]
    if !empty(dname)
     fcaption=dbgetprop(fname,′field′,′caption′)
     *用字段標題代替字段名
     awizflist[m.i,1]=iif(!empty(fcaption),fcaption,awizflist[m.i,1])
    endif
    endfor
    THIS.RowSourceType = 5
    THIS.RowSource = "aWizFList"
    THIS.VALUE = THIS.LIST[1,1]
    將原最后一句THIS.VALUE=THIS.LIST[1]刪除
    二、修改cbofield2的init 事件
    THIS.RowSourceType = 5
    THIS.RowSource = "aWizFList"
    THIS.VALUE = THIS.LIST[1,1]