Foxtable(狐表)用户栏目专家坐堂 → [求助]甘特图没有自动刷新


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

主题:[求助]甘特图没有自动刷新

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


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
[求助]甘特图没有自动刷新  发帖心情 Post By:2022/1/20 8:33:00 [只看该作者]

老师好!
学习单元格生成甘特图,图上可以加上标题的例子:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=74437&skin=0
当修改结束日期时,右侧的图没有跟随变化。狐表自带的示例是可以跟随变化的,照着改也没有改对。
请老师指教。谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编码绘制甘特图-红.table





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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/20 9:00:00 [只看该作者]

使用的用法和帮助不是一回事。

上面使用了合并单元格的用法,更改日期后要需要取消合并单元格,然后重新设置合并

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


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
  发帖心情 Post By:2022/1/20 14:39:00 [只看该作者]

蓝老师:
我按老师提示,把自带示例的代码写在前面,标题文字代码写在后面;然后把窗口afterload中生成文字的代码注释掉。其他没有问题,只是文字只显示在第一个单元格中~     在drawcell中合并单元格怎么写?

drawcell代码:
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("月_","-")
    If dt>dt1 AndAlso dt<dt2 Then
        e.StartDraw()
        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
        e.EndDraw()
    End If
    
    If dt = dt1 Then        
        e.StartDraw()
        e.Graphics.FillRectangle(Brushes.Green,e.x ,e.y + 5, e.Width, e.Height - 10)
        Dim fnt As New Font("宋体",9)
        Dim msg As String = r("任务名称")
        e.Graphics.DrawString(msg,fnt,Brushes.yellow,e.x,e.y+9)
        'Dim rng As C1.Win.C1FlexGrid.CellRange = tb.Grid.GetCellRange(i, sp2.TotalDays+1, i, sp2.TotalDays+1+sp.TotalDays)
        'tb.Grid.MergedRanges.add(rng)        
        e.EndDraw()
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看



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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/20 14:57:00 [只看该作者]

drawcell中没有合并单元格的用法。暂时也没有其它办法

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


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
  发帖心情 Post By:2022/1/21 12:29:00 [只看该作者]

蓝老师好!
如果不去合并单元格,把  r("任务名称") 内容绘制进一个单元格一个字符怎么做?

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/21 13:34:00 [只看该作者]

比如r("任务名称")有10个字符,计算一下当前单元格所在的日期离开始日期有几天(http://www.foxtable.com/webhelp/topics/0287.htm),就绘制第几个字符,如果超出10天就不绘制

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


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
  发帖心情 Post By:2022/1/21 14:21:00 [只看该作者]

蓝老师,还是需要您出手修改一下,自己完成不了~

。。。
Dim i0 As Integer = Tables("任务").Position   '左表的当前行

Dim minD As Date = Tables("任务").Compute("min(开始日期)")  '表中的最早日期
Dim dt1 As Date = e.DataRow("开始日期")
Dim dt2 As Date = e.DataRow("结束日期")
Dim sp As TimeSpan = dt2 - dt1     '天数(占用单元格数)
Dim sp2 As TimeSpan = dt1 - minD   '绘制的第一个单元格位置

Dim s0 As Double = sp2.TotalDays+1  '将变量类型Double的内容转换为Integer,并存放在变量d中
Dim d As Integer
Integer.TryParse(s0, d) 

Dim s As String = e.DataRow("任务名称")
For n As Integer = 0 To s.Length - 1        '遍历每个字
    'Tables("窗口1_Table2")(i0 ,d+n) =s.Chars(n)   
    e.Graphics.DrawString(s.Chars(n),fnt,Brushes.yellow,e.x,e.y+9)
Next

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/21 15:16:00 [只看该作者]

效果一般般
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编码绘制甘特图-红.zip



 回到顶部
帅哥哟,离线,有人找我吗?
为学日益
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
  发帖心情 Post By:2022/1/21 19:02:00 [只看该作者]

谢谢!
感觉还不错,就是显得字间距大了一点,但是把字调大了也不好看~


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
为学日益
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:27 积分:327 威望:0 精华:0 注册:2019/11/19 11:44:00
  发帖心情 Post By:2022/2/10 20:19:00 [只看该作者]

蓝老师好!
这个自定义函数打开窗口时报错,关闭窗口再次打开就不报错,是什么原因?代码完全是按例子写的:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.1.30.2
错误所在事件:自定义函数,SetGanntLeftCol
详细错误信息:
Exception has been thrown by the target of an invocation.
Object reference not set to an instance of an object.

自定义函数  SetGanntLeftCol

 

If Forms("窗口1").Opened()

    Dim t1 As Table = Tables("任务")

    Dim t2 As Table = Tables("窗口1_Table2")

    If t1.TopVisibleRow >=0 Then

        Dim r As Row = t1.Rows(t1.TopVisibleRow)

        If r.IsNull("开始日期") = False Then

            Dim dt As Date = r("开始日期")

            Dim nm As String = dt.Year & "年" & dt.Month &"月_" & dt.Day

            Dim idx As Integer= t2.cols(nm).Index

            t2.LeftVisibleCol = idx

        End If

    End If

End If



此主题相关图片如下:截屏图片.jpg
按此在新窗口浏览图片

[此贴子已经被作者于2022/2/10 20:19:55编辑过]

 回到顶部
总数 20 1 2 下一页