• <menu id="w2i4a"></menu>
  • logo VARCHART XGantt 2019教程

    文檔首頁(yè)>>VARCHART XGantt 2019教程>>VARCHART XGantt_v5.1用戶手冊(cè):如何計(jì)算活動(dòng)結(jié)束日期(ActiveX版)

    VARCHART XGantt_v5.1用戶手冊(cè):如何計(jì)算活動(dòng)結(jié)束日期(ActiveX版)


    VARCHART XGantt是一個(gè)交互式的甘特圖控件,其模塊化的設(shè)計(jì)讓您可以創(chuàng)建滿足您和您的客戶所需求的應(yīng)用程序??梢钥焖?、簡(jiǎn)單地集成到您的應(yīng)用程序中,幫助您識(shí)別性能瓶頸、避免延遲以及高效利用資源,使復(fù)雜數(shù)據(jù)變得更加容易理解。

    點(diǎn)擊下載VARCHART XGantt免費(fèi)版

    本篇文章主要解釋了VARCHART XGantt如何計(jì)算活動(dòng)結(jié)束時(shí)間,感興趣的朋友可以自己動(dòng)手操作一下哦~

    結(jié)束日期的表列仍為空??梢栽赩ARCHART XGantt中包含的日歷的幫助下,從“開始”和“持續(xù)時(shí)間”字段計(jì)算活動(dòng)的結(jié)束。

    在默認(rèn)日歷中,工作日(星期一到星期五)被定義為活動(dòng)時(shí)間,而周末(星期六和星期日)被定義為非活動(dòng)時(shí)間。

    在圖中,您可以通過(guò)灰色背景識(shí)別非活動(dòng)時(shí)間??梢酝ㄟ^(guò)在“節(jié)點(diǎn)”屬性頁(yè)上停用“將日歷分配給節(jié)點(diǎn)”選項(xiàng)來(lái)關(guān)閉日歷。

    請(qǐng)注意有無(wú)日歷計(jì)算的差異:

    活動(dòng)從星期五開始并持續(xù)3天,如果日歷被激活,活動(dòng)將在星期二結(jié)束。沒(méi)有日歷,活動(dòng)將在周日結(jié)束。

    結(jié)束日期通過(guò)對(duì)象VcCalendar的AddDuration(...)方法計(jì)算。因此,需要每項(xiàng)活動(dòng)的開始和持續(xù)時(shí)間??梢酝ㄟ^(guò)索引從相應(yīng)的數(shù)據(jù)字段中檢索它們。在通過(guò)DataField(...)方法設(shè)置結(jié)束日期之后,必須調(diào)用VcNode的UpdateNode方法,以便可以看到數(shù)據(jù)的更改。

    示例代碼

    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

    通過(guò)鼠標(biāo)交互創(chuàng)建或修改的活動(dòng)的開始和結(jié)束日期將自動(dòng)置于活動(dòng)時(shí)間。

    QQ截圖20190827144111.png

    相反,API或編輯對(duì)話框設(shè)置的日期可以放置在非工作時(shí)間。

    QQ截圖20190827144136.png

    通過(guò)計(jì)算生成的日期始終位于工作時(shí)間內(nèi)。為了確保API設(shè)置的日期處于工作時(shí)間,需要從結(jié)束日期和活動(dòng)持續(xù)時(shí)間計(jì)算開始日期。

    示例代碼

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

    為了保持?jǐn)?shù)據(jù)的一致性,丟失或負(fù)持續(xù)時(shí)間應(yīng)視為不正確,并重置為0。如果缺少開始日期,則無(wú)法計(jì)算結(jié)束日期。所需的代碼總結(jié)為一個(gè)名為SetNodeEndDate(...)的單獨(dú)方法。

    示例代碼

    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

    需要計(jì)算日期:

    1、活動(dòng)結(jié)束后

    2、通過(guò)數(shù)據(jù)編輯對(duì)話框或就地編輯器修改日期或持續(xù)時(shí)間之后

    3.、API修改活動(dòng)值后

    然而,在通過(guò)鼠標(biāo)交互進(jìn)行修改之后,不必啟動(dòng)計(jì)算,因?yàn)檫@將自動(dòng)執(zhí)行內(nèi)部計(jì)算。

    可以通過(guò)VcGantt對(duì)象的屬性NodeCollection來(lái)設(shè)置包括所有節(jié)點(diǎn)的計(jì)算循環(huán)。它的代碼將被添加到事件Form1_Load(...)的末尾。

    示例代碼

    'Calculate end date for all nodes
    Dim node As VcNode
    For Each node In VcGantt1.NodeCollection
     SetNodeEndDate node
    Next

    可以通過(guò)事件OnNodeModifyComplete捕獲用戶引起的數(shù)據(jù)更改。方法調(diào)用執(zhí)行結(jié)束日期的計(jì)算。

    示例代碼

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

    如果數(shù)據(jù)已通過(guò)API更改,則必須調(diào)用SetNodeEndDate(...)。


    想要購(gòu)買VARCHART XGantt正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”

    735-380.jpg


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();