计算机二级:修改VisualFoxPro类库实现按标

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  VisualFoxProForWindows以其面向对象编程和可视编程技术已成为软件开发人员首选的开发工具之一。它提供的wizstyle.vcr类库中所包含的丰富的类,使软件开发更加容易和方便。
  Searchclass(查询)是wizstyle.vcr类库中的一个类,也是对数据进行基本操作必不可少的、最常使用的类之一,用它生成的查询界面中,直接用字段名作为查询的提示信息进行查询,这对最终用户来说是不合适的,因为最终用户并不能根据字段名来了解字段的真正含义。对于数据库中的表,VFP提供了字段描述项"标题(caption)",在查询类中可以用数据库中字段的描述项"标题"作为查询的提示信息进行查询。
  为解决以上问题,对不同的数据库设计不同的查询界面当然可以,但事半功倍、一劳永逸的方法还是修改类Searchclass。
  修改方法如下:
  首先,进入到项目管理(ProjectManager),选择Class页,展开wizstyle.vcr类库,找到searchclass后按Modify按键对searchclas类进行修改。
  先对cbofieds1的init事件代码进行修改,修改后的代码及对修改部分的注释如下:
  #DEFINENUM_AFIELDS16LOCALi,j增加一个局部变量jPUBLICaWizFList,aWizFLista增加一个全局变量aWizFListaDIMENSIONaWizFList[1]=AFIELDS(aWizFList)DIMENSIONaWizFLista[1]定义一个数组=AFIELDS(aWizFLista)将当前表的信息赋给数组aWizFListaj=aWizFLista(1,12)将当前表的名称赋给jFORm.i=FCOUNT()TO1STEP-1
  以下判断是否存在打开的数据库,考试,大提示并用数据库中的字段标题替代数组aWizFList的第一列字段名。对于自由表,因不存在标题,故仍使用字段名。
  IFLEN(DBC())$#@62;
  0aWizFList(m.i,1)=DBGETPROP(j+"."+aWizFList(m.i,1),"field","caption")ENDIFI
  FINLIST(aWizFList[m.i,2],"G","M","U")
  &&Memofield =ADEL(aWizFList,m.i) 
  DIMENSIONaWizFList[MAX(1,ALEN(aWizFList,1)-1),NAFIELDS]=ADEL(aWizFLista,m.i)
  该两行处理内存型子段 
  DIMENSIONaWizFLista[MAX(1,ALEN(aWizFLista,1)-1),
  NUM_AFIELDS]ENDIFENDFORTHIS.RowSourceType=5THIS.RowSource="aWizFList"
  把原来的以字段名为数据源改成了以标题为数据源THIS.VALUE=THIS.LIST[1]再将seachclass的seachitem事件代码的第6句m.cFldName=ALLTRIM(m.oField.Value)改为m.cFldName=ALLTRIM(aWizflista(m.oField.listitemid,1)) 完成以上修改后,存盘退出。
  以上所做的修改,在Windows95、98环境下,VFP5.0、VFP6.0 中运行正常,效果很好。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答