以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]甘特图没有自动刷新 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174535) |
||||
-- 作者:为学日益 -- 发布时间:2022/1/20 8:33:00 -- [求助]甘特图没有自动刷新 老师好! 学习单元格生成甘特图,图上可以加上标题的例子:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=74437&skin=0 当修改结束日期时,右侧的图没有跟随变化。狐表自带的示例是可以跟随变化的,照着改也没有改对。 请老师指教。谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2022/1/20 9:00:00 -- 使用的用法和帮助不是一回事。 上面使用了合并单元格的用法,更改日期后要需要取消合并单元格,然后重新设置合并
|
||||
-- 作者:为学日益 -- 发布时间: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 |
||||
-- 作者:有点蓝 -- 发布时间:2022/1/20 14:57:00 -- drawcell中没有合并单元格的用法。暂时也没有其它办法 |
||||
-- 作者:为学日益 -- 发布时间:2022/1/21 12:29:00 -- 蓝老师好! 如果不去合并单元格,把 r("任务名称")
内容绘制进一个单元格一个字符怎么做?
|
||||
-- 作者:有点蓝 -- 发布时间:2022/1/21 13:34:00 -- 比如r("任务名称")有10个字符,计算一下当前单元格所在的日期离开始日期有几天(http://www.foxtable.com/webhelp/topics/0287.htm),就绘制第几个字符,如果超出10天就不绘制 |
||||
-- 作者:为学日益 -- 发布时间: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
|
||||
-- 作者:有点蓝 -- 发布时间:2022/1/21 15:16:00 -- 效果一般般
|
||||
-- 作者:为学日益 -- 发布时间:2022/1/21 19:02:00 -- 谢谢! 感觉还不错,就是显得字间距大了一点,但是把字调大了也不好看~ |
||||
-- 作者:为学日益 -- 发布时间: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 [此贴子已经被作者于2022/2/10 20:19:55编辑过]
|