以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]对第一个显示列DrawCell着色,应该怎么办 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47348) |
-- 作者:jnletao -- 发布时间:2014/3/8 17:30:00 -- [求助]对第一个显示列DrawCell着色,应该怎么办 对第一个显示列DrawCell着色,应该怎么办 ? 就是我的列显示隐藏是让用户控制的, 可是有个着色,想着让它始终对第一列着色!
|
-- 作者:狐狸爸爸 -- 发布时间:2014/3/8 17:31:00 -- 为了提高效率,可以用一个全局变量,将第一个显示列保存在这个全局变量中。
|
-- 作者:jnletao -- 发布时间:2014/3/8 17:36:00 -- 可我的显示隐藏 用是的是 系统命令,Syscmd.Row.ShowHideRows(),而且列位置是可以拖动的,该如何 获取 第一个显示列? |
-- 作者:ericsky -- 发布时间:2014/3/8 17:41:00 -- 遍历列,判断是否可见,试试看可不可以 |
-- 作者:狐狸爸爸 -- 发布时间:2014/3/8 17:42:00 -- for i as integer = 0 tables("xxx").cols if tables("xxx").cols(i).Visible then MessaGEBOX.SHOW("第一个显示列是:"& tables("xxx").cols(i)) end if next |
-- 作者:jnletao -- 发布时间:2014/3/8 17:44:00 -- 那如何监测 Syscmd.Row.ShowHideRows() 事件 |
-- 作者:lsy -- 发布时间:2014/3/8 17:56:00 -- DataTables("表A").AddUserStyle("a", Color.Red, Color.White) If e.Col.Index = 0 Then e.Style = "a" End If |
-- 作者:jnletao -- 发布时间:2014/3/8 18:03:00 -- DrawCell ‘RowColorShow 着色开关,MaxProcessNum,最终进度 If RowColorShow Then If e.Col.Index = 0 AndAlso e.Row.IsNull("流程进度") = False Then e.StartDraw() Dim Width As Integer = (e.Width - 2 ) * e.Row("流程进度") \\ MaxProcessNum e.Graphics.FillRectangle(Brushes.SkyBlue,e.x + 1,e.y + 1, Width, e.Height - 2) e.EndDraw() End If End If If e.Col.Index = 0 ,切换显示隐藏后不行 [此贴子已经被作者于2014-3-8 18:04:31编辑过]
|
-- 作者:逛逛 -- 发布时间:2014/3/8 18:17:00 --
1、遍历列,找到第一个可视列,获取列名
后面只要判断一下是单元格是否是这一列的就行了 |
-- 作者:lsy -- 发布时间:2014/3/8 18:24:00 -- DataTables("表A").AddUserStyle("a", Color.Red, Color.White) Dim lst As New List(Of Integer) For i As Integer = 0 To e.Table.Cols.Count - 1 If e.Table.Cols(i).Visible = True AndAlso lst.Contains(i) = False Then lst.Add(i) End If Next Dim str() As Integer = lst.ToArray Array.Sort(str) If e.Col.Index = str(0) Then e.Style = "a" End If |