VARCHART XGantt_v5.1用户手册:如何计算活动结束日期(ActiveX版)

VARCHART XGantt是用于工业4.0项目管理、交互式的甘特图绝佳解决方案,世界级甘特图大师。本篇文章主要解释了VARCHART XGantt如何计算活动结束时间,感兴趣的朋友可以自己动手操作一下哦~

VARCHART XGantt是一个交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序。可以快速、简单地集成到您的应用程序中,帮助您识别性能瓶颈、避免延迟以及高效利用资源,使复杂数据变得更加容易理解。

VARCHART XGantt免费版

本篇文章主要解释了VARCHART XGantt如何计算活动结束时间,感兴趣的朋友可以自己动手操作一下哦~

结束日期的表列仍为空。可以在VARCHART XGantt中包含的日历的帮助下,从“开始”和“持续时间”字段计算活动的结束。

在默认日历中,工作日(星期一到星期五)被定义为活动时间,而周末(星期六和星期日)被定义为非活动时间。

在图中,您可以通过灰色背景识别非活动时间。可以通过在“节点”属性页上停用“将日历分配给节点”选项来关闭日历。

请注意有无日历计算的差异:

活动从星期五开始并持续3天,如果日历被激活,活动将在星期二结束。没有日历,活动将在周日结束。

结束日期通过对象VcCalendar的AddDuration(…)方法计算。因此,需要每项活动的开始和持续时间。可以通过索引从相应的数据字段中检索它们。在通过DataField(…)方法设置结束日期之后,必须调用VcNode的UpdateNode方法,以便可以看到数据的更改。

示例代码

Dim tmpCal As VcCalendarDim tmpDate As DateSet tmpCal = VcGantt1.CalendarCollection.ActivetmpDate = tmpCal.AddDuration(node.DataField(2), node.DataField(4))node.DataField(3) = tmpDatenode.UpdateNode

通过鼠标交互创建或修改的活动的开始和结束日期将自动置于活动时间。

QQ截图20190827144111.png

QQ截图20190827144136.png

通过计算生成的日期始终位于工作时间内。为了确保API设置的日期处于工作时间,需要从结束日期和活动持续时间计算开始日期。

示例代码

tmpDate = tmpCal.AddDuration(node.DataField(3), _ (-1) * node.DataField(4))node.DataField(2) = tmpDate

为了保持数据的一致性,丢失或负持续时间应视为不正确,并重置为0。如果缺少开始日期,则无法计算结束日期。所需的代码总结为一个名为SetNodeEndDate(…)的单独方法。

示例代码

Private Sub SetNodeEndDate(ByVal node As VcNode) 'Avoid empty or negative duration If node.DataField(4) = "" Or node.DataField(4) < 0 Then node.DataField(4) = "0" End If 'Start date empty then end date should also be empty If node.DataField(2) = "31.12.1899 00:00:00" Then node.DataField(3) = "" Else 'Precondition is property page nodes '"Assign calendar to nodes" must be true Dim tmpCal As VcCalendar Dim tmpDate As Date Set tmpCal = VcGantt1.CalendarCollection.Active tmpDate = tmpCal.AddDuration(node.DataField(2), _ node.DataField(4)) node.DataField(3) = tmpDate 'Start date only in active times tmpDate = tmpCal.AddDuration(node.DataField(3), _ (-1) * node.DataField(4)) node.DataField(2) = tmpDate node.UpdateNode End IfEnd Sub

需要计算日期:

1、活动结束后

3.、API修改活动值后

然而,在通过鼠标交互进行修改之后,不必启动计算,因为这将自动执行内部计算。

可以通过VcGantt对象的属性NodeCollection来设置包括所有节点的计算循环。它的代码将被添加到事件Form1_Load(…)的末尾。

示例代码

'Calculate end date for all nodesDim node As VcNodeFor Each node In VcGantt1.NodeCollection SetNodeEndDate nodeNext

可以通过事件OnNodeModifyComplete捕获用户引起的数据更改。方法调用执行结束日期的计算。

示例代码

Private Sub VcGantt1_OnNodeModifyComplete _ (ByVal node As VcGanttLib.VcNode, _ ByVal isLastNodeInSeries As Boolean) SetNodeEndDate nodeEnd Sub

如果数据已通过API更改,则必须调用SetNodeEndDate(…)


想要购买VARCHART XGantt正版授权,或了解更多产品信息请点击“咨询在线客服”

735-380.jpg

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月24日
下一篇 2019年7月24日

相关推荐

发表回复

登录后才能评论