VFP表单设计中Grid表的着色设置

发布时间:2018-06-30 20:06:27   来源:文档文库   
字号:

针对VisualFoxpro表单设计中Grid表的着色设置

【摘 要】:本文论述在Visual Foxpro表单设置中,根据不同字的字段、记录中字段的属性值、选中的记录以及在多记录显示中,对Grid表中的记录着色,以区分不同的选择或记录的具体方法及应用场合。

【关键词】:VisualFoxpro Grid 着色设置

在利用VisualFoxpro开发各种管理系统中,为了在表单中显示多条记录,常用方法在表单中添加Grid(以下称“表格”)控件。然而,当表格中的字段较多或显示的记录较多时,如果表格的中文字的颜色又都一样,未免让人看了眼花缭乱,容易造成这样或那样的操作错误。如果能根据表格中的不同字段、不同记录、关键字段等赋予不同的着色方式以区分不同的字段或记录,减少不必要的操作失误,其效果就不言而喻了。笔者在系统开发的实践中,针对表格中记录的不同特性,探索出几种在表格中着色的具体方法及应用场合,现阐述如下。

1、对表格的不同列(字段)设置不同的着色方式

如果需浏览的表格存在较多列,为了区分不同列或某些重要列,以方便用户浏览记录、美化表格设置,我们可以对不同的列或重要列采用不同的着色。具体是在表单的适当位置(如笔者在表单的activate事件中)中添加如下代码:

&&设某一表格(grid1)在三列

thisform.grid1.column1.backcolor=rgb(255,255,0)

thisform.grid1.column1.forecolor=rgb(255,0,255)

thisform.grid1.column3.backcolor=rgb(255,0,0)

thisform.grid1.column3.forecolor=rgb(255,255,255)

以上代码的含义是设置表的第一列的背景色和前景色(文字的颜色)为黄色和紫色;第三列的背景色和前景色(文字的颜色)为红色和白色。

2、对表格中选定的单元格进行着色

如果表格中存在的记录很多或是有较多的列,为了便于浏览某一选定的单元格数据,可以对表格中选定的单元格进行着色。具体是在表单的适当位置(如笔者在表单的activate事件中)中添加如下代码:

thisform.grid1.column2.text1.selectedbackcolor=Rgb(255,0,0)

thisform.grid1.column2.text1.selectedforecolor=Rgb(255,255,0)

以上代码的含义是设置当表格的第二列的某一单元格被选中时,将选中单元格的背景色和前景色(文字的颜色)分别设为红色和黄色。同理也可设置其它列单元格被选中时的着色方式。

3、对表格中选中记录的着色

如果某一表格的记录较多,如果需在表格中选中某一条记录,并对该记录进行处理(如要从表格中删除某条记录,或修改某一字段值)。这时为了能明确区分选中的记录与未选中的记录,这时可以通过设置,使选中的记录高亮显示,以区别其它记录,方便用户区分。具体做法是在表格AfterRowColChange事件中添加如下代码:

dqjl=allt(str(recno()))

this.setall("dynamicbackcolor",'IIF(recno()=&dqjl,RGB(255,255,0),RGB(255,255,255))')

this.setall("dynamicforecolor",'IIF(recno()=&dqjl,RGB(255,0,255),RGB(0,0,0))’)

this.refresh

上述代码的具体含义是:

第一句:通过Recno()函数获最表格中的被选中记录的记录号(即当前记录),然后将其转为字符存于变量DQJL中。

第二句:通过表格的SETALL方法设置表格中选中记录的背景色(即表格的dynamicbackcolor属性)。这里通过IIF()函数来进行设置,即如果记录号等当前记录,将其背景色设为黄色,否则设为白色。

第三句:通过表格的SETALL方法设置表格中选中记录的前景色(即表格的dynamicforecolor属性)。也是通过IIF()函数来进行设置,即如果记录号等当前记录,将其前景色设为紫色,否则设为黑色。

注意代码中最后一句刷新表格命令是不可缺少的,不然当从一条记录移到别一条记录时,前一条着色的记录就不会还原成原来的颜色。

4、对表格进行隔行着色

在浏览表格时,如果记录很多,很容易让人感到眼花缭乱,这时可以对表格进行隔行着色显示,以方便用户对记录的浏览。具体是在表单的适当位置(如笔者在表单的activate事件中)中添加如下代码:

thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0,;

RGB(255,255,0) , RGB(255,255,255))" )

