Dev 甘特图

    date1.EditValue = DateTime.Now.Date.AddDays(0).AddHours(0).AddMinutes(0).AddSeconds(0); 

            scLd1.PopupMenuShowing += schedulerControl1_PopupMenuShowing;
            scLd1.EditAppointmentFormShowing += schedulerControl1_EditAppointmentFormShowing;
            ///增加额外字段 如备注
            AppointmentCustomFieldMappingCollection appointCust = schedulerStorage1.Appointments.CustomFieldMappings;

            appointCust.Add(new AppointmentCustomFieldMapping("Note", "Note"));  

            scLd1.GanttView.ResourcesPerPage = 6; //设置资源个数

            scLd1.InitAppointmentDisplayText += scLd1_InitAppointmentDisplayText; //自定义显示提示

            SetToolTipControl(scLd1);
            SetLabeColor(scLd1.Storage);
            InitGrantView(scLd1);
        }

        /// <summary>
        /// 设置提示
        /// </summary>
        /// <param name="sc"></param>
        private void SetToolTipControl(DevExpress.XtraScheduler.SchedulerControl sc)
        {

            ToolTipController toolTipController1 = new ToolTipController();

            toolTipController1.AllowHtmlText = true;

            toolTipController1.BeforeShow += toolTipController1_BeforeShow;

            sc.ToolTipController = toolTipController1;
        }

        /// <summary>
        /// 设置Appointment颜色
        /// </summary>
        /// <param name="ss"></param>
        private void SetLabeColor(DevExpress.XtraScheduler.SchedulerStorage ss)
        {
            ///设置块的颜色

            ss.Appointments.Labels.Clear();

            ss.Appointments.Labels.Add(new DevExpress.XtraScheduler.AppointmentLabel(Color.Yellow, "生产中"));

            ss.Appointments.Labels.Add(new DevExpress.XtraScheduler.AppointmentLabel(Color.LightBlue, "生产完成"));

            ss.Appointments.Labels.Add(new DevExpress.XtraScheduler.AppointmentLabel(Color.Red, "回炉"));

            ss.Appointments.Labels.Add(new DevExpress.XtraScheduler.AppointmentLabel(Color.Maroon, "其它"));
        }

        /// <summary>
        /// 初始化设置
        /// </summary>
        /// <param name="sc"></param>
        private void InitGrantView(DevExpress.XtraScheduler.SchedulerControl sc)
        {
            //设置资源
            sc.GroupType = SchedulerGroupType.Resource;

            //设置甘特图
            sc.ActiveViewType = SchedulerViewType.Gantt;

            //设置资源+-按钮不可见

            sc.ResourceNavigator.Visibility = ResourceNavigatorVisibility.Auto;

            //设置Resource 字体不旋转
            sc.OptionsView.ResourceHeaders.RotateCaption = false;
            sc.OptionsView.ResourceHeaders.Height = 60;
            sc.OptionsView.ShowOnlyResourceAppointments = true;

            //行为设置

            sc.OptionsBehavior.MouseWheelScrollAction = MouseWheelScrollAction.Auto;

            sc.OptionsBehavior.RecurrentAppointmentDeleteAction = RecurrentAppointmentAction.Cancel;
            sc.OptionsBehavior.RecurrentAppointmentEditAction = RecurrentAppointmentAction.Cancel;
            sc.OptionsBehavior.RemindersFormDefaultAction = RemindersFormDefaultAction.DismissAll;

            //自定义动作设置

            //禁止块冲突
            sc.OptionsCustomization.AllowAppointmentConflicts = AppointmentConflictsMode.Allowed;
            //不允许复制
            sc.OptionsCustomization.AllowAppointmentCopy = UsedAppointmentType.None;
            //不允许创建
            sc.OptionsCustomization.AllowAppointmentCreate = UsedAppointmentType.None;
            //不允许删除
            sc.OptionsCustomization.AllowAppointmentDelete = UsedAppointmentType.None;
            //不允许拖到
            sc.OptionsCustomization.AllowAppointmentDrag = UsedAppointmentType.None;
            //不允许不同资源间创建
            sc.OptionsCustomization.AllowAppointmentDragBetweenResources = UsedAppointmentType.None;
            //允许编辑
            sc.OptionsCustomization.AllowAppointmentEdit = UsedAppointmentType.All;
            //不允许多个选择
            sc.OptionsCustomization.AllowAppointmentMultiSelect = false;
            //不允许改变大小
            sc.OptionsCustomization.AllowAppointmentResize = UsedAppointmentType.None;
            //不允许依赖窗体弹出
            sc.OptionsCustomization.AllowDisplayAppointmentDependencyForm = AllowDisplayAppointmentDependencyForm.Never;
            //允许Appointment窗体弹出
            sc.OptionsCustomization.AllowDisplayAppointmentForm = AllowDisplayAppointmentForm.Auto;
            //不允许编辑文字
            sc.OptionsCustomization.AllowInplaceEditor = UsedAppointmentType.None;

            //GrantView
            sc.Views.GanttView.CellsAutoHeightOptions.Enabled = true;//设置单元格不自适应高度 

            sc.Views.GanttView.CellsAutoHeightOptions.MinHeight = 0;//设置最小高度

            //设置Appointment 的高度不自适应
            sc.Views.GanttView.AppointmentDisplayOptions.AppointmentAutoHeight = true;
            sc.Views.GanttView.AppointmentDisplayOptions.AppointmentHeight = 0;
            sc.Views.GanttView.AppointmentDisplayOptions.AppointmentInterspacing = 1;
            sc.Views.GanttView.AppointmentDisplayOptions.ContinueArrowDisplayType = AppointmentContinueArrowDisplayType.Never;
            //不显示开始时间
            sc.Views.GanttView.AppointmentDisplayOptions.StartTimeVisibility = AppointmentTimeVisibility.Never;
            //不显示结束时间
            sc.Views.GanttView.AppointmentDisplayOptions.EndTimeVisibility = AppointmentTimeVisibility.Never;
            //不显示进度条
            sc.Views.GanttView.AppointmentDisplayOptions.PercentCompleteDisplayType = PercentCompleteDisplayType.None;
            //不显示恢复
            sc.Views.GanttView.AppointmentDisplayOptions.ShowRecurrence = false;
            //不显示提醒
            sc.Views.GanttView.AppointmentDisplayOptions.ShowReminder = false;
            sc.Views.GanttView.AppointmentDisplayOptions.SnapToCellsMode = AppointmentSnapToCellsMode.Never;
            //不显示状态
            sc.Views.GanttView.AppointmentDisplayOptions.StatusDisplayType = AppointmentStatusDisplayType.Never;
            //显示样式
            sc.Views.GanttView.AppointmentDisplayOptions.TimeDisplayType = AppointmentTimeDisplayType.Text;

            //显示颜色

            sc.Views.GanttView.Appearance.Dependency.ForeColor = Color.Red;

            sc.Views.GanttView.Appearance.SelectedDependency.ForeColor = Color.Blue;

            sc.Views.GanttView.Scales.Clear();//清空

            DevExpress.XtraScheduler.TimeScaleDay td = new TimeScaleDay();
            td.DisplayFormat = "yyyy-MM-dd";
            td.Enabled = true;

            DevExpress.XtraScheduler.TimeScale15Minutes tm = new TimeScale15Minutes();
            tm.Enabled = true;

            sc.Views.GanttView.Scales.Add(td);
            sc.Views.GanttView.Scales.Add(tm);
        }

        void scLd1_InitAppointmentDisplayText(object sender, AppointmentDisplayTextEventArgs e)
        {
            Appointment apt = e.Appointment;
            e.Text = GetCustomSubject(apt);
        }
        string GetCustomSubject(Appointment apt)
        {
            string s = apt.Subject;
            if (apt.Location.Length > 0)
            {
                s += String.Format("\r\n[{0}]", apt.Location);
            }
            return s;
        }
        void toolTipController1_BeforeShow(object sender, ToolTipControllerShowEventArgs e)
        {
            ToolTipController controller = sender as ToolTipController;
            AppointmentViewInfo aptViewInfo = controller.ActiveObject as AppointmentViewInfo; 

            if (aptViewInfo == null) return;
            var app = aptViewInfo.Appointment;

            e.IconType = ToolTipIconType.Information;
            e.Title = app.Subject;
            e.ToolTip = string.Format("{0},{1}", app.Location, app.CustomFields["Note"]);

        }
        /// <summary>
        /// 清空菜单,自定义菜单
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void schedulerControl1_PopupMenuShowing(object sender, DevExpress.XtraScheduler.PopupMenuShowingEventArgs e)
        {

            //DXMenuItem item = new DXMenuItem("菜单项");
            if (scLd1.ActiveViewType == DevExpress.XtraScheduler.SchedulerViewType.Day)//不同view展示不同菜单项
            {
            }
            if (e.Menu.Id == DevExpress.XtraScheduler.SchedulerMenuItemId.DefaultMenu)//右键空白处
            {
                e.Menu.Items.Clear();

            }

            if (e.Menu.Id == DevExpress.XtraScheduler.SchedulerMenuItemId.AppointmentMenu)//appointment 上右键
            {
                e.Menu.Items.Clear();
                //e.Menu.Items.Add(item);
            }

        }
        private void schedulerControl1_EditAppointmentFormShowing(object sender, DevExpress.XtraScheduler.AppointmentFormEventArgs e)
        {
            DevExpress.XtraScheduler.SchedulerControl scheduler = ((DevExpress.XtraScheduler.SchedulerControl)(sender)); 

            using(   AppiontmentForm form = new AppiontmentForm(scheduler, e.Appointment, e.OpenRecurrenceForm))
            {
                form.ShowDialog();
                e.Handled = true;
            }

        }

