改进VFP的Searchclass.VC


使用过中文VFP的朋友都知道利用VFP提供的WIZARDS类库中的searchform.vcx和searchclass.vcx可以创建一个通用查询表单。这个查询非常通用,操作界面也非常简单明了。 但是,此表单有一个缺憾,就是此表单的字段对话框就只能显示字段名,如果数据表的字段名为英文时,显示的字段名对操作人员而言就显的不够清楚。我们一般在设计数据库时给每个字段加以中文标题,用于对字段名的详细说明,就像用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
后加上以下程序段:
*获取当前的数据表名
tname=alias()
*获取数据库名
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]

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus