回 帖 发 新 帖 刷新版面

主题:真的就没有人能回答这问题

我有一表单,上有一表格控件,用于显示查询得到的结果.我想让显示的结果中的 第1条记录和第5第记录的背景色都显示为蓝色,该怎么办?
看了一下VFP8帮助,对SEALLT 和DynamicForeColor这些词语比较熟悉,但具体要实现这个功能,却不知怎么做。
请老师们指点,
小生这厢有礼了。

发贴下一个月了,还是没人解答。

回复列表 (共6个回复)

沙发

网友的东西,仅供参考:
关于在VFP中GRID里颜色设置问题

1、只设置一条记录颜色(有选择性)

主要是针对一个表GRID里,当我们选择了某个记录时,要使这个记录高亮显示,以区别其他记录,方便查看。

在GRID的AfterRowColChange事件中,写入如下代码
LPARAMETERS nColIndex && 系统代码

Mcurrec=allt(str(recn())) && 获取当前所在记录号
this.setall("dynamicbackcolor",'IIF(RECNO()=&Mcurrec.,RGB(255,0,0),RGB(255,255,255))') && 设置背景色,满足条件为红色,不满足为白色
this.setall("dynamicforecolor",'IIF(RECNO()=&Mcurrec.,RGB(255,255,0),RGB(0,0,0))',"column") && 设置前景色,满足条件为黄色,不满足为黑色
this.refresh && 这个刷新必须要,不然不满足条件的记录所显示的高亮显示就不会退去

2、设置多种颜色(无规律性)

主要是针对一个表GRID里,当记录很多时,而且某些记录具有特定的属性时,我们需要设置颜色来区分这些数据,如下代码可以在刷新或初始化表单时,设置其属性。

thisform.Grid1.SetAll("DynamicBackColor","IIF(type>=1,iif(type>=2,iif(type>=3,rgb(0,128,0),rgb(192,192,192)),rgb(255,0,0)),rgb(255,255,255))")

如上代码可以说明,如果某记录中有一个字段type,那么根据这个字段的数据值,可以显示不同颜色,可以转换成如下公式:

iif(条件1,iif(条件2,iif(条件3,iif(条件4,iif(条件5,[…iif(条件N,颜色N,颜色n-1)…,]颜色5,颜色4),颜色3),颜色2),颜色1),其他颜色)

3、设置多种颜色(有规律性)

这种就比较简单了,一般是在看较多记录时,多了让人眼花缭乱,所以每隔一行设置颜色,就是

thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) , RGB(0,255,0))", "Column")

板凳


1楼的回答有些道理。但是同时也出了一个问题。我想要的是同时显示几条有背景色的记录。都用IIF这样的条件语句,那么最终都是只有一条记录会显示背景色以。也就是说,当满足第一条件时,第一条记录显示颜色。但当语句执行到第5条语句时,第5条记录满足条件显示颜色。但是这个时候,第一条记录已经不满足条件了。又失去了背景色。也就是说,用IIF语句。始终只有一条记录显示颜色。这该怎么办。

3 楼


其实,我所说的显示背景色的记录是有规律的。第1 ,5 ,9 , 13。。。。。。,也就是说每相隔四条记录,就显示一种背景色。例中是隔行显示。

4 楼


自力更生,艰苦奋斗。
还是自己把它解决了。
不是骄傲
而且是悟出了点东西,那就是,你自己动手去尝试。每次尝试都会有所发现。
每次尝试都会在向成功靠近

5 楼

基本算法应该知道
(X-1)/4=INT((X-1)/4)

6 楼

结合1楼、5楼:
thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO()-1,4)=0, RGB(255,255,255) , RGB(0,255,0))", "Column")

我来回复

您尚未登录,请登录后再回复。点此登录或注册