设置绑定数据资源类 ,设置Appointment类,设置依赖关系类。具体字体参考Mapping的设置。

时间: 2024-11-20 19:28:16

Dev 甘特图的相关文章

Excel2013版——甘特图

最近正在补文档,因为师父验收的时候文档里面应该有的一些图都没有加入,所以欠下的终究要换回去的,不过也有一个好处就是可以有理由多了解一些东西,可能如果以后不当项目组长或是没有这个任务给我分配我就永远不会去碰. 下面说一下我们<项目开发计划>文档中的甘特图的画法: 1.在Excel中按照下图写好你的任务.开始时间.持续时间.完成时间 2.选中表中内容--插入--小箭头 3.出现插入图标的界面--所有图标--条形图--第三个即可 即出现如下图: 4.双击项目所在的纵坐标出,初夏你设置坐标轴格式,选择

依赖关系助力XMind 6中的甘特图

在XMind 6思维导图中,用户可以利用甘特图功能来进行项目管理,在项目实施过程中,您可能会经常需要为某两个任务之间建立一种依赖关系.现在,我们可以很方便地在XMind 6甘特图里面轻松做到这点. 在XMind 6甘特图中建立依赖关系步骤: 步骤一 选择某一任务主题. 步骤二 进入任务信息视图,从菜单选择[视图],点击"任务信息"选项. 步骤三 滚动到视图的底部,在任务关联对象一栏点击加号添加. 步骤四 在对话框中选择关联的任务主题. 步骤五 确定依赖关系的类型. ?截止日期-至-开始

