主题:真的就没有人能回答这问题
yjgzs
[专家分:10] 发布于 2009-01-01 13:00:00
我有一表单,上有一表格控件,用于显示查询得到的结果.我想让显示的结果中的 第1条记录和第5第记录的背景色都显示为蓝色,该怎么办?
看了一下VFP8帮助,对SEALLT 和DynamicForeColor这些词语比较熟悉,但具体要实现这个功能,却不知怎么做。
请老师们指点,
小生这厢有礼了。
发贴下一个月了,还是没人解答。
回复列表 (共6个回复)
沙发
lwh1188 [专家分:25840] 发布于 2009-01-01 15:57:00
网友的东西,仅供参考:
关于在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")
板凳
yjgzs [专家分:10] 发布于 2009-01-02 13:14:00
1楼的回答有些道理。但是同时也出了一个问题。我想要的是同时显示几条有背景色的记录。都用IIF这样的条件语句,那么最终都是只有一条记录会显示背景色以。也就是说,当满足第一条件时,第一条记录显示颜色。但当语句执行到第5条语句时,第5条记录满足条件显示颜色。但是这个时候,第一条记录已经不满足条件了。又失去了背景色。也就是说,用IIF语句。始终只有一条记录显示颜色。这该怎么办。
3 楼
yjgzs [专家分:10] 发布于 2009-01-02 13:22:00
其实,我所说的显示背景色的记录是有规律的。第1 ,5 ,9 , 13。。。。。。,也就是说每相隔四条记录,就显示一种背景色。例中是隔行显示。
4 楼
yjgzs [专家分:10] 发布于 2009-01-02 13:39:00
自力更生,艰苦奋斗。
还是自己把它解决了。
不是骄傲
而且是悟出了点东西,那就是,你自己动手去尝试。每次尝试都会有所发现。
每次尝试都会在向成功靠近
5 楼
zhaoyufei [专家分:550] 发布于 2009-01-04 12:06:00
基本算法应该知道
(X-1)/4=INT((X-1)/4)
6 楼
hw2007name [专家分:4790] 发布于 2009-01-04 13:59:00
结合1楼、5楼:
thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO()-1,4)=0, RGB(255,255,255) , RGB(0,255,0))", "Column")
我来回复