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