Foxtable(狐表)用户栏目专家坐堂 → 如何在子表内绘制甘特图


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

主题:如何在子表内绘制甘特图

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/22 11:25:00 [显示全部帖子]

 上传具体实例说明。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/22 14:33:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成本测算.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/22 15:42:00 [显示全部帖子]

以下是引用chengjingliang在2017/8/22 15:11:00的发言:
改了哪些代码

 

把Tables("进度计划")改成了Tables("甘特图_Table1")

 

内部函数、AfterLoad、DrawCell、CurrentChanged事件的代码都改了。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/23 8:56:00 [显示全部帖子]

如果你有开发版,参考这里也行

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=85221&skin=0

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/23 11:02:00 [显示全部帖子]

以下是引用chengjingliang在2017/8/23 10:59:00的发言:
能不能在进度计划图后面显示计划产值,实际完成图后面显示完成比例

 

再画一段文字就好,参考

 

http://www.foxtable.com/webhelp/scr/1482.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/23 14:55:00 [显示全部帖子]

1、2

 

If DrawGannt Then
    Dim r As Row  = Tables("甘特图_Table1").Rows(e.Row.Index)
    Dim dt1 As Date = r("计划开始")
    Dim dt2 As Date = r("计划完成")
    Dim dt As Date = e.Col.Name.Replace("年","-").Replace("月_","-")
    e.StartDraw()
    If dt>=dt1 AndAlso dt<=dt2 Then
       
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.Green,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.Red,e.x ,e.y + 3, e.Width, e.Height - 7)
        End If
    End If
    Dim dt3 As Date = r("实际开始")
    Dim dt4 As Date = r("实际完成")
    If dt>=dt3 AndAlso dt<=dt4 Then
        e.Graphics.FillRectangle(Brushes.Black,e.x ,e.y + 8, e.Width, e.Height - 18)
    End If
    If dt = dt4 Then
        Dim fnt As New Font("宋体",9)
        Dim msg As String ="    "&  format(r("完成比例"), "0.00%")
        e.Graphics.DrawString(msg,fnt,Brushes.Black,e.x,e.y+2)
    End If

    e.EndDraw()
   
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/23 18:03:00 [显示全部帖子]

 汗...测试了一下,没办法,其它方法太复杂,只能这样处理。

 

If DrawGannt Then
    Dim r As Row  = Tables("甘特图_Table1").Rows(e.Row.Index)
    Dim dt1 As Date = r("计划开始")
    Dim dt2 As Date = r("计划完成")
    Dim dt As Date = e.Col.Name.Replace("年","-").Replace("月_","-")
    e.StartDraw()
    If dt>=dt1 AndAlso dt<=dt2 Then
       
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.Green,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.Red,e.x ,e.y + 3, e.Width, e.Height - 7)
        End If
    End If
    Dim dt3 As Date = r("实际开始")
    Dim dt4 As Date = r("实际完成")
    If dt>=dt3 AndAlso dt<=dt4 Then
        e.Graphics.FillRectangle(Brushes.yellow,e.x ,e.y + 8, e.Width, e.Height - 18)
    End If
   
    Dim d2 As Date = iif(r("计划完成")>r("实际完成"), r("计划完成"), r("实际完成"))
    Dim msg As String = format(r("完成比例"), "0.00%")
    If dt >= d2.AddDays(-msg.length+1) AndAlso dt <= d2 Then
        e.text = msg.Substring(msg.length-1-(d2-dt).TotalDays,1)
    End If

    e.EndDraw()
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/24 9:26:00 [显示全部帖子]

你把列宽调小一点才行。生成的列,设置列宽,参考代码

 

Tables("表A").grid.Cols.minsize = 2
Tables("表A").grid.Cols(2).Width = 5

 回到顶部