以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 带条件的背景样式,为什么不对?(完美解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30859) |
-- 作者:zerov -- 发布时间: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 [此贴子已经被作者于2013-4-6 20:15:49编辑过]
|
-- 作者:FoxMan -- 发布时间:2013/4/5 14:19:00 -- 窗口Table与数据标记 如果窗口Table是Normal型,不管是副本还是非副本,都可以按常规增加自定义样式,然后设置DrawCell事件代码标记数据。 示例 假定窗口有个Table控件,类型SQLTable,希望用红底白字在数量列标出值超过500的单元格。 设计步骤 1、在窗口的AfterLoad事件中加入代码: DataTables("窗口1_Table1").AddUserStyle("a", Color.Red, Color.White) 上述代码增加了一个红底白字的样式,样式名为"a"。 2、然后设置Table控件的DrawCell事件代码: If e.Col.Name = "数量"
Then |
-- 作者:zerov -- 发布时间:2013/4/5 14:23:00 -- 回复:(FoxMan)窗口Table与数据标记如果窗口Table是... 我也在帮助中看到了这段,可是,我这个表不是在窗口中,是直接的一个数据表,如何弄? |
-- 作者:FoxMan -- 发布时间: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 -- 发布时间:2013/4/5 15:12:00 -- 回复:(FoxMan)if e.Col.Name = "回款占总应收比率"... 谢谢,完美解决。 不过感觉代码有点多,能不能精简使得运行更快点呢? 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 -- 发布时间:2013/4/7 9:24:00 -- 这句如何精简? |
-- 作者:Bin -- 发布时间:2013/4/7 9:49:00 -- 以下是引用zerov在2013-4-7 9:24:00的发言:
代码的效率与否 不是看代码是否精简. 有时候复杂冗长的代码效率比简短的代码高效得多.你在大数据量的环境下测试一下.如果感觉速度可以.就没必要再折腾了.
这句如何精简? |
-- 作者:blackzhu -- 发布时间:2013/4/7 9:54:00 -- 说的好 ,现在的电脑 速度都很好,所以 只要执行了结果正确,也就尽量不要去纠结了. |
-- 作者:zerov -- 发布时间:2013/4/7 12:21:00 -- 回复:(blackzhu)说的好 ,现在的电脑 速度都很好,所... OK,谢谢各位大师们,明白了 |