主题:表单上表格单元格的动态显示
pupil
[专家分:0] 发布于 2008-05-07 10:02:00
敬请各位高手指教!
在EXCEL中,单元格可设置显示条件,根据另一单元格的值显示不同的背景或前景色。
在表单上的表格能否也设置动态显示?如:此单元格的值比(此行上)另一列的值小,显示绿色;比另一列大显示红色,这样非常方便观察数据和比较。
我知道可在SETALL方法中按整行设置背景或后景色,但就不知道如何只对某一单元格设置显示条件。
回复列表 (共6个回复)
沙发
hw2007name [专家分:4790] 发布于 2008-05-07 11:31:00
应该可以,也是用SETALL方法,只是设置的属性是如下几个:(你可以研究一下)
***DynamicBackColor和DynamicForeColor
如这果设置:
thisform.grid1.setall("DynamicBackColor",;
"ICASE(条件1,REG(255,255,255),条件2,RGB(0,0,128),..用几个你自己看着办吧)","column")
&&&在此用ICASE函数来达到要求,但如果你用的字段名不在当前工作区注意加上别名,变量名最好是全局的才行
板凳
北京种子乐 [专家分:3710] 发布于 2008-05-07 11:32:00
提这样想法的帖子不少,你查一查就能找到解决方法了。
3 楼
pupil [专家分:0] 发布于 2008-05-09 22:24:00
谢谢二楼老师的指点!!但我是菜鸟,看不明白:
1。ICASE是什么函数?我VFP8的函数和命令中不能查到?
我用:以下句子可以按行显示。
This.grid1.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO(), 2)=0, RGB(255,255,255), RGB(192,255,192))", "Column")
4 楼
hw2007name [专家分:4790] 发布于 2008-05-09 23:39:00
ICASE()是VFP9的一个函数!VFP8,你就改成IIF()函数吧,不过要是你有多个情况就复杂了点.
5 楼
pupil [专家分:0] 发布于 2008-05-10 21:17:00
谢谢4楼老师的大力支持!
我按你在4楼的解释,理解ICAS()是一个条件函数,可逐一列出条件,及在该条件下的取值。和IIF()类似,则
在1楼的例句和3楼的例句功能都是使每一行变色。我试了一试:
Thisform.grd1.SetAll("DynamicBackColor","ICASEthisform.grid1.Column5<ThisForm.grid1.Column2,;
RGB(0,125,0),ThisForm.grid1.column5>ThisForm.grd1.Column2,RGB(125,0,0))","column")
这仍然是按行变色。
我想要的是:
如果第2栏比第5栏小,则第2栏显示绿色;如果第2栏比第5栏大,则第2栏显示红色。
6 楼
l021126 [专家分:660] 发布于 2008-05-12 15:50:00
也来学习学习
[quote]
Thisform.grd1.SetAll("DynamicBackColor","ICASEthisform.grid1.Column5<ThisForm.grid1.Column2,;
RGB(0,125,0),ThisForm.grid1.column5>ThisForm.grd1.Column2,RGB(125,0,0))","column")
这仍然是按行变色。
我想要的是:
如果第2栏比第5栏小,则第2栏显示绿色;如果第2栏比第5栏大,则第2栏显示红色。[/quote]
用上述代码在一个有类似条件的表单内试了一下,没成功,连行颜色都没改,Column没有value值,能比较大小吗?但没报错。加上text1.value,结果一样,不改颜色,也没报错。
另外请教hw2007name:
这段代码放在呢?我放在了表单的init里。
我来回复