Foxtable(狐表)用户栏目专家坐堂 → 带条件的背景样式,为什么不对?(完美解决)


  共有7801人关注过本帖树形打印复制链接

主题:带条件的背景样式,为什么不对?(完美解决)

帅哥哟,离线,有人找我吗?
zerov
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
带条件的背景样式,为什么不对?(完美解决)  发帖心情 Post By:2013/4/5 13:54:00 [只看该作者]

想实现效果:如下图,几列数据中,当比率小于30%时,背景红色,小于50%时,背景黄色,否则背景无(即白色),首先设立了2种样式(在界面中设置的,俺还不会用代码设置样式),名为:clr,cly,然后在表的DateChanged中写入代码:
Select Case e.Col.Name
    Case
"回款占总应收比率
"
         if e.datarow(
"回款占总应收比率")>0.5 then ‘比率大于50%时无背景颜色
             e.style=isnothing
         elseif e.datarow("回款占总应收比率")>0.3 then ’比率大于30%时背景样式为黄色
             e.style="cly"  ‘比率小于30%时背景样式为红色
         else e.style="clr“
     end if
end if
  Case "回款占总应收比率"
         if e.datarow("确认收入占总应收比率")>0.5 then‘比率大于50%时无背景颜色
             e.style=isnothing
         elseif e.datarow("确认收入占总应收比率")>0.3 then’比率大于30%时背景样式为黄色
             e.style="cly"‘比率小于30%时背景样式为红色
         else e.style="clr“
     end if
end if
End Select
 


此主题相关图片如下:bilu.png
按此在新窗口浏览图片

[此贴子已经被作者于2013-4-6 20:15:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
FoxMan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:302 积分:1860 威望:0 精华:0 注册:2012/4/27 11:34:00
  发帖心情 Post By:2013/4/5 14:19:00 [只看该作者]

窗口Table与数据标记

如果窗口Table是Normal型,不管是副本还是非副本,都可以按常规增加自定义样式,然后设置DrawCell事件代码标记数据。

如果窗口Table是SQLTable或SQLQuery,虽然同样可以设置DrawCell事件代码,但是却无法通过菜单增加自定义样式,只能通过AddUserStyle方法用代码增加自定义样式。

示例

假定窗口有个Table控件,类型SQLTable,希望用红底白字在数量列标出值超过500的单元格。

设计步骤

1、在窗口的AfterLoad事件中加入代码:

DataTables("窗口1_Table1").AddUserStyle("a", Color.Red, Color.White)

上述代码增加了一个红底白字的样式,样式名为"a"。


2、然后设置Table控件的DrawCell事件代码:

If e.Col.Name = "数量" Then
    If e.Row("数量") >=200 Then
       e.Style = "a"
    End
If

End
If


 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(FoxMan)窗口Table与数据标记如果窗口Table是...  发帖心情 Post By:2013/4/5 14:23:00 [只看该作者]

 我也在帮助中看到了这段,可是,我这个表不是在窗口中,是直接的一个数据表,如何弄?

 回到顶部
帅哥哟,离线,有人找我吗?
FoxMan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:302 积分:1860 威望:0 精华:0 注册:2012/4/27 11:34:00
  发帖心情 Post By:2013/4/5 14:45:00 [只看该作者]

if e.Col.Name = "回款占总应收比率" then 
         if e.datarow("回款占总应收比率") <  0.3 Orelse e.datarow("确认收入占总应收比率") < 0.3 then 
              e.style="cly"   ‘比率< 30%时背景样式为红色        
         elseif e.datarow("回款占总应收比率") < 0.5 Orelse e.datarow("确认收入占总应收比率") < 0.5 Then 
               e.style="clr“    ’比率 < 30%时背景样式为黄色
        end if
End if


 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(FoxMan)if e.Col.Name = "回款占总应收比率"...  发帖心情 Post By:2013/4/5 15:12:00 [只看该作者]

谢谢,完美解决。

不过感觉代码有点多,能不能精简使得运行更快点呢?

If e.col.Name = "回款占总应收比率" Then
    If e.Row.IsNull("回款占总应收比率") = False  
        If e.Row("回款占总应收比率") < 0.3  Then
            e.Style = "clr"
                ElseIf e.Row("回款占总应收比率") < 0.5  Then
                    e.style ="cly"
                        ElseIf e.Row("回款占总应收比率") < 0.7  Then
                            e.style ="clb"
                            End If
                    End If
               End If

If e.col.Name = "回款占应收比率"  Then
    If e.Row.IsNull("回款占应收比率")=False  
        If e.Row("回款占应收比率")  < 0.3 Then
            e.Style = "clr"
                ElseIf e.Row("回款占应收比率") < 0.5 Then
                    e.style ="cly"
                        ElseIf e.Row("回款占应收比率") < 0.7 Then
                            e.style ="clb"
                            Else e.style =""
                            End If
                    End If
               End If
[此贴子已经被作者于2013-4-6 20:38:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
  发帖心情 Post By:2013/4/7 9:24:00 [只看该作者]

这句如何精简?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/4/7 9:49:00 [只看该作者]

以下是引用zerov在2013-4-7 9:24:00的发言:
这句如何精简?

代码的效率与否 不是看代码是否精简. 有时候复杂冗长的代码效率比简短的代码高效得多.你在大数据量的环境下测试一下.如果感觉速度可以.就没必要再折腾了.

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/4/7 9:54:00 [只看该作者]

说的好 ,现在的电脑 速度都很好,所以 只要执行了结果正确,也就尽量不要去纠结了.

 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(blackzhu)说的好 ,现在的电脑 速度都很好,所...  发帖心情 Post By:2013/4/7 12:21:00 [只看该作者]

OK,谢谢各位大师们,明白了

 回到顶部