翻譯|使用教程|編輯:楊鵬連|2021-01-14 10:04:59.353|閱讀 259 次
概述:VARCHART XGantt是一個(gè)交互式甘特圖組件,可生成清晰,靈活的甘特圖。本文介紹了 XGantt .NET如何創(chuàng)建直方圖。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
甘特圖(Xgantt)從1998年的第一個(gè)商用版本開始就致力于計(jì)劃編制和項(xiàng)目管理方面控件的研究和開發(fā),經(jīng)過20多年的積累和沉淀,目前可為軟件開發(fā)商和最終用戶提供最頂級(jí)的計(jì)劃編制和項(xiàng)目管理的控件產(chǎn)品,幫助用戶快速的整合項(xiàng)目管理軟件所需的甘特圖,網(wǎng)絡(luò)圖,資源柱狀圖,日程日歷,資源調(diào)度等功能模塊,并提供全方位的支持和服務(wù)。
VARCHART XGantt是一款功能強(qiáng)大的甘特圖控件,其模塊化的設(shè)計(jì)讓您可以創(chuàng)建滿足需要的應(yīng)用程序。XGantt可用于.NET,ActiveX和ASP.NET應(yīng)用程序,可以快速、簡單地集成到您的應(yīng)用程序中,幫助您識(shí)別性能瓶頸、避免延遲以及高效利用資源,使復(fù)雜數(shù)據(jù)變得更加容易理解。
VARCHART XGantt在市場(chǎng)上已有近30年的歷史,它提供了最完善的C#Gantt圖表控件,可用于構(gòu)建現(xiàn)代而又可靠的行業(yè)資源調(diào)度應(yīng)用程序。
步驟5:在這一步驟中,創(chuàng)建了兩個(gè)不同的過濾器,將選定和未選定的活動(dòng)分開。請(qǐng)調(diào)用 "對(duì)象 "屬性頁,點(diǎn)擊 "過濾器... "按鈕,進(jìn)入 "管理過濾器 "對(duì)話框。通過點(diǎn)擊按鈕創(chuàng)建兩個(gè)新的過濾器,并將它們命名為 "已選擇 "和 "未選擇"。
現(xiàn)在,請(qǐng)?jiān)O(shè)置過濾條件。對(duì)于 "未選擇 "過濾器,請(qǐng)指定條件 "選擇不等于1"。由于這個(gè)條件,只有未選擇的節(jié)點(diǎn)才會(huì)被過濾。現(xiàn)在請(qǐng)標(biāo)記 "未選擇 "過濾器,并點(diǎn)擊對(duì)話框頂部右側(cè)的按鈕。它將調(diào)用編輯過濾器對(duì)話框。在 "字段名 "欄中選擇 "選定 "字段,在 "操作者 "欄中選擇 "不等于",在 "比較值 "欄中輸入 "1"。通過 "確定 "退出對(duì)話框。
現(xiàn)在,用同樣的方法將條件“Selected = 1”分配給“Selected”過濾器。
步驟6:在這個(gè)步驟中,我們將為被選中和未選中的節(jié)點(diǎn)定義兩種不同的外觀,以與篩選器結(jié)合。
請(qǐng)選擇屬性頁對(duì)象,然后點(diǎn)擊對(duì)象圖層....這將彈出指定欄外觀的對(duì)話框。請(qǐng)直接輸入新名稱,將層“開始-結(jié)束”重命名為“未選擇的節(jié)點(diǎn)”輸入列名中的字段。請(qǐng)找到列濾鏡,并將濾鏡指定為“未被選中”。通過點(diǎn)擊按鈕復(fù)制圖層并命名為“Selected Nodes”。為圖層指定“Selected”濾鏡。
兩層看起來還是一樣的。雙擊“層設(shè)計(jì)”列對(duì)應(yīng)的字段,可以修改“已選節(jié)點(diǎn)”層的設(shè)計(jì)。對(duì)話框編輯層將彈出。請(qǐng)選擇一個(gè)十字艙口圖案,有黃色底色或圖案顏色2和黑色圖案顏色。
為了確保非工作間隔的周末顯示為一行而不是條,需要在Nodes屬性頁上設(shè)置非工作間隔的選項(xiàng)層。
步驟7:在此步驟中,直方圖將創(chuàng)建四條曲線:容量曲線、未標(biāo)記活動(dòng)曲線、已標(biāo)記活動(dòng)曲線和填充區(qū)域的輔助曲線。點(diǎn)擊管理直方圖…在屬性頁布局中調(diào)用相應(yīng)的對(duì)話框。
幾個(gè)直方圖可以同時(shí)出現(xiàn)在甘特圖中。每個(gè)直方圖都有自己的數(shù)字刻度,并包含自己的曲線。
現(xiàn)在請(qǐng)定義數(shù)字刻度的起始值和結(jié)束值。單擊“End value”列的“histogram gram_1”,輸入“6”。
現(xiàn)在,請(qǐng)編輯柱狀圖。為此,請(qǐng)單擊對(duì)話框頂部右側(cè)的編輯按鈕。
“曲線1”應(yīng)代表容量曲線(紅色)。“曲線2”對(duì)已標(biāo)記節(jié)點(diǎn)進(jìn)行總結(jié),“曲線3”表示未標(biāo)記節(jié)點(diǎn)。“曲線4”是輔助曲線,為短缺地區(qū)提供綠色背景。
一條曲線已經(jīng)存在。請(qǐng)?jiān)賱?chuàng)建三條曲線,并根據(jù)圖示定義它們的屬性。
一條曲線最多可指定兩條參考曲線。一條曲線形成了有ist參考曲線的區(qū)域,可以指定顏色和圖案(見下面的草圖)。第一條參考曲線的所有部分曲線下面的加起來就是面積(上圖)。在第二條參考曲線中,只有在曲線下方的面積上增加的部分,即y值小于原始曲線(下圖)。此外,由第二條參考曲線形成的區(qū)域?qū)⒁愿叩膬?yōu)先級(jí)顯示。我們將在下面的柱狀圖中看到結(jié)果。
容量曲線(曲線1)將從一個(gè)列表中接收它的值,我們稍后將通過編程代碼提供這個(gè)列表。因此,請(qǐng)?jiān)趕ource字段中將其數(shù)據(jù)源設(shè)置為via API。因此,一個(gè)額外的過濾器可以從中獲取數(shù)據(jù)的節(jié)點(diǎn)不需要。
請(qǐng)將線條類型設(shè)置為粗紅線。該曲線的值不得與其他曲線的值相加;因此,字段堆棧引用仍然為空。此外,容量曲線不打算形成一個(gè)面積與另一條曲線,因此兩個(gè)填充引用和它們的填充模式仍然是空的。請(qǐng)按對(duì)話框中相應(yīng)的字段創(chuàng)建曲線1。
曲線2表示未被選中的節(jié)點(diǎn),由名為“未被選中節(jié)點(diǎn)”的層中的值組成。不需要篩選器進(jìn)行進(jìn)一步的選擇。請(qǐng)為曲線選擇一種藍(lán)色的線顏色。曲線值不會(huì)添加到另一條曲線的值,因此堆棧引用保持為空。曲線應(yīng)該與x軸形成一個(gè)區(qū)域,所以請(qǐng)?jiān)谧侄翁畛鋮⒖歼x擇值Flatline。
這條曲線由未選擇的節(jié)點(diǎn)組成,它還應(yīng)該以一種特殊的方式表示超過容量曲線的位置,以便標(biāo)記生產(chǎn)系統(tǒng)的瓶頸。因此,一旦它的y值超過曲線1的y值,就開始繪制曲線1下面的區(qū)域。所以請(qǐng)?jiān)O(shè)置曲線1作為它的第二個(gè)參考曲線,并選擇一個(gè)陰影填充模式。
“曲線3”表示所選節(jié)點(diǎn)。因此,請(qǐng)將層命名為“已選節(jié)點(diǎn)”作為其數(shù)據(jù)源。不需要過濾器。請(qǐng)分配一個(gè)淺灰色的線顏色。因?yàn)檫x擇的節(jié)點(diǎn)將被顯示在非選中節(jié)點(diǎn)之上,它們的值必須添加到非選中節(jié)點(diǎn)的值中。所以請(qǐng)選擇曲線2作為堆棧參考。同一條曲線也作為第一條參考曲線,因?yàn)楸贿x中的節(jié)點(diǎn)在視覺上與未被選中的節(jié)點(diǎn)不同。作為填充圖案,請(qǐng)選擇一個(gè)灰色十字圖案在黃色背景上。
形成的區(qū)域?qū)⒃谇€2的上方和下方可見。此外,還應(yīng)出現(xiàn)在容量曲線以上;因此,請(qǐng)指定曲線1作為第二條參考曲線,用相同的顏色和圖案填充該區(qū)域。如果
選中的節(jié)點(diǎn)高于容量曲線,它們將以與容量曲線下方相同的顏色和圖案出現(xiàn)(您可以通過指定一個(gè)紅色來區(qū)分容量曲線上方和下方的選中節(jié)點(diǎn)顏色)。
通過曲線4,我們將定義一個(gè)區(qū)域,代表容量曲線和下面的節(jié)點(diǎn)堆之間的淺綠色背景。表示生產(chǎn)系統(tǒng)的可用資源。它的底部受到了限制未選中的節(jié)點(diǎn),因此請(qǐng)選擇它們作為數(shù)據(jù)源。在頂部,面積受到容量曲線的限制,請(qǐng)?jiān)O(shè)置為第一條參考曲線。
問:為什么曲線4的面積不隱藏所選的節(jié)點(diǎn)?答:因?yàn)樵谶@個(gè)對(duì)話框所呈現(xiàn)的曲線列表中有一個(gè)優(yōu)先級(jí)。列出在底部的曲線比列出在頂部的曲線優(yōu)先級(jí)低。這就是為什么曲線3的區(qū)域顯示在曲線區(qū)域的頂部
4. 您可以通過窗口頂部右側(cè)的箭頭修改優(yōu)先級(jí)。
第八步:
在最后一步,我們將提供容量曲線的值。為此,請(qǐng)修改Load事件中的代碼,如下所示:
示例代碼VB.NET
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load VcGantt1.Width = ClientSize.Width - VcGantt1.Left VcGantt1.Height = ClientSize.Height - VcGantt1.Top VcGantt1.InsertNodeRecord("1;Node 1;07.05.2007;;5") VcGantt1.InsertNodeRecord("2;Node 2;09.05.2007;;5") VcGantt1.InsertNodeRecord("3;Node 3;10.05.2007;;6") VcGantt1.InsertNodeRecord("4;Node 4;17.05.2007;;10") VcGantt1.InsertNodeRecord("5;Node 5;22.05.2007;;3") VcGantt1.InsertNodeRecord("6;Node 6;23.05.2007;;1") VcGantt1.EndLoading() VcGantt1.OptimizeTimeScaleStartEnd(3) 'calculate end date Dim node As VcNode For Each node In VcGantt1.NodeCollection setNodeEndDate(node) Next Dim histogram As VcHistogram Dim curve As VcCurve histogram = VcGantt1.HistogramCollection.FirstHistogram curve = histogram.CurveCollection.CurveByName(" Curve1 ") curve.PointsEquidistant = False curve.SetValues("01.05.2007", "2") curve.SetValues("05.05.2007", "0") curve.SetValues("07.05.2007", "2") curve.SetValues("12.05.2007", "0") curve.SetValues("14.05.2007", "4") curve.SetValues("19.05.2007", "0") curve.SetValues("21.05.2007", "2") curve.SetValues("26.05.2007", "0") curve.SetValues("28.05.2007", "2") End Subc#示例代碼
private void Form1_Load(object sender, System.EventArgs e) { vcGantt1.Width = ClientSize.Width - vcGantt1.Left; vcGantt1.Height = ClientSize.Height - vcGantt1.Top; vcGantt1.InsertNodeRecord("1;Node 1;07.05.2007;;5"); vcGantt1.InsertNodeRecord("2;Node 2;09.05.2007;;5"); vcGantt1.InsertNodeRecord("3;Node 3;10.05.2007;;6"); vcGantt1.InsertNodeRecord("4;Node 4;17.05.2007;;10"); vcGantt1.InsertNodeRecord("5;Node 5;22.05.2007;;3"); vcGantt1.InsertNodeRecord("6;Node 6;23.05.2007;;1"); vcGantt1.EndLoading(); vcGantt1.OptimizeTimeScaleStartEnd(3); // calculate end date foreach (VcNode node in vcGantt1.NodeCollection) { SetNodeEndDate(node); } VcHistogram histogram = vcGantt1.HistogramCollection.FirstHistogram(); VcCurve curve = histogram.CurveCollection.CurveByName("Curve 1"); curve.PointsEquidistant = false; curve.SetValues(Convert.ToDateTime("01.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("05.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("07.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("12.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("14.05.2007"),"4"); curve.SetValues(Convert.ToDateTime("19.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("21.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("26.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("28.05.2007"),"2"); }
現(xiàn)在,請(qǐng)運(yùn)行程序并標(biāo)記一個(gè)活動(dòng)。通過直方圖中黃色背景上的灰色陰影部分,您可以立即識(shí)別出該活動(dòng)在大部分工作負(fù)載中所占的部分顯示出來。
如果您移動(dòng)了活動(dòng),那么工作負(fù)載將會(huì)改變,并且您可以識(shí)別由您的交互引起的容量過載和不足。
想要了解甘特圖或慧都APS系統(tǒng),請(qǐng)登錄慧都網(wǎng),解決您的問題!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: