以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]这个甘特图问题不知道是否能实现 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=153942) |
||||
-- 作者:81538475 -- 发布时间:2020/8/28 10:08:00 -- [求助]这个甘特图问题不知道是否能实现 ![]() ![]() 1.希望根据table1的时间节点,对颜色进行切分,实现渐变的效果。 2.如果在table1里面增加时间列,也能实现此功能,而不需要修改代码。 密码888
|
||||
-- 作者:有点蓝 -- 发布时间:2020/8/28 10:23:00 -- 需要添加多个时间列,用于区分不同的时间段。 比如有时间列:日期1,日期2,日期3,日期4 日期1<时间段1<日期2、日期2<时间段2<日期3、日期3<时间段3<日期4 然后在代码里判断,如果当前列表示的日期在时间段1内就绘制颜色1,在时间段2内就绘制颜色2,以此类推
|
||||
-- 作者:81538475 -- 发布时间:2020/8/28 10:44:00 -- 就是必须把所有时间段都列出来吗?我是想用 isdate 的方法循环,因为正式的程序里面的时间段,会动态增加列的。 我是这么把时间列加进来的。但是后面的关于时间判断的循环,写的就有问题了。 For Each c As Col In Tables("项目分配_table1").Cols If c.IsDate Then If cr.IsNull(c.Name)=False Then Datet.Add(cr(c.Name)) End If End If Next |
||||
-- 作者:有点蓝 -- 发布时间:2020/8/28 11:11:00 -- 实例没看到有动态增加列的用法,重新上传符合需要的功能和数据的实例测试 |
||||
-- 作者:81538475 -- 发布时间:2020/8/28 11:31:00 -- 这个测试的时候,手动添加的。其实就是需要代码能够循环 目前的思路是。把所有的时间都添加 到一个list 中,然后进行排序。 然后根据这个list 的数量,把下图的颜色范围进行切分。然后设置成不同颜色的brush,将这些brush 加入到一个list里面 最后进行循环匹配。现在问题就出在这个循环匹配上。前面的时间匹配到的颜色,会被后面的覆盖。 For i As Integer = 1 To Datet.Count-1 \'---循环 msgbox(Datet(i) ) If dt < Datet(i) Then e.Graphics.FillRectangle(blue ,e.x ,e.y + 5, e.Width, e.Height - 13) \'Datet.Remove(Datet(i)) \'BRS.Remove(BRS(i)) Exit For Else If i<=Datet.Count-2 Then If dt >= Datet(i) AndAlso dt<=Datet(i+1) Then e.Graphics.FillRectangle(brred,e.x ,e.y + 3, e.Width, e.Height - 8) Exit For End If End If If dt > Datet(Datet.Count-1) AndAlso dt<=dt2 Then e.Graphics.FillRectangle(gray,e.x ,e.y + 3, e.Width, e.Height - 8) Exit For End If e.EndDraw() End If Next |
||||
-- 作者:有点蓝 -- 发布时间:2020/8/28 11:43:00 -- 实例 |
||||
-- 作者:81538475 -- 发布时间:2020/8/28 11:45:00 -- 1楼有实例,,我又简化了一下。
密码888
[此贴子已经被作者于2020/8/28 11:45:21编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/8/28 12:13:00 --
|
||||
-- 作者:81538475 -- 发布时间:2020/8/28 14:03:00 -- 感谢 |
||||
-- 作者:81538475 -- 发布时间:2020/8/28 14:44:00 -- 有一个扩展问题,,我把table2的属性设置成allowededit=true ,但是打字上去之后,字是看不到的。这个能处理吗 |