以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  甘特图  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64856)

--  作者:qinchangli
--  发布时间:2015/3/3 17:06:00
--  甘特图
请问绘制甘特图的时候进入界面时没出现这个问题,往下拉时拉倒一半出现图片展示的问题,求助!
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150303170756.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2015/3/3 17:08:00
--  
 例子上传上来,按照帮助文档去做肯定不会有你的问题
--  作者:qinchangli
--  发布时间:2015/3/4 13:45:00
--  

同样的编辑方式,其他的都好着呢,就是机加车间排工这个在进行设计时没有问题吧,发布完成之后再进入出现附件问题。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150303171507.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2015/3/4 13:55:00
--  

呃,不应该。你在函数那里加入msgbox去判断是哪句代码出错。然后贴出出错的代码

 

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

 


--  作者:qinchangli
--  发布时间:2015/3/4 14:30:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150304143244.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2015/3/4 14:31:00
--  
 贴出对应代码,或者上传出错的例子。
--  作者:qinchangli
--  发布时间:2015/3/4 14:38:00
--  

机加车间排工


--  作者:有点甜
--  发布时间:2015/3/4 14:39:00
--  

请看6楼。


--  作者:qinchangli
--  发布时间:2015/3/4 15:13:00
--  

内部函数:

addganttrows:

 

Dim tbl As DataTable =DataTables("机加车间排工_甘特图")
tbl.StopRedraw
tbl.DataRows.Clear()
For i As Integer =1 To Tables("机加车间排工").Rows.Count
    tbl.AddNew()
Next
tbl.Save()
tbl.ResumeRedraw

 

 

buildgantttable:

 

Dim pbdjb As Table = Tables("机加车间排工")
Tables("机加车间排工_甘特图").StopRedraw()
Dim StartDate As Date =pbdjb.Compute("Min(开始日期)")
Dim EndDate As Date =pbdjb.Compute("Max(计划完工日期)")
Dim dt =StartDate
Dim Builder As New DataTableBuilder("统计")
Do
    Dim nm As String =dt.Year & "年" &  dt.Month & "月_" & dt.Day
    Builder.Adddef(nm,Gettype(String),1)
    dt =dt.Adddays(1)
    If dt > Enddate Then
        Exit Do
    End If
Loop
Tables("机加车间排工_甘特图").DataSource =Builder.BuildDataSource
For Each cl As Col In Tables("机加车间排工_甘特图").Cols
    cl.width =20
Next
Functions.Execute("AddGanttRows6")
Tables("机加车间排工_甘特图").ResumeRedraw()

 

setganttleftcol:

 

 

If Forms("机加车间排工").Opened()
    Dim t1 As Table =Tables("机加车间排工")
    Dim t2 As Table =Tables("机加车间排工_甘特图")
    If t1.TopVisibleRow >=0 Then
        Dim r As Row =t1.Rows(t1.TopVisibleRow)
        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

 

 

 

 

窗口:机加车间排工_甘特图的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
End If


--  作者:有点甜
--  发布时间:2015/3/4 15:20:00
--  

如果是Drawcell的错,就是这句代码有问题

 

Dim r As Row  =Tables("机加车间排工").Rows(e.Row.Index)

 

意思是,机加车间排工表,没有对应多的数据行

 

---------------------------------------------------

 

如果是setganttleftcol错,可能是这句错 Dim idx As Integer=t2.cols(nm).Index

 

意思是,没有找对对应的列。

 

-------------------------------

 

你还是做一个出错的例子发上来吧。肯定是数据问题。