Foxtable(狐表)用户栏目专家坐堂 → 在单元格绘制甘特图(增加进度条)


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

主题:在单元格绘制甘特图(增加进度条)

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
在单元格绘制甘特图(增加进度条)  发帖心情 Post By:2016/1/18 8:47:00 [只看该作者]

按照帮助文件http://www.foxtable.com/help/index.html?n=0395.htm#userconsent#(在单元格绘制甘特图)任务表中增加了“进度”列(整数),想在单元格中画出进度颜色(gold),代码如下,有个问题,当进度为100时,表现正确,但小于100时,则进度条比例不正确,求解,谢谢

If DrawGannt Then
    Dim r As Row  = Tables("任务").Rows(e.Row.Index)
    Dim dt1 As Date = r("启动日期")
    Dim dt2 As Date = r("完成时间")
    Dim dt As Date = e.Col.Name.Replace("年","-").Replace("月_","-")
    
    Dim t2 As Table = e.Table
    Dim nm As String = dt2.Year & "年" & dt.Month &"月_" & dt.Day
    Dim idx As Integer= t2.cols(nm).Index
    Dim idx1 As Integer= idx * r("进度")\100    
    If dt>=dt1 AndAlso dt<=dt2 Then
        e.StartDraw()
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.springGreen,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.lightskyblue,e.x ,e.y + 3, e.Width, e.Height - 10)
        End If
        If dt>=dt1 AndAlso dt <= t2.cols(idx1).Name.Replace("年","-").Replace("月_","-") Then
            e.Graphics.FillRectangle(Brushes.gold,e.x ,e.y + 2, e.Width, e.Height - 10)
        End If
        e.EndDraw()
    End If
End If



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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/18 8:51:00 [只看该作者]

上传完整例子测试

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/18 9:10:00 [只看该作者]

汗,人家的例子,是根据日期时间绘制的,跟你的进度一点关系都没有。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/18 9:13:00 [只看该作者]

具体怎么显示不对,上传实例测试。


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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2016/1/18 20:47:00 [只看该作者]

先自己试试再上传,问一个其他问题:
当鼠标放在甘特图上时,想用ShowToolTip显示左边“任务”表中“任务内名称”单元格的内容,谢谢

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/18 20:57:00 [只看该作者]

试试

 

If DrawGannt Then
    Dim r As Row  = Tables("任务").Rows(e.Row.Index)
    Dim dt1 As Date = r("启动日期")
    Dim dt2 As Date = r("完成时间")
    Dim dt As Date = e.Col.Name.Replace("年","-").Replace("月_","-")
   
    Dim t2 As Table = e.Table
    Dim nm As String = dt2.Year & "年" & dt.Month &"月_" & dt.Day
    Dim idx As Integer= t2.cols(nm).Index
    Dim sp As TimeSpan = dt2 - dt1
    Dim idx1 As Integer = r("进度")/100 * sp.TotalDays
    Dim dt3 As Date = dt1.AddDays(idx1)

    If dt>=dt1 AndAlso dt<=dt2 Then
        e.StartDraw()
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.springGreen,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.lightskyblue,e.x ,e.y + 3, e.Width, e.Height - 10)
        End If
        If dt>=dt1 AndAlso dt <= dt3 Then
            e.Graphics.FillRectangle(Brushes.gold,e.x ,e.y + 2, e.Width, e.Height - 10)
        End If
        e.EndDraw()
    End If
End If


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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2016/1/20 14:01:00 [只看该作者]

进度条问题已解决,用我最初的方案就可以(原来是日期字符错了)。
另一个问题,求解:
当鼠标放在甘特图上时,想用ShowToolTip显示左边“任务”表中“任务内名称”单元格的内容,谢谢

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/20 14:14:00 [只看该作者]

Dim r As Row  = Tables("任务").Rows(e.Row.Index)

e.Table.ShowToolTip(r("任务名称"),e.Row,e.Col)

 

http://www.foxtable.com/help/topics/2681.htm

 

 


 回到顶部