翻譯|使用教程|編輯:莫成敏|2019-08-27 14:49:57.593|閱讀 518 次
概述:VARCHART XGantt是用于工業4.0項目管理、交互式的甘特圖絕佳解決方案,世界級甘特圖大師。本篇文章主要解釋了VARCHART XGantt如何計算活動結束時間,感興趣的朋友可以自己動手操作一下哦~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VARCHART XGantt是一個交互式的甘特圖控件,其模塊化的設計讓您可以創建滿足您和您的客戶所需求的應用程序。可以快速、簡單地集成到您的應用程序中,幫助您識別性能瓶頸、避免延遲以及高效利用資源,使復雜數據變得更加容易理解。
本篇文章主要解釋了VARCHART XGantt如何計算活動結束時間,感興趣的朋友可以自己動手操作一下哦~
結束日期的表列仍為空。可以在VARCHART XGantt中包含的日歷的幫助下,從“開始”和“持續時間”字段計算活動的結束。
在默認日歷中,工作日(星期一到星期五)被定義為活動時間,而周末(星期六和星期日)被定義為非活動時間。
在圖中,您可以通過灰色背景識別非活動時間。可以通過在“節點”屬性頁上停用“將日歷分配給節點”選項來關閉日歷。
請注意有無日歷計算的差異:
活動從星期五開始并持續3天,如果日歷被激活,活動將在星期二結束。沒有日歷,活動將在周日結束。
結束日期通過對象VcCalendar的AddDuration(...)方法計算。因此,需要每項活動的開始和持續時間。可以通過索引從相應的數據字段中檢索它們。在通過DataField(...)方法設置結束日期之后,必須調用VcNode的UpdateNode方法,以便可以看到數據的更改。
示例代碼
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 node.UpdateNode
通過鼠標交互創建或修改的活動的開始和結束日期將自動置于活動時間。
相反,API或編輯對話框設置的日期可以放置在非工作時間。
通過計算生成的日期始終位于工作時間內。為了確保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 If End Sub
需要計算日期:
1、活動結束后
2、通過數據編輯對話框或就地編輯器修改日期或持續時間之后
3.、API修改活動值后
然而,在通過鼠標交互進行修改之后,不必啟動計算,因為這將自動執行內部計算。
可以通過VcGantt對象的屬性NodeCollection來設置包括所有節點的計算循環。它的代碼將被添加到事件Form1_Load(...)的末尾。
示例代碼
'Calculate end date for all nodes Dim node As VcNode For Each node In VcGantt1.NodeCollection SetNodeEndDate node Next
可以通過事件OnNodeModifyComplete捕獲用戶引起的數據更改。方法調用執行結束日期的計算。
示例代碼
Private Sub VcGantt1_OnNodeModifyComplete _ (ByVal node As VcGanttLib.VcNode, _ ByVal isLastNodeInSeries As Boolean) SetNodeEndDate node End Sub
如果數據已通過API更改,則必須調用SetNodeEndDate(...)。
想要購買VARCHART XGantt正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn