zoukankan      html  css  js  c++  java
  • 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("
    [{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的设置。

  • 相关阅读:
    (转)基于REST架构的Web Service设计
    WPF 简易的喷泉效果
    C# 取Visio模型信息的简易方法
    WPF TextBox按字节长度限制输入
    NPOI导出WPF DataGrid控件显示数据
    WPF--TextBlock的ToolTip附加属性
    【转】WPF 从FlowDocument中找到Hyperlink
    WPF 初学VisifireChart
    WPF 简易进度条效果
    WPF 简易的跑马灯效果
  • 原文地址:https://www.cnblogs.com/Chareree/p/6269714.html
Copyright © 2011-2022 走看看