论文导读:很多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中运行通过。
参考文献
[1] Microsoft Corporation 著,希望图书创作室译.Microsoft Visual FoxPro6.0 中文版语言参考手册,1999
[2] 史济民,汤观全,Visual Foxpro及其应用系统开发,清华大学出版社,2000
[3] 周帮建,Visual FoxPro 6.0高级编程,清华大学出版社,1999
|