彩票走势图

甘特图控件XGantt使用教程:全局视图模式与详细视图模式

原创|使用教程|编辑:龚雪|2014-01-09 11:13:03.000|阅读 1546 次

概述:在使用XGantt进行任务管理特别是生产任务管理时,你可能常常需要在甘特图中显示全局视图模式和详细视图模式。本文将为你讲解全局视图模式与详细视图模式在XGantt中的使用。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

在使用甘特图进行多任务管理的时候,用户通常都希望既能看到成千上万个任务的全局显示,又能实时对某个任务的详情进行快速查看。然而很多时候,当需要在重重任务中查看某一任务时,它却迷失在汪洋大海中难以发现。为了在图中找这小小的几个像素,却要耐心等待整体画面加载直至完成。

其实,解决这一问题有很多方法,今天我们就以VARCHART XGantt为例,介绍一种方法:全局视图模式与详细视图模式的使用

全局视图模式中,任务条的形状是宽度不一的矩形,每个任务条的边界是隐藏的。多个相邻的任务条一起构成了一个单一的活动板块。整体画面是整齐而紧凑的(如下图)。

全局视图模式(展示了将近300个任务):
甘特图控件XGantt使用教程:全局视图模式

由全局视图模式切换到详细视图模式,默认的XGantt右键菜单需要替换为一个新的包含“Build subdiagram”(生成子图)和“Restore full diagram”(恢复全图)选项的菜单。当转到子图时,用户选择查看的任务将显示相关细节,而其他未选的任务则由“ActiveNodeFilter”隐藏起来。另外,时标部分被限制在尽可能小的范围内,任务条的边界显示出来,并配有一个标签。这些任务条被调整到一定宽度,一字排列,当鼠标指在某个任务上时,工具提示框将显示任务详情(如下图)。

详细视图模式:
甘特图控件XGantt使用教程:详细视图模式

选择右键菜单中的“Restore full diagram”(恢复全图)项,则又可以回到全局视图模式了。

所需C#代码:

private void contextMenuItem_BuildSubDiagram_Click(object sender, EventArgs e)
        { 
        VcLayer layer = vcGantt1.LayerCollection.LayerByName("Tasks"); 
        layer.LineType = VcLineType.vcLineType0; 
        layer.Shape = VcLayerShape.vcSWRoundedRectangleLayer; 
        layer.Format.get_FormatField(0).TextDataFieldIndex = vcGantt1.DetectFieldIndex("Tasks", "ID"); 
        layer.Height = 1500; 
        vcGantt1.ActiveNodeFilter = vcGantt1.FilterCollection.MarkedNodesFilter; 
        VcNodeCollection visibleNodes = vcGantt1.NodeCollection; 
        visibleNodes.SelectNodes(VcSelectionType.vcAllVisible); 
        optimizeTimescaleStartEndEx(visibleNodes, 20); 
        vcGantt1.FitRangeIntoView(vcGantt1.TimeScaleStart, vcGantt1.TimeScaleEnd, 0); 
        vcGantt1.ScrollToNodeLine(visibleNodes.FirstNode(), VcVerticalAlignment.vcVerCenterAligned);
        } 

private void contextMenuItem_RestoreFullDiagram_Click(object sender, EventArgs e) 
        { 
        VcLayer layer = vcGantt1.LayerCollection.LayerByName("nodes"); 
        layer.LineType = VcLineType.vcNone; 
        layer.Shape = VcLayerShape.vcRectangleLayer; 
        layer.Format.get_FormatField(0).TextDataFieldIndex = -1;
        layer.Height = 500; vcGantt1.ActiveNodeFilter = null;
        vcGantt1.OptimizeTimeScaleStartEnd(720); 
        vcGantt1.TimeScaleCollection.Active.get_Section(0).UnitWidth = 400;
        } 

private void vcGantt1_VcNodeRightClicking(object sender, VcNodeClickingEventArgs e)
        { 
        e.ReturnStatus = VcReturnStatus.vcRetStatNoPopup; 
        myContextMenu.Show(MousePosition); 
        } 

private void vcGantt1_VcDiagramRightClicking(object sender, VcDiagramClickingEventArgs e)
        { 
        e.ReturnStatus = VcReturnStatus.vcRetStatNoPopup; 
        myContextMenu.Show(MousePosition); 
        } 

private void optimizeTimescaleStartEndEx(VcNodeCollection nodes, int marginsInMinutes) 
        { 
        if(nodes.Count > 0) 
                { 
                DateTime earliestDate = new DateTime(2222, 1, 1);
                DateTime latestDate = new DateTime(1900,1,1); 
                foreach (VcNode node in nodes) 
                        { 
                        //Earliest Date 
                       DateTime t = (DateTime)node.get_DataField(8); 
                       if (t < earliestDate) 
                               { 
                               earliestDate = t; 
                               } 
                       //Latest Date 
                       int d = Int32.Parse(node.get_DataField(7).ToString());^
                       t = vcGantt1.CalendarCollection.Active.AddDuration(t, d); 
                       if (t > latestDate) 
                               {
                               latestDate = t; 
                               } 
                       } 
               vcGantt1.TimeScaleStart = earliestDate.AddMinutes(-marginsInMinutes); 
               vcGantt1.TimeScaleEnd = latestDate.AddMinutes(marginsInMinutes); 
               } 
 } 
//The VcToolTipTextSupplying property has to be activated to display tool tips. 
private void vcGantt1_VcToolTipTextSupplying(object sender, VcToolTipTextSupplyingEventArgs e)
        { 
        vcGantt1.ToolTipDuration = 25000; 
        if(e.HitObjectType == VcObjectType.vcObjTypeNodeInDiagram) 
               { 
               VcNode node = (VcNode)e.HitObject; e.Text = "ID: " + node.ID + "\n";
               e.Text += "Machine: " + node.get_DataField(1) + "\n"; 
               }
else if (e.HitObjectType == VcObjectType.vcObjTypeTimeScale) 
        { 
        e.Text = "Preset Timescale: " + vcGantt1.TimeScaleCollection.Active.Name;
        }
}

>>VARCHART XGantt下载

>>VARCHART XGantt更多资讯


标签:XGantt

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
VARCHART XGantt

用于工业4.0项目管理、交互式的甘特图绝佳解决方案,世界级甘特图大师

VARCHART JGantt

VARCHART JGantt控件及其全面的对象模型是快速开发交互式Java甘特图的理想工具。

VARCHART XTree

VARCHART XTree 是显示任何分级结构的完美工具,可轻松而迅速地用树图来显示、编辑和打印你想要的数据。

VARCHART XNet

领先的项目管理控件,让你图形化显示、编辑和打印你的数据,用网络图显示流程,拥有强大的内建布局算法和集成的调度模块。

VARCHART XGantt高级培训

慧都资深培训师将对VARCHART XGantt控件的产品功能、特征亮点进行详细讲解,结合控件在行业应用中的成功案例,使您快速掌握VARCHART XGantt的使用方法及应用技巧,从根本上提高您的控件应用能力,让您在项目开发中事半功倍!

title
title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP