分享

巧用VFP的Grid表格控件

 fnxyy 2011-09-14

巧用VFP的Grid表格控件

时间:2011-04-23 14:07:29  来源:科技小论文  作者:秩名

论文导读:很多VFP初学者采取使用BROWSE命令或在文件夹下双击数据表文件的方法对数据表进行浏览、查询和修改数据,但BROWSE命令操作界面呆板、不能脱离VFP的主窗口执行、容易出错(比如操作时不小心按了空格键,光标所在处的内容就被空格代替了)。设置表格的数据源类型recordsourcetype属性为1(别名),数据源recordsource属性为xsb,列数columncount属性为xsb表的字段数16,删除标记deletemark属性为.f.(不显示删除标记),只读属性readonly为.t.(不允许用户在表格中修改数据),并将列标题用汉字描述(即表1中备注内容),如column1.header1.caption值为“报到情况”等。
关键词:VFP,Grid控件,属性,设置技巧

  很多VFP初学者采取使用BROWSE命令或在文件夹下双击数据表文件的方法对数据表进行浏览、查询和修改数据,但BROWSE命令操作界面呆板、不能脱离VFP的主窗口执行、容易出错(比如操作时不小心按了空格键,光标所在处的内容就被空格代替了)。Grid表格控件是VFP表单的常用控件之一,能够进行再次编程,不仅操作界面美观,而且方便灵活、效率高。本文以新生报到管理为例,介绍几则Grid表格控件使用技巧。
  设有学生表(xsb.dbf),表结构如表1所示,建立表单文件,主要包括以下控件:1个表格控件(Grid1)、1个文本框、3个命令按钮(查询、报到、退出)等。发表论文
  1.设置表格基本属性
  设置表格的数据源类型recordsourcetype属性为1(别名),数据源recordsource属性为xsb,列数columncount属性为xsb表的字段数16,删除标记deletemark属性为.f.(不显示删除标记),只读属性readonly为.t.(不允许用户在表格中修改数据),并将列标题用汉字描述(即表1中备注内容),如column1.header1.caption值为“报到情况”等。
  2.设置表格显示颜色
  为表格的行、列等内容设置不同颜色,清晰、直观,减少了操作失误。
  2.1设置表格列显示颜色
  为了区分不同列或重要列,方便用户查看数据,可以对不同列设置不同颜色以示区分。例如,对表格(grid1)的第1列、第6列进行不同颜色区分,可在表格的初始化事件(init)中设置如下代码:
  thisform.grid1.column1.backcolor=rgb(128,128,128)
  thisform.grid1.column1.forecolor=rgb(255,255,255)
  thisform.grid1.column6.backcolor=rgb(255,0,0)
  thisform.grid1.column6.forecolor=rgb(255,255,255)
  2.2设置表格行显示颜色
  根据记录的奇偶性,设置记录隔行显示颜色,在表单的初始化事件(init)事件中设置如下代码:
  thisform.grid1.setall("DynamicBackColor","iif(mod(recn(),2)=0,rgb(255,255,0),rgb(255,255,255))")
  thisform.grid1.setall("DynamicForeColor","iif(mod(recn(),2)=0,rgb(255,0,0),rgb(0,0,0))")
  2.3设置选定记录颜色
  对表格中选定数据设置不同背景颜色和前景颜色,以区分选中的记录和非选中记录。在表格的afterrowcolchange事件中设置如下代码:
  a1=allt(str(recn()))
  this.setall("DynamicBackColor","iif(recn()=&a1,rgb(255,255,0),rgb(255,255,255))")
  this.setall("DynamicForeColor","iif(recn()=&a1,rgb(255,0,0),rgb(0,0,0))")
  thisform.refresh
  3.改变表格显示顺序
  由于已经向xsb.dbf设置索引,故分别在表格控件相应的列标题中添加单击(click)代码,代码内容为改变xsb的索引文件,可以实现按指定标题排序。以表格的考生号列为例,其列表题单击事件(click)代码如下:
  set orde to ksh
  thisform.refresh
  4.拆分显示表格
  有时为了固定显示表格中的一列或多列,可以拆分显示表格,表格的partition属性能实现这一功能。发表论文。当partition的值为0时,即表格不拆分,当partition大于0或指定具体值(如partition=150)时,表格拆分为左右两个面板,左面板宽度为设定值。发表论文。
  5、用程序代码改变表的数据
  本例采用用程序代码来实现登记学生报到情况和报到时间两项数据(即报到命令按钮的单击事件)。报到命令按钮单击事件(click)代码如下:
  if bdqk='已报到'
  =messagebox('此生已登记报到!',48,'警告')
  else
  if messagebox('考生号:'+ksh+' 姓名:'+xm+' 性别:'+xbdm+chr(13)+chr(13);
  +'省市:'+ss+' 毕业学校:'+zxmc+' 录取专业:'+lqzymc+chr(13)+chr(13);
  +'是否登记此生报到?',36,'询问')=6
  repl bdqk with '已报到',bdsj with datetime()
  endi
  endi
  thisform.grid1.setfocus
  thisform.refresh
  以上程序在VFP6.0中运行通过。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多