this.setall("dynamicforecolor",'IIF(MOD(RECNO( ), 2)=0,RGB(255,0,255),;

RGB(0,0,0))')

以上代码的具体含义是:

第一句:通过表格的SETALL方法设置表格的背景色,将记录号为偶数的设为黄色,奇数设为白色。

第一句:通过表格的SETALL方法设置表格的前景色,将记录号为偶数的设为紫色,奇数设为黑色。

其中:MOD(RECNO() 2)为取模函数,即将表格中记录的记录号与2相除取余数,从而判断该记录为奇数还是偶数。

这样在记录的浏览时对于大批的浏览记录,就能使表格的奇数行和偶数行显示出不同的颜色,使浏览者能轻松地浏览记录,同时也添加了表格的美观度。这种设置方法的缺点是要求在表格显示的记录,其在数据表中的记录号最好是连续的记录,因为它是根据记录号奇偶来设置颜色的。所以当连续的多条记录如果其在数据表中的记录号均为奇数或是偶数时,其显示的颜色也就一样了,从而体现不出其效果来。

5、根据记录的某一字段值对记录进行动态着色

在实际应用中,根据表格中记录的某一字段或多个字段的属性值进行记录着色,其意义重大。例如:当我们在表单中浏览学生考试成绩表时,如果对表格中存在不及格记录以高亮的形式显示或根据不及格门数的情况对其进行不同着色,就能给人以一目了然之感,其效果自然是不言而喻。下面说明这类表格的设置方法。

假设有一个Grade.dbf(学生成绩表),其字段主要有:姓名,语文,数学,英语,政治,化学,体育,不及格门数。现在根据不及格门数情况来对记录进行着色。为此可在表单的相关事件(如笔者在表单的activate事件中)中添加如下代码:

thisform.Grid1.SetAll("DynamicBackColor","IIF(不及格门数>=1,;

iif(不及格门数>=2,iif(不及格门数>=3,iif(不及格门数>=4,rgb(0,0,255),;

rgb(255,0,0)),rgb(255,255,0)),rgb(0,255,255)),rgb(55,255,255))")

以上代码的含义是,设置记录的背景色,将4门以上不及格的记录着为蓝色,3门不及格的记录着为红色,2门不及格的记录着为黄色,1门不及格的记录着为紫色,其它记录着为白色。这里是根据这个不及格门数字段的值,显示不同着色方式。

我们可以将上面代码中的IIF条件语句写成通式即:

iif(条件表达式1,iif(条件表达式2,iif(条件表达式3[,...iif(条件表达式n,颜色n,...),颜色3],颜色2),颜色1),其他颜色)

根据这个通式就可以方便地为需要对表格中的特征记录进行动态着色的方法。

以上对表格的各种着色方式是笔者长期从事数据库管理系统开发中不断探索出的一些经验和具体方法。当然在实际应用中我们要视具体的Grid表进行有效的着色方式,或采取多种着色方式组合使用,方能收到用户满意的效果。切莫千篇一律地照般,因为这样就可能适得其反。我们的一切出发点都应该是用户,使用那种着色方式或几种着色方式的配合使用,其目的都是要为了增强表格中数据的可读性、美化表格,从而能使用户提高工作效率,最大限度地减少不必要的误操作。

本文来源:https://www.2haoxitong.net/k/doc/6039a8fb0242a8956bece412.html

《VFP表单设计中Grid表的着色设置.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式