回 帖 发 新 帖 刷新版面

主题:表单上表格单元格的动态显示

敬请各位高手指教!
在EXCEL中,单元格可设置显示条件,根据另一单元格的值显示不同的背景或前景色。
在表单上的表格能否也设置动态显示?如:此单元格的值比(此行上)另一列的值小,显示绿色;比另一列大显示红色,这样非常方便观察数据和比较。
我知道可在SETALL方法中按整行设置背景或后景色,但就不知道如何只对某一单元格设置显示条件。

回复列表 (共6个回复)

沙发

应该可以,也是用SETALL方法,只是设置的属性是如下几个:(你可以研究一下)
***DynamicBackColor和DynamicForeColor
如这果设置:
thisform.grid1.setall("DynamicBackColor",;
      "ICASE(条件1,REG(255,255,255),条件2,RGB(0,0,128),..用几个你自己看着办吧)","column")
&&&在此用ICASE函数来达到要求,但如果你用的字段名不在当前工作区注意加上别名,变量名最好是全局的才行

板凳

提这样想法的帖子不少,你查一查就能找到解决方法了。

3 楼

谢谢二楼老师的指点!!但我是菜鸟,看不明白:
1。ICASE是什么函数?我VFP8的函数和命令中不能查到?

我用:以下句子可以按行显示。
This.grid1.SetAll("DynamicBackColor", ;
   "IIF(MOD(RECNO(), 2)=0, RGB(255,255,255), RGB(192,255,192))", "Column")

4 楼

ICASE()是VFP9的一个函数!VFP8,你就改成IIF()函数吧,不过要是你有多个情况就复杂了点.

5 楼

谢谢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 楼

也来学习学习
[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里。

我来回复

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