打印本文 打印本文  关闭窗口 关闭窗口  
改进VFP的Searchclass.VC
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:51:25  文章录入:杜斌  责任编辑:杜斌

使用过中文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]
打印本文 打印本文  关闭窗口 关闭窗口