以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]甘特图的特别运用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=110094)

--  作者:堕落的后天
--  发布时间:2017/11/26 12:27:00
--  [求助]甘特图的特别运用
想用甘特图来展示一个人当天的预约情况;

表为(“预约表”)里面有“病人姓名” “日期” “开始时间”“结束时间” 4个字段

预约时间定义为X轴  8:00  到 20:00  Y轴用预约的患者名字来生成

参照说明书:写如下代码来生成当天的预约情况甘特图()


Dim Chart As WinForm.Chart
Dim Series As WinForm.ChartSeries \'定义一个图系变量

Chart= Forms("甘特图测试").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt \'图表类型为甘特图
Chart.Inverted = True \'对调X轴和Y轴位置
Chart.AxisY.DateType= True \'Y轴为日期型
Chart.AxisY.AnnoFormatString = "hh-mm" \'设置Y轴的标示格式
Chart.AxisY.MinDate = #7:30# \'设置Y轴的起始日期
Chart.AxisY.MaxDate = #20:00# \'设置Y轴的终止日期
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线
Dim a As Date = Date.Today

Dim r As DataRow = DataTables("预约表").Find("日期 = " & a & " ")\'找出对应年月的行
        If r IsNot Nothing \'如果找到对应年月的行

With Chart.SeriesList
.AddGanttSeries("病人姓名",“开始时间”, “结束时间”)
    .AddGanttLabels("h:m")
End With


End If


不会引用表内字段来生成X/Y轴   不会同时添加筛选条件  向版主请教

--  作者:堕落的后天
--  发布时间:2017/11/26 14:57:00
--  
版主  已经解决了问题  ,我还想问问  ;这个生成的甘特图  能和表进行数据互动么?  
--  作者:有点甜
--  发布时间:2017/11/26 17:31:00
--  
以下是引用堕落的后天在2017/11/26 14:57:00的发言:
版主  已经解决了问题  ,我还想问问  ;这个生成的甘特图  能和表进行数据互动么?  

 

如何互动,指什么?只能根据表格生成甘特图,你无法操作甘特图修改表信息的。


--  作者:堕落的后天
--  发布时间:2017/11/26 18:11:00
--  
额  也就是说只能看看,不能根据表改动数据了.   


我看 图表一章  有个“数据标示”   Series.TooltipText  这个属性适用于  甘特图么?(比如我鼠标移到一个区块上,就能显示该区块的其他字段信息)




--  作者:有点甜
--  发布时间:2017/11/26 21:49:00
--  
以下是引用堕落的后天在2017/11/26 18:11:00的发言:
额  也就是说只能看看,不能根据表改动数据了.   


我看 图表一章  有个“数据标示”   Series.TooltipText  这个属性适用于  甘特图么?(比如我鼠标移到一个区块上,就能显示该区块的其他字段信息)



 

表改动数据以后,重新生成甘特图,不就好了?

 

如果要有提示,参考代码

 

Dim Chart As WinForm.Chart
Chart= Forms("窗口1").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt \'图表类型为甘特图
Chart.Inverted = True \'对调X轴和Y轴位置
Chart.AxisY.DateType= True \'Y轴为日期型
Chart.AxisY.AnnoFormatString = "MM-dd" \'设置Y轴的标示格式
Chart.AxisY.MinDate = New DateTime(2004, 1, 1)
Chart.AxisY.MaxDate = New DateTime(2004, 7, 30)
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线

Dim bchart = chart.BaseControl

Dim cg = bchart.ChartGroups.Group0
Dim cdsc = cg.ChartData.SeriesList
cdsc.Clear()

Dim clc = bchart.ChartLabels.LabelsCollection

Dim cds = cdsc.AddNewSeries()
cds.Label = "任务一"
cds.Y.CopyDataIn(New DateTime() {New DateTime(2004, 1, 1),New DateTime(2004, 5, 1)})
cds.Y1.CopyDataIn(New DateTime() {New DateTime(2004, 3, 9),New DateTime(2004, 6, 1)})
Dim p As Integer
clc.clear
For p = 0 To cds.Length - 1
    Dim lab As C1.Win.C1Chart.Label = clc.AddNewLabel()
    Dim start As DateTime = CType(cds.Y(p), DateTime)
    Dim [End] As DateTime = CType(cds.Y1(p), DateTime)
    lab.Text = start.ToString("ddMMM") + "-" + [End].ToString("ddMMM")
    lab.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
    lab.AttachMethodData.GroupIndex = 0
    lab.AttachMethodData.SeriesIndex = 0
    lab.AttachMethodData.PointIndex = p
    lab.Compass = LabelCompassEnum.West
    lab.Offset = 0
    lab.style.forecolor = Color.red
    lab.Visible = True
Next
cds.tooltiptext = "123"

cds = cdsc.AddNewSeries()
cds.Label = "任务二"
cds.Y.CopyDataIn(New DateTime() {New DateTime(2004, 2, 1)})
cds.Y1.CopyDataIn(New DateTime() {New DateTime(2004, 3, 9)})
For p = 0 To cds.Length - 1
    Dim lab As C1.Win.C1Chart.Label = clc.AddNewLabel()
    Dim start As DateTime = CType(cds.Y(p), DateTime)
    Dim [End] As DateTime = CType(cds.Y1(p), DateTime)
    lab.Text = start.ToString("ddMMM") + "-" + [End].ToString("ddMMM")
    lab.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
    lab.AttachMethodData.GroupIndex = 0
    lab.AttachMethodData.SeriesIndex = 1
    lab.AttachMethodData.PointIndex = p
    lab.Compass = LabelCompassEnum.West
    lab.Offset = 0
    lab.style.forecolor = Color.red
    lab.Visible = True
Next
cds.tooltiptext = "abc"