VARCHART XGantt系列教程:如何用值來標記曲線

VARCHART XGantt是一款功能強大的甘特圖控件。其模塊化的設計讓您能夠建立知足您和您的客戶所需求的應用程序(咱們領先的甘特圖控件VARCHART XGantt可用於.NET,ActiveX和ASP.NET應用程序)。VARCHART XGantt能夠快速、簡單地集成到您的應用程序中,幫助您識別性能瓶頸、避免延遲以及高效利用資源,使複雜數據變得更加容易理解。node

XGantt展現圖

若是您使用Gantt Charts來進行資源控制,那麼您一般會對當前狀況有一個清晰和精確的概述感興趣。特別是在某些事情彷佛不怎麼明瞭的狀況下,您須要當即看到問題。介於此本文旨在講述如何使用值來標記曲線,供你們學習討論。模塊化


詳細的規劃不只須要用直方圖來表示資源,並且還須要顯示資源利用率的準確值,以便可以快速識別資源瓶頸。oop

使用的一個生動的例子是精確控制機器部件數量的生產計劃,因爲一個或多個直方圖的高度複雜性,這些直方圖具備許多值的堆疊曲線,在許多狀況下會致使空間不足,從而妨礙標籤的可讀性,所以不能在其中標記曲線。若是應用程序中只顯示少許且不多更改的值,從而在x方向上爲標籤留出足夠的空間,則能夠經過放置在直方圖下方的第二個VARCHART XGantt實例得到曲線標籤。佈局

在咱們的示例中,甘特圖是由VARCHART XGantt ActiveX建立的。機器的容量由部件的數量來衡量,與計劃的部件數量一塊兒顯示(第一個數字通常表示利用率,第二個數字表示資源的最大可用性):性能

【直方圖中生產計劃顯示利用率】學習

直方圖顯示了資源調度器在8點時計算出的20個片和9點時計算出的10個片的分佈,所以,9點10件的可用容量很容易識別。spa

須要注意如下四點:

  1. 必須禁用上部XGantt的水平滾動條,以使兩個XGantt實體看起來像一個圖。
  2. 縮放係數、表寬、水平滾動偏移量和圖的單位寬度的設置必須相同。
  3. XGantt在設計時要定位數字,須要在第二步中建立一個用於包含標籤的層。
  4. 在運行時,每一個標籤建立一個組和一個節點,標籤被放置在要標記的曲線的那個週期。

當組佈局切換到「All nodes in one row」「Nodes optimized」時,標籤將在正確的位置繪製。使用如下代碼建立標籤:設計

Dim currentDate As Date
 Dim histogram As VcHistogram
 Dim capacityCurve As VcCurve
 Dim loadCurve As VcCurve
 Dim leftDate As Date
 Dim rightDate As Date
 Dim leftValue1 As Long
 Dim leftValue2 As Long
 Dim rightValue As Long
 Dim cal As VcCalendar

 'Reset second XGantt (only necessary if switching between several curves is
possible)
 VcGantt2.Reset vcRemoveNodes

 'Calculate necessary objects
 Set cal = VcGantt1.CalendarCollection.Active
 Set histogram = VcGantt1.HistogramCollection.HistogramByName _
 (histogramName)
 Set capacityCurve = histogram.CurveCollection.CurveByName(histogramName)
 Set loadCurve = histogram.CurveCollection.CurveByName _
 ("Load_" + histogramName)

 'Create nodes in a loop over the time displayed
currentDate = VcGantt1.TimeScaleStart
 Do While currentDate < VcGantt2.TimeScaleEnd
 'Read curves
 Call capacityCurve.GetValues(d, leftDate, leftValue1, _
 rightDate, rightValue)
 Call loadCurve.GetValues(d, leftDate, leftValue2, _
 rightDate, rightValue)

 'create node for second XGantt with Node-ID, 2 values, group name =
 'histogram name, start and end date
 VcGantt2.InsertNodeRecord CStr(d) + ";" + _
 CStr(leftValue2) + "/" + _
CStr(leftValue2) + "/" + _
histogramName + ";" + _
normDat(d) + ";" + _
normDat(DateAdd("h", 1, d))

 'calculate next start date (at the end of a working day moving forward to
 'the beginning of the next working day)
 currentDate = cal.AddDuration(currentDate, 1)
 If Hour(currentDate) = 17 Then
 currentDate = cal.AddDuration(cal.AddDuration(currentDate, 1), -1)
 End If
 Loop
 'import all nodes to the Gantt diagram
 VcGantt2.EndLoading
 'Perform grouping again
 VcGantt2.GroupNodes True

更多VARCHART XGantt系列教程將在後續更新,敬請關注~orm

查看文章轉載原文請點擊這裏blog

相關文章
相關標籤/搜索