使用过中文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]
|