一个好用的web甘特图

前些天一直在弄web甘特图,发现网上很多web甘特图框架,但大部分是收费的.偶尔发现了向日葵甘特图 感觉不错,特此写下来一方面当做记录,另一方面也为寻找web甘特图的同学们少走一些弯路,双赢嘛~      向日葵甘特图是纯js编写,相比于其他庞大的甘特图应用,好处不用多说:轻便易于和网页应用嵌套(其他的同学们可以自己体会). 网上提供了一个远程js库和相应API,我们可以方便的进行二次开发.同学们网上一搜即可找到. 本甘特图以XML作为数据传输格式,基本格式如下: <Tasks> <Ta

图表推荐:甘特图与框架图,大数据流向地图重磅来袭!

帆软图表(新特性)最新版本的图表插件新增了甘特图与框架图两种图表类型,大大方便了生产管理所需,同时支持流向地图的大数据模式. 一.甘特图 甘特图又称任务计划进度图,其通常用来表示项目进展随着时间进度的变化.甘特图被广泛的应用在各行业的项目管理中,因此帆软在最新的图表插件中,新增了该图表类型,以满足任务进度可视化的需求. FineReport新甘特图功能扩展十分强大,能够满足多层级项目所需以及多系列任务:支持各个任务的里程碑设置.进度管理等:包含四种任务关联线 (开始-完成,开始-开始,完成-开始

Twproject Gantt开源甘特图功能扩展

1.Twproject Gantt甘特图介绍 Twproject Gantt 是一款基于 jQuery 开发的甘特图组件,也可以创建其它图表,例如任务树(Task Trees).内置编辑.缩放和 CSS 皮肤等功能.更重要的是,它是免费开源的. 官网地址是:https://gantt.twproject.com/ 源码可以从github下载: 2.扩展功能一:code自动层级编码,满足wbs编码要求 工作分解结构 (WBS) 代码是项目的识别您的分级显示结构中的每个任务的唯一位置的字母数字代码.

银光甘特图/日历图/排程控件GTP.NET for Silverlight详细介绍

GTP.NET for Silverlight是Silverlight下的控件包,提供了交互式的甘特图以及日程安排图,达到时间上可视化和交互,控件完全分发免费.方案网作为PlexityHide在中国的核心代理商,为客户提供优质的客服和技术支持.                          具体功能: 提供了丰富的用户界面直接运行于Silverlight插件下 使用Silverlight开发,达到了跨平台的目的,包括Apple Machintosh和 Microsoft Windows 提供

如何画出甘特图——2013版Excel

学习了这久,这还是我第一次接触甘特图.现在来说说用excel画甘特图. 理论: 甘特图,也称为条状图(Bar chart).是在1917年由亨利·甘特开发的,其内在思想简单,基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比. 管理者由此极为便利地弄清一项任务(项目)还剩下哪些工作要做,并可评估工作是提前还是滞后,亦或正常进行.是一种理想的控制工具.其中甘特图的含义有三个: 1.以图形

甘特图——Excel搞定

1. 甘特图 概念 甘特图就是条形图的一种. 甘特图是基于作业排序的目的,将活动与时间联系起来的最早尝试之中的一个. 这是什么意思呢?也就是说甘特图用来表示什么时间做什么事情,相当于一个计划安排.并且能够非常好表示事情的运行顺序,以及工作的进度. 优点 1.直观明了(图形化概要) 2.简单易懂(易于理解) 3.应用广泛(技术通用) 缺陷 1.甘特图其实只部分地反映了项目管理的三重约束(时间.成本和范围).由于它主要关注进程管理(时间): 2.软件的不足. 虽然能够通过项目管理软件描绘出项目活动的

房地产企业利用Project甘特图制定计划

2017/2/23 瀚博资讯为 双鱼企业.真地机构 等房地产企业进行了Project应用讲座. 讲座内容侧重于基于 Project 甘特图工具,进行项目计划规划.调整.工期优化等内容,帮助与会人员提升了使用专业工具进行项目管理的能力.