原創|使用教程|編輯:龔雪|2014-01-15 11:56:41.000|閱讀 659 次
概述:當涉及到詳細的生產規劃時,如果能用一個柱狀圖表示資源,既允許生產管理者迅速識別產能瓶頸,又能顯示資源利用率的精確值,那就再好不過了。XGantt就可以幫你做到。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
一個較為綜合的柱狀圖往往包含許多堆疊的有多個值的曲線,時間一久,柱狀圖就變得越來越復雜以至于一些標簽常常不易讀取,或者曲線不能再被標記。若在應用程序中只顯示少數變量,為X方向的騰出一個標簽的空間,就可以整合第二個可獲取曲線標記的XGantt圖放在柱狀圖下面了。
在下面由VARCHART XGantt ActiveX創建的甘特圖中,包括了資源調度模塊。機器的產能(以生產件數來計算)與預定的生產件數一起顯示(第一個數字總是表示利用值,第二個數字表示資源的最大可用值) :
圖中帶標記的訂單規定了生產量30件,柱狀圖顯示了資源調度計算的產品20件(8點)和10件(9點)。所以在9點鐘還有10件的可用產能。
XGantt的水平滾動條可被禁用,以使兩個圖表實體看起來像一個圖。而且,縮放系數、表格寬度、水平滾動位移和單位寬度必須是相同的,這些由OnTableWidth 、OnTimeScaleSectionRescale、 OnZoomFactorModifyComplete和On(Pre)ScrollDiagramHor事件來實現。示例ControlCenter顯示了兩個XGantt實體的布局(一個在另一個下面)是如何實現的。
在創建第二個XGantt圖時可創建一個包含標簽的層,數字可放入其中。該層是無邊界線的透明層,使標簽看起來并不像一般的層。在運行時,每個標簽都有一個組和一個節點,標簽被放置在那段曲線中以備使用。當組布局被切換到“所有節點位于一列”或“節點優化”時 ,這些標簽將在X方向的準確位置彼此相鄰。
使用以下代碼創建標簽(VB98):
Private Sub loadCurveValues(histogramName As String) Dim currentDate As Date Dim capacityCurve As VcCurve 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 cal As VcCalendar
重置第二個XGantt(在幾個曲線之間切換才有必要):
VcGantt2.Reset vcRemoveNodes
計算必要的對象:
Set cal = VcGantt1.CalendarCollection.Active Set histogram = VcGantt1.HistogramCollection.HistogramByName _(histogramName) Set capacityCurve = histogram.CurveCollection.CurveByName (histogramName)Set loadCurve = histogram.CurveCollection.CurveByName _("Load_" + histogramName)
在循環中創建隨時間顯示的節點:
currentDate = VcGantt1.TimeScaleStart Do While currentDate < VcGantt2.TimeScaleEnd
讀取曲線:
Call capacityCurve.GetValues(d, leftDate, leftValue1, _ rightDate, rightValue) Call loadCurve.GetValues(d, leftDate, leftValue2, _rightDate, rightValue)
為第二個 XGantt創建節點:使用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))
計算下一次開始日期:
currentDate = cal.AddDuration(currentDate, 1) If Hour(currentDate) = 17 Then currentDate = cal.AddDuration(cal.AddDuration(currentDate, 1), -1) End If Loop
導入所有節點到甘特圖:
VcGantt2.EndLoading
再次運行分組:
VcGantt2.GroupNodes True End Sub